Boa tarde, amigos. Estou tendo muitas dificuldades em efetuar a leitura desse medidor da Landys via porta serial rs485. Gostaria de saber se alguém consegue me dar uma luz sobre o que estou fazendo de errado em relação à mensagem enviada, pois não estou tendo retorno algum do medidor.
serial number do medidor : 0000886619
mensagem que estou enviando :
Tags:
Muito legal, tenho aprendido muito com suas postagens! Obrigado.
Entendo que no momento vc é a pessoa aqui que detém o maior conhecimento desse protocolo, basta implementar.
Para implementar esse protocolo é similar a qualquer outro que use a serial, ou seja:
Basicamente vc vai recebendo os bytes e acumulando em um buffer (um array) e a cada byte recebido verifica se aquilo que recebeu é um bloco reconhecível.
Eu sempre faço isso (primeiro recebe o bloco todo e depois analisa).
Tem quem a cada byte recebido já fique disparando If()s, mas não recomendo. Acaba sendo mais complicaco.
Exemplo de implementação:
https://mundoprojetado.com.br/implementando-modbus-rtu-no-arduino/
Nesse exemplo ele usa uma String para armazenar, eu não usaria. A questão é que Strings são para caracteres alfanuméricos, podem dar erro com caracteres vindos da serial, especialmente contendo #00.
Especificamente para esse protocolo não encontrei, senão seria mto fácil...
Enfim, vc separando um bloco de dados para receber pouco mais que o maior bloco que precisa;
salva nele cada byte recebido e depois procurando lá dentro os byte chave como por ex: indicador de um comando e afastado dele x bytes um checksum valido;
Confirmou bloco válido de tipo x vc busca dentro dele as informações com os deslocamentos correspondentes e tal (como no exemplo que mandei, os buf[posicao].
E assim vai.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2023 Criado por Marcelo Rodrigues.
Ativado por