Neste artigo irei mostrar como podemos fazer uma rotina em advpl que irá requisitar o peso a uma balança Filizola via porta serial. Essa requisição funciona também para balanças TOLEDO, porém o layout de retorno é um pouco diferente. A vantagem desse método é não depender de DLL e assim não ficar preso a uma marca específica.
Antes de tudo é preciso que a balança esteja com o protocolo adequado para funcionar com requisição serial. Em muitos modelos da TOLEDO, o protocolo é o P05, já algumas balanças FILIZOLA já vem preparadas para responder a esse tipo de requisição.
O esquema abaixo resume o processo:
Local cCfg :=”COM1:4800,n,8,1″
lRet := msOpenPort(nH,cCfg)
if(!lRet)
Alert(“Falha ao conectar com a porta serial”)
Return
EndIf
O próximo passo será enviar um comando 5 HEXADECIMAL (ENQ) para a porta aonde em que a balança está conectada. Eu tinha até aberto um chamado na TOTVS perguntando como isso poderia ser feito e responderam que não era possível, enfim , eu não acredite e pesquisei alguma forma de fazer isso. Até que consegui usando um comando super simples que é :
msWrite(nH,Chr(5))Ou seja, eu escrevo na porta COM o Chr(5) e se tudo estiver certo a balança irá devolver o peso. Resumidamente, a rotina básica ficaria assim:
lRet := msOpenPort(nH,cCfg)
if(!lRet)
Alert(“Falha ao conectar com a porta serial”)
Return
EndIf
msWrite(nH,Chr(5))
Sleep(200)
For ncont := 1 To 20
msRead(nH,@cBuffer)
if(!Empty(cBuffer))
cPeso :=IsNumber(cBuffer) // IsNumber função que criei para tirar os caracteres especiais cBuffer := “”
Exit
EndIf
Next
msClosePort(nH)
Para que essa comunicação dê certo, é preciso atentar para alguns detalhes:
1) Tentei várias combinações de velocidades para a porta COM1 do micro e a que deu mais certo foi Bits por segundo : 4800, Bits de dados: 7,Paridade: Even, Bits de parada: 2 e controle de fluxo: nenhum.
2) Com relação a configuração da velocidade da balança, a melhor que eu achei foi A mesma configuração da COM1 dita no primeiro item mudando apenas Bits de dados para 8.
Espero que este artigo tenha sido útil . Até a próxima.
Excelente post! Congrats! 😃 Aqui a nossa balança TOLEDO é conectada na porta USB por meio de um adaptador que converte de serial para USB. Quando tento fazer a leitura do peso da balança ele retorna uns caracteres muito esquisitos. Sabe o que pode ser? Veja:
ResponderExcluirÀ†žÀ†ž‡À†žÀ†žÏÀ†žæàÀ†žùÀ†ž‡À†žÀÀ†ž‡À†žÀÀ†žùÀ†ž‡À†žƒÀÀ†ž‡À†žÀÀ†žÏÀ†ž‡À†ž‡À†ž‡fÀ†ž‡À†ž‡ÀÀ†ž‡À†ž‡ÀÀ†ž‡À†žÀÀ†ž‡À†žÀÀ†ž‡fÀ†žæàÀÀ†žÀ†žÏÀ†ž‡À†žÀ†ž‡À†žÀÀ†ž‡À†žÀÀ†ž‡À†ž‡À†žÀÀ†žÀ†žæàÀÀ†žùÀ†ž‡À†žÀÀ†ž‡À†žÀÀ†ž‡fÀ†žæàÀÀ†žÀ†žùÀ†žÀÀ†ž‡À†ž‡À†žÀ†žÏÀ†ž‡À†ž‡À†ž‡À†žÀÀ†žÀ†žÀÀ†ž‡fÀ†žæàÀÀ†žùÀ†ž‡À†žÀÀ†ž‡À†žÀÀ†žùÀ†ž‡À†žÀÀ†ž‡À†žÀÀ†žÏÀ†ž‡À†ž‡À†ž‡À†žÀ†žÏÀ†ž‡À†ž‡À†ž‡À†žÀ†ž‡À†ž‡À†ž‡À†ž‡À†žÀ†žÏ
Alguma ideia de como resolver? 🤔