我是这个论坛的新手,所以我不确定这是否真的是放置这个的地方 - 如果需要,请随时移动到更合适的论坛。
好的,所以我正在 VB 2010 中编写一个简单的应用程序,将 HEX 数据发送和接收到串行设备。现在我已经完成了“发送”部分,但是,我在接收部分遇到了困难。设备每秒将恒定的 HEX 数据流发送回应用程序;我需要应用程序查看接收到的 HEX 字符串的某些字节并在 IF 语句中相应地执行操作(例如,如果字符串的字节 10 等于 "&10" 然后执行...)。
我不确定如何获取这些数据,从中解析出正确的字节,然后对其进行处理。:/我尝试使用的代码(但不起作用)如下:-
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim statusget() As String
Dim str1 As String
str1 = SerialPort1.ReadExisting()
statusget = str1.Split(",")
If statusget(10) = "&01" Then
btn_tx1.BackColor = Color.Red
btn_tx2.BackColor = SystemColors.Control
btn_tx3.BackColor = SystemColors.Control
btn_tx4.BackColor = SystemColors.Control
btn_tx5.BackColor = SystemColors.Control
btn_tx6.BackColor = SystemColors.Control
btn_tx7.BackColor = SystemColors.Control
btn_tx8.BackColor = SystemColors.Control
End If
End Sub
此外,我有一个富文本框,它显示从设备接收到的所有数据,以便我可以监控它。它工作正常,除了它以奇怪的编码(不是十六进制)返回,例如“uZ !!!??”。
感谢您提供任何帮助。:)
编辑 - 发送数据的代码:
Private Sub btn_tx1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_tx1.Click
Dim buftx1() As Byte = {&HF0, &H5A, &HF, &H5, &H1, &H11, &H0, &H0, &H0, &H0, &H0, &H0, &H30, &H37, &HFF}
SerialPort1.Write(buftx1, 0, buftx1.Length)
End Sub