Buongiorno,
sto utilizzando la libreria seguente libreria per comunicare con un dispositivo attraverso appunto il modbus.
Sia la scrittura che la lettura con il dispositivo funziona in modo corretto, l'unico problema che possiedo è quello di inviare un dato convertito in IEE756 con lo "0x" davanti.
Ho provato a inserire il tutto all'interno di una variabile dichiarata come stringa ma la funzione che utilizzo non accetta stringhe.
result = address1.writeSingleRegister(553, esadecimale);
if (result != address1.ku8MBSuccess) {
while (result > 0) {
result = address1.writeSingleRegister(553, esadecimale);
delay(5);
}
}
La libreria che posti ha dentro solo un ModbusRtu.h che non ha dentro nessun comando .writeSingleRegister()
stringa di che tipo ? classe String (da evitare) oppure stringa classica del C (array di char) ?
personalmente non conosco IEE756, si trova qualcosa in wikipedia, ma se cerco in internet "modbus IEE756" non salta fuori nulla (ma proprio nulla). Sicuro di cosa devi spedire ?
Non capisco, le librerie che uso per modbus (ma su PC, per dialogare con dei PLC) hanno le funzioni per scrivere/leggere i registri anche con numeri con le virgole. Gli passo un numero in virgola e ci pensa la lib a convertire il numero in formato corretto. (esempio libreria open libnodave-0.8.5 c'e' daveGetFloatAt oppure daveToPLCfloat con i sorgenti in C)
esempio la daveToPLCfloat fa qualcosa del genere (inverte i byte):