Ciao a tutti, ho ordinato un distanziometro e nell'attesa che arrivi sto preparando il programma che andrà a visualizzare il valore fornito dal dispositivo.
La connessione tra PC e strumento è in seriale RS232 ho già il software fornito dal costruttore ma ne voglio fare una versione semplificata e personalizzata, questo costruttore non collabora tantissimo e mi ha inviato le seguenti istruzioni:
Get Data Command Format.
Net number – 1
Range = 25??,
Slope Value = 50000:
- Request [2 bytes]: 0?01, 0?86. (0x01 – first byte - net number)
- Answer [4 bytes]: InData[0], InData[1], InData[2], InData[3]
Result Calculations in mm.
Y = (InData[0]&0x0F) | (InData[1]&0x0F)<<4 | (InData[2]&0x0F)<<8 | (InData[3]&0x0F)<<12;
Result = Y * Range / Slope Value.
Example: Y = 0x1234 (4660),
Result = 4660 * 25 / 50000 = 2,33??
Onestamente ho usato varie volte le seriali ma sempre inviando comandi in formato string es ad arduino o simili.
A quanto capisco per richiedere il valore devo inviare 2 byte e il dispositivo risponderà con altri 4.
Mi potete dare una dritta su come inviare ricevere e convertire i valori in double?
Penso proprio che così sia totalmente errato:
Scrittura:
Dim Request1 As Byte
Dim Request2 As Byte
Request1 = 0X01
Request2 = 0X86
SerialPort1.Write(Request1)
SerialPort1.Write(Request2)
Lettura:
Dim Answ1 As Byte = SerialPort1.ReadByte()
Dim Answ2 As Byte = SerialPort1.ReadByte()
Dim Answ3 As Byte = SerialPort1.ReadByte()
Dim Answ4 As Byte = SerialPort1.ReadByte()
Grazie