Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用VB.NET实现串口通信_Vb.net - Fatal编程技术网

用VB.NET实现串口通信

用VB.NET实现串口通信,vb.net,Vb.net,我想与串行端口通信并获取数据。现在我已经配置了端口并启动了我的程序,它正在运行。硬件每次都发送数据,但没有任何更改,如您在此处所见(只是ABC..正在更改,之前的数字): 0+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 1+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 2+00000 E-02+000000 E-03 A+0

我想与串行端口通信并获取数据。现在我已经配置了端口并启动了我的程序,它正在运行。硬件每次都发送数据,但没有任何更改,如您在此处所见(只是ABC..正在更改,之前的数字):

0+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 1+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 2+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 3+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 4+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 5+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 6+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 7+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 8+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 9+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB A+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB B+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB C+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB D+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB E+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB F+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TB 0+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01110000TC 1+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01110000TC 2+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01110000TC 3+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01110000TC 4+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TC 5+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TC 6+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TC 7+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TC 8+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TC 9+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TC A+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01110000TC B+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TC C+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01111000TC D+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01110000TC E+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01110000TC F+00000 E-02+000000 E-03 A+00000 E-03+00000 E-03+041743E-01110000TC

技术说明书上说:

参数协议的所有数据集以STX(02H)开头,以ETX(03H)字符结尾。 如果我尝试发送一个我在技术表中看到的命令,例如:

获取固定版本(0x00-0xFF为虚拟=DD):

STX |“V”|“G”| DD | EXT

  • STX:0x02
  • “V”:0x56
  • “G”:0x47
  • DD:0x00-0xFF
  • 分机号码:0x03
我看不到任何变化,因为我可以在手册中阅读这些命令,因为结果是:

  • STX:0x02
  • “V”:0x56
  • “G”:0x47
  • TTTTTTTT:'V1.00.00'
  • DD:0x00-0xFF
  • 分机号码:0x03
其中TTTT=版本字符串,16个字符

在此之前,我在另一个问题中读到,虚拟值是用于校验和的,但直到现在,我还没有任何答案如何在代码中使用它。但我认为是这样的(?):

对于搜索固件,它看起来:

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作为字节=&H2 Dim ETX作为字节=&H3

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

serialport.Write(buf, 0, buf.Length)
  • 我怎样才能得到上面手册中的答案

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

  • 硬件是一个传感器,如果我把它付诸行动,里面什么都没有 如您所见,上述数据发生了变化。支持人员说,我可以像上面(STX..EXT)那样在这些字符之间嵌入所有数据,但没有类似的


  • 谢谢你的帮助

    所以你是说如果你发送
    STX |“V”|“G”| DD | EXT
    (我假设也忽略空格和竖条),它应该用
    STX |“V”|“G”| tttttttttttt | DD | EXT
    ?但你没有得到回应?它是希望您在DD中发送一个真正的校验和,还是仅在响应中使用?确切地说,我尝试按照您所说的发送代码,但硬件/串行端口没有按照您所说的响应。我不知道串行端口是否期望伪校验和,因为手册上说必须将其作为十六进制值发送,正如上面所示。我必须使用“校验和”,我在这个论坛上看到了。但我不知道是否以及如何…我们可以在一点时间内计算出校验和。您使用什么命令获取顶部显示的所有数据?或者它总是输出它?该传感器的手册是否在线?它总是输出,手册(有一些手册)在“图形数据输出协议”一章中说,或者我可以阅读,这是图形的数据集。有一个例子让我知道这是图形协议,因为它说开始以“6H”开始,以“08H”结束,因为如果我在每个字符的字节数组中循环它,我可以读取它。我强调有不止一个数据表,我想知道如何与串行端口通信以获得例如固件,正如我在手册“参数协议”一章中所读到的。现在,我在我的问题顶部的图片中向您展示了手册中的示例。(手册不在线)所以您是说,如果您发送
    STX |'V'|'G'| DD | EXT
    (我假设也忽略空格和竖条),它应该以
    STX |'V'|'G'| tttttttttttttt | DD EXT
    ?但你没有得到回应?它是希望您在DD中发送一个真正的校验和,还是只在响应中使用?确切地说,我尝试按照您所说的发送代码,但是硬件/串行
    Dim buf As Byte() = {STX, &H56, &H47, &HFF, ETX}
    
    serialport.Write(buf, 0, buf.Length)