付费悬赏
现需要用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进制数据
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- 「已注销」 2023-03-25 15:49关注
参考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事件中判断事件类型是否为接收数据,如果是则输出接收到的数据。
解决 1无用
悬赏问题
- ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
- ¥20 遥感植被物候指数空间分布图制作
- ¥15 安装了xlrd库但是import不了…
- ¥20 Github上传代码没有contribution和activity记录
- ¥20 SNETCracker
- ¥15 数学建模大赛交通流量控制
- ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
- ¥50 paddleocr最下面一行似乎无法识别
- ¥15 求某类社交网络数据集
- ¥15 靶向捕获探针方法/参考文献