Comunicazione seriale in byte

di il
4 risposte

Comunicazione seriale in byte

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

4 Risposte

  • Re: Comunicazione seriale in byte

    Sinceramente non mi sembra così difficile

    direi che il primo passo è inviare i 2 byte al dispositivo e ricevere i 4 byte di risposta, poi la conversione non mi sembra difficile
  • Re: Comunicazione seriale in byte

    Concordo, con te ma anche cercando su internet non ho capito quale sia la sintassi per assegnate i valori 0?01, 0?86 alle variabili byte in vb net.

    se scrivo:
    Request1 = 0X01
    Request2 = 0X86

    non me lo accetta.

    Come va scritto?
  • Re: Comunicazione seriale in byte

    Il prefisso per gli esadecimali non è 0x, ma &H

    Comunque puoi scrivere i byte semplicemente in decimale, cioè 1 il primo e 134 il secondo
  • Re: Comunicazione seriale in byte

    Request1 = &H1
    Request2 = &H86
Devi accedere o registrarti per scrivere nel forum
4 risposte