用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+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用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
- STX:0x02
- “V”:0x56
- “G”:0x47
- DD:0x00-0xFF
- 分机号码:0x03
- STX:0x02
- “V”:0x56
- “G”:0x47
- TTTTTTTT:'V1.00.00'
- DD:0x00-0xFF
- 分机号码:0x03
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 |“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)