在VB.NET中使用字节

在VB.NET中使用字节,vb.net,serial-port,byte,Vb.net,Serial Port,Byte,我正在VB.NET中开发一个项目,它从串口读取一些信息。此信息以4字节为一组。我可以从串口读取数据,但我得到的只是一组4个数字 例如,我的读数是: 134 0 0 4 140 0 0 6 141 0 0 5 133 0 0 8 ... 手册解释了如何将这些数字转换为可用数据。我能在一篇论文上完成它,但我不知道如何在VB.NET中编写代码。我不知道如何在字节级别工作 我附上一张关于字节含义的图片。 多亏了用户x4rf41,我得到了答案 也许需要一些修复,但这正是我想要的 代码如下: Privat

我正在VB.NET中开发一个项目,它从串口读取一些信息。此信息以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

我不想为你写代码,我能给你的是:这些都是vb.net中用于位制造的运算符,有一个很好的小例子是的,我不想让奴隶为我工作:P。我在寻找提示和教程。我将检查该教程,看看我是否可以得到一些有用的东西!谢谢+1@Redder,“寻找提示和教程”,没有人给出答案。多么令人耳目一新啊!