使用VB.NET进行串口通信

时间:2016-11-16 08:01:04

标签: vb.net

want to get this firmware like here

Graph data output protocol start

我想与串口通信并获取数据。现在我已经配置了端口并启动了我的程序并且它正在运行。硬件每次都发送数据,但没有任何改变,你可以在这里看到(只是ABC ..正在改变和之前的数字):

  

0 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   1 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   2 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   3 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   4 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   5 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   6 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   7 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   8 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   9 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   A + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   B + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   C + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   D + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   E + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   F + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTB   0 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   1 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   2 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   3 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   4 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   5 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   6 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   7 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   8 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   9 + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   A + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   B + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   C + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   D + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   E + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC   F + 00000E-02 + 000000E-03 A + 00000E-03 + 00000E-03 + 041743E-0111000TTC

技术表说:

参数协议的所有数据集都以STX(02H)以ETX(03H)字符结尾开头。 如果我尝试发送命令,如技术资料中所示,例如:

获取公司版本(0x00-0xFF为Dummy = DD):

STX | 'V'| 'G'| DD | EXT

  
      
  • STX:0x02
  •   
  • 'V':0x56
  •   
  • 'G':0x47
  •   
  • DD:0x00-0xFF
  •   
  • EXT:0x03
  •   

我看不到任何变化,因为我可以在手册中读到这些命令,因为得到的答案是:

  
      
  • STX:0x02
  •   
  • 'V':0x56
  •   
  • 'G':0x47
  •   
  • TTTTTTTTTTTT: 'V1.00.00'
  •   
  • DD:0x00-0xFF
  •   
  • EXT:0x03
  •   
     

TTTTTTTTTTTT =版本字符串,16个字符。

之前,我在这个上下文中读到了另一个问题,即虚拟对象是校验和,但到目前为止,我还没有任何答案如何将它带入代码中。但我认为它就像这样(?):

 Dim DD As IEnumerable(Of Byte) = New Byte() {&H0, &HFF}

要搜索它看起来的固件:

Dim stx As Boolean = False

        Dim etx As Boolean = False


        Try
            For i As Int32 = 0 To BytesToRead

                Dim Incoming As Integer = ReadByte()

                Dim c As Char = ChrW(Incoming)

                If Incoming.Equals(&H2) Then
                    stx = True


                    Continue For
                ElseIf Incoming = &H3 Then
                    etx = True

                End If

            Next




        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

对于命令:

Dim STX As Byte =& H2     Dim ETX As Byte =& H3

Dim buf As Byte() = {STX, &H56, &H47, &HFF, ETX}

serialport.Write(buf, 0, buf.Length)
  1. 我可以在手册中看到上面的答案吗?

  2. 如果我必须写握手(手册中没有信息)怎么办?

  3. 硬件是一个传感器,如果我采取行动,那里什么都没有 正如您所看到的,更改上面的数据。支持人员说,我可以在上面这些字符之间嵌入所有数据(STX..EXT),但没有这些数据。

  4. 感谢您的帮助!

0 个答案:

没有答案