Buenas tardes a todos, de antemano gracias por sus aportes y ayuda a todos en este foro.
Como en muchos casos llega alguien a este foro que comprende poco de programación, es mi caso :(.
Tengo un proyecto en el cual tengo un dispositivo esclavo que le solicita información a varios sensores y la reenvía al maestro (mi PC) mediante un gateway conectado a la pc por ip o rs485 (cualquiera de los dos).
Todos estos dispositivos vienen diseñados y configurados de fabrica y funcionan muy bien solos.
Lo que yo quisiera hacer es poder colocar un Arduino UNO junto con los sensores para activar un relé.
El dispositivo que controla los sensores utiliza el siguiente frame para solicitar la información 01 04 0006 0002 0090
Donde entiendo que:
01 ->ID DEL SENSOR ESCLAVO.
04 ->Function Code o la función a realizar (read input register) en el caso de los sensores. Con el arduino quisiera usar la función 06 o la 05, aun no lo tengo claro. Seria para activar un relé con una salida digital del mismo.
0006 -> el registro en el cual se encuentra la información (esto en el caso de los sensores, en el arduino como puedo saber cual registro debo utilizar por ejemplo para la salida digital 5?).
0002 -> la longitud de los datos a leer
0090 -> CRC16 o checksum
Al arduino yo le daría la dirección número 6 entonces creo que mi trama quedaria algo asi 06 06 xxxx xxxx CRC16
Las X son porque aun no tengo claro como saber que registro debo modificar ni la longitud que este tendría (o si en este caso al ser funcion de escritura no debo colocar la longitud), por ejemplo si quisiera activar la salida digital 05.
Por otro lado, en el arduino UNO yo estaria recibiendo un string en ascii porque entiendo que asi funciona el puerto serial, como podria leer la trama de bytes completa para poder realizar las operaciones necesarias (trama de bytes hexadecimales)?
De antemano muchas gracias por la ayuda que me puedan brindar.