付费悬赏
现需要用VB6.0 通过串口来接收一组16进制的数据 01 03 10 09 CE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6C 5B 。
我用了MSCOMM控件用二进制形式接收不了数据。
PS:
这套系统是将电流信号转换为16进制数字信号传输到电脑
我使用调试软件可以接收到数据
但是用vb编程时好像触发不了MSComm1_OnComm()事件,一个字节都没有收到?
这是什么原因呢?
急需解答,成功后会付费,谢谢各位了!


付费悬赏
现需要用VB6.0 通过串口来接收一组16进制的数据 01 03 10 09 CE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6C 5B 。
我用了MSCOMM控件用二进制形式接收不了数据。
PS:
这套系统是将电流信号转换为16进制数字信号传输到电脑
我使用调试软件可以接收到数据
但是用vb编程时好像触发不了MSComm1_OnComm()事件,一个字节都没有收到?
这是什么原因呢?
急需解答,成功后会付费,谢谢各位了!


参考gpt,以下是VB6代码,可以通过串口接收一组16进制数据:
Private Sub Form_Load()
With MSComm1
.CommPort = 1 ' 设置使用的串口号
.Settings = "9600,n,8,1" ' 设置串口通信参数
.InputMode = comInputModeBinary ' 设置输入模式为二进制模式
.InBufferSize = 1024 ' 设置缓冲区大小
.RThreshold = 1 ' 设置读取数据的阈值
.SThreshold = 0 ' 设置发送数据的阈值
.Handshaking = comNone ' 设置握手方式
.NullDiscard = False ' 不丢弃空字符
.PortOpen = True ' 打开串口
End With
End Sub
Private Sub MSComm1_OnComm()
Dim data As String
If MSComm1.CommEvent = comEvReceive Then ' 判断事件类型是否为接收数据
data = HexToString(MSComm1.Input) ' 将接收到的二进制数据转换为字符串
Debug.Print "Received data: " & data ' 输出接收到的数据
End If
End Sub
Private Function HexToString(ByVal hex As String) As String
Dim i As Long
If Len(hex) Mod 2 = 1 Then ' 如果字符串长度为奇数,补一个0
hex = "0" & hex
End If
For i = 1 To Len(hex) Step 2 ' 将每两个字符转换为一个字节
HexToString = HexToString & Chr(CByte("&H" & Mid(hex, i, 2)))
Next i
End Function
上述代码中,使用了MSCOMM控件来实现串口通信,通过设置InputMode属性为comInputModeBinary来设置输入模式为二进制模式,然后通过HexToString函数将接收到的二进制数据转换为字符串。在MSComm1_OnComm事件中判断事件类型是否为接收数据,如果是则输出接收到的数据。