PJINFO Posted November 26, 2021 Report Share Posted November 26, 2021 Olá colegas! Preciso de ajuda. Não estou conseguindo ler o peso de uma balança nova que o cliente comprou. Toledo prix 2098 TI 200. Tudo correto nas configurações da balança e da porta conforme configurado abaixo. Código bem simples e sempre funcionou Agradeço a quem possa ajudar. *---------------------------------------------------------------- function RECEBEPESO *---------------------------------------------------------------- local XPorta := TESTA_VAR('W_BALANCA_PORTA','PORTA SERIAL DA BALANCA' ,'1','N') // 1=com1; 2=com2; 3=com3 local XBaudrate := TESTA_VAR('W_BALANCA_BOUND','BAUND DA BALANCA' ,'2','N') // 0=2400 1=4800 2=9600 local XDatabits := TESTA_VAR('W_BALANCA_DATABIT','DATA BIT DA BALANCA' ,'1','N') // 0=7; 1=8 local XParidade := TESTA_VAR('W_BALANCA_PARID ','PARIDADE DA BALANCA' ,'0','N') // 0=nenhum 1=impar 2=par 3=espaço local nPeso private peso:=space(5) xDllBal := LoadLibrary(W_CAMINHO_SYS+"DLL32\P05.DLL" ) nret:=AbrePorta( xporta, XBaudrate,XDatabits,XParidade ) IF VALTYPE(NRET)="N" if nret>=1 PegaPeso( 0, @Peso, "" ) end END npeso:=val(transform( peso, "@R 99.999" )) FechaPorta() RETURN(npeso) DLL32 function AbrePorta( Porta AS LONG, BaudRate AS LONG, DataBits AS LONG, Paridade AS LONG, stopbit AS LONG ) AS LONG PASCAL lib xDllBal DLL32 function PegaPeso( OpcaoEscrita AS LONG, Peso AS STRING, Diretorio AS STRING ) AS LONG PASCAL lib xDllBal DLL32 function FechaPorta() AS LONG PASCAL lib xDllBal *-FIM------------------------------------------------------- Quote Link to comment Share on other sites More sharing options...
PJINFO Posted November 26, 2021 Author Report Share Posted November 26, 2021 Obrigado a todos! Mas consegui resolver Usei a HBCOMM.LIB func recebepeso(cPorta,nBound,nDataBit,nstop,nBuffer) NHANDLE:=Init_Port(cPorta,nBound,nDataBit,0,nstop,nBuffer) OutBufClr(NHANDLE) // Limpa o Buffer de Saida OUTCHR(NHANDLE,CHR(5)) SysWait(0.3) Bytes := InbufSize(NHANDLE) DADOS=SPACE(20) Buffer := InChr( NHANDLE, Bytes, @DADOS) //LER BUFFER DE ENTRADA DA BALANCA UnInt_Port(nHandle) dados=alltrim(dados) nPeso:=val(substr(dados,4,6))/1000 return(nPeso) Quote Link to comment Share on other sites More sharing options...
SISCO Posted July 29, 2022 Report Share Posted July 29, 2022 Olá a todos Essa é a minha primeira integração Balança no PDV. Testei essa rotina com a Balança Toledo 8217 USB TOLEDO, FiveWin 16.8 Mas o dado de retorno estão vindo em branco. FUNCTION LER_PESO_BALANCA() nHandle := Init_Port("COM2",9600,8,0,1,8000) // conf da porta serial OutBufClr(nHandle) // Limpa o Buffer de Saida OUTCHR(nHandle,CHR(5)) SysWait(0.3) Bytes := InbufSize(nHandle) DADOS=SPACE(20) Buffer := InChr( nHandle, Bytes, @DADOS) //LER BUFFER DE ENTRADA DA BALANCA UnInt_Port(nHandle) dados=alltrim(dados) nPeso:=val(substr(dados,4,6))/1000 return(nPeso) Quote Link to comment Share on other sites More sharing options...
SISCO Posted July 30, 2022 Report Share Posted July 30, 2022 Resolvi assim Informações no grupo P05.DLL a Toledo não deixa disponível no site, tem que solicitar ao suporte {Atenção!!! Os parâmetros do P05 possuem a seguinte ordem: 1o. Parâmetro = Porta COM => 1 = COM 1, 2 = COM 2, 3 = COM 3, 4 = COM 4 2o. Parâmetro = BaudRate => 0 = 2400, 1 = 4800, 2 = 9600, 3 = 1200, 4 = 19200 3o. Parâmetro = Data Bits => 0 = 7 bits, 1 = 8 bits 4o. Parâmetro = Paridade => 0 = Nenhum, 1 = Ímpar, 2 = Par, 3 = Espaço 5o. Parâmetro = Disponibilizar em => 0 = Arq Texto, 1 = Área de Transferência 6o. Parâmetro = Diretorio onde será gravado o arquivo. Se vazio significa o diretorio local do programa 7o. Parâmetro = Tipo de leitura => 0=P05/P05A, 1=P05B sem tara, 2=P05B com tara 8o. Parâmetro = Utilizar 1 stop bit => 0=não utiliza; 1=utliliza (Opcional) } */ FUNCTION PegaPesoBalanca(vpeso_balanca) LOCAL retorno LOCAL Peso := Space(5) XPorta := 2 // 1=com1; 2=com2; 3=com3 XBaudrate := 2 // 0=2400 1=4800 2=9600 XDatabits := 1 // 0=7; 1=8 XParidade := 0 // 0=nenhum 1=impar 2=par 3=espaço IF ! FILE("P05.DLL") MSGINFO("O Arquivo P05.DLL não foi encontrado, solicite a Empresa Desenvolvedora","Atenção" ) RETURN( 1 ) ENDIF xDllbToledo := LoadLibrary( "P05.DLL" ) RETORNO := AbrePorta( XPorta, XBaudrate, XDatabits, XParidade ) // ? RETORNO If Retorno # 1 RETORNO := FechaPorta() FreeLibrary( xDllbToledo ) MsgInfo( "O Sistema não conseguiu abrir a porta COM.","Erro" ) RETURN( 0 ) Endif Retorn1 := PegaPeso(0, @Peso, "c:\" ) xQtd := val(peso) xQtd := Round(xQtd/1000,3) If xQtd <= 0 If MsgNoYes( "O Sistema Não Conseguiu Ler o Peso da Balança." + CRLF + ; "Retire o produto da balança e coloque novamente para nova leitura."+ CRLF + ; "Deseja Digitar o Peso do Produto?","Erro na Leitura da Balança" ) Else Peso := Space(5) Retorno := PegaPeso( 0, @Peso, "c:\" ) xQtd := val(peso) Endif Endif Retorno := FechaPorta() FreeLibrary( xDllbToledo ) MsgInfo("Peso "+alltrim(str(xQtd)), "Aviso") vpeso_balanca := xQtd //Return( xQtd ) Return( vpeso_balanca ) DLL32 FUNCTION AbrePorta( Porta AS LONG, BaudRate AS LONG, DataBits AS LONG, Paridade AS LONG ) AS LONG PASCAL lib xDllbToledo DLL32 FUNCTION PegaPeso( OpcaoEscrita AS LONG, Peso AS STRING, Diretorio AS STRING ) AS LONG PASCAL lib xDllbToledo DLL32 FUNCTION FechaPorta() AS LONG PASCAL lib xDllbToledo Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.