我正在VB.NET中开发一个项目,该项目从SERIAL PORT读取一些信息。此信息以4个字节为一组。我能够从串行端口读取数据,但是我得到的只是一包4个数字。
例如,我的阅读是:
134 0 0 4
140 0 0 6
141 0 0 5
133 0 0 8
...
手册说明了如何将此数字转换为可用数据。我能够通过一篇论文做到这一点,但是我不知道如何在VB.NET中编写代码。我不知道如何在字节级别上工作。
我附上一张有关字节含义的图片。
我得到了答案,这要感谢用户x4rf41
也许需要一些修复,但是它是我一直在寻找的。
这是代码:
Private Sub thread_lectura_tarjeta1()
Dim RXByte As Byte 'byte recived
Dim RXPacket As List(Of Byte) = New List(Of Byte) 'each reading has 4 bytes
Dim lectura As Long = 0 'is the FINAL data
Dim COMPort As SerialPort = ensayo.get_digitalizadores(0).get_puerto_com
Dim chk_signo As Byte = 0
While (True)
lectura = 0
Do 'each package starts with a byte > 127, because is the only byte that its first bit is 0
RXByte = COMPort.ReadByte
Loop Until (RXByte > 127)
RXByte = RXByte And 127
RXPacket.Insert(0, RXByte)
RXByte = COMPort.ReadByte
RXPacket.Insert(1, RXByte)
RXByte = COMPort.ReadByte
chk_signo = RXByte And 8
RXPacket.Insert(2, RXByte And 7)
RXByte = COMPort.ReadByte
RXPacket.Insert(3, RXByte)
lectura = RXPacket.Item(0) + RXPacket.Item(1) * 128 + RXPacket.Item(2) * 16384
'checking sign
If chk_signo = 8 Then ' negative number
lectura = (lectura Xor 131071) * -1
End If
Sleep(1) 'wait 1 milisecond and read again
End While
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句