vb串口通信十六进制显示转化的问题(接受的数据不正确)

串口处理程序PrivateSubMSComm1_OnComm()Dimbuffer()AsByteDimiAsIntegerDimrec_dataAsStringSele... 串口处理程序
Private Sub MSComm1_OnComm()
Dim buffer() As Byte
Dim i As Integer
Dim rec_data As String

Select Case MSComm1.CommEvent
Case 2
buffer = MSComm1.Input
For i = 0 To UBound(buffer)
If Len(Hex(buffer(i))) = 1 Then
rec_data = rec_data & "0" & Hex(buffer(i)) & " "
Else
rec_data = rec_data & Hex(buffer(i)) & " "
End If
Next i
End Select

Text1.Text = Text1.Text + rec_data + " "

End Sub

串口数据助手接收到的数据(以验证为正确):
FD FC 06 00 01 00 FC 06 00 01 00 FC 32 00
09 05 FC 3E 01 02 00 FC 30 00 09 00 FC 30
00 09 00 FC 2E 00 09 00 FC 2E 00 09 00 FC
2E 00 09 00 FC 2B 00 08 00 FC 27 00 07 05
FC 27 00 07 05 FC 27 00 07 05 FC 27 00 07

自我设计的软件接收到的数据:
65 E4 0F 00 00 00 02 00 05 00 3F 00 00 00
02 00 05 00 3F 00 00 00 02 00 05 00 3F 00
00 00 02 00 05 00 3F 00 00 00 02 00 05 00
3F 00 00 00 02 00 05 00 3F 00 00 00 02 00
05 00 3F 00 00 00 02 00 05 00 3F 00 00 00
08 00 00 00

两个接收到的数据差异挺大的,感觉是转化的问题,
求助各位高手,不知道怎么改?
后附接收按钮程序和设置程序,大
家可参考,在线等,必要可发送工程给您。。。
谢谢,如协助完成此项目必有重谢(现金50—100)。
工程是对数据处理最终绘制机器人的行进图。
展开
 我来答
kingtonl
推荐于2016-09-06 · 超过15用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:14.1万
展开全部
问题分析: 1) 高位都为0 2) 多了四个字符, 肯定不是一对一转换的问题, 因为循环次数是buffer的长度。所以,buffer长度变长内容错了。
解决方法: mscomm属性inputmode改为binary;
附:VB参考:InputMode 属性确定用 Input 属性读取的数据类型。如果设置 InputMode 为 comInputModeText,Input 属性通过一个 Variant 返回文本数据。如果设置 InputMode 为 comInputModeBinary,Input 属性通过一个 Variant .返回一二进制数据的数组。
money0_04c351c2
2014-02-12 · TA获得超过4142个赞
知道大有可为答主
回答量:5505
采纳率:49%
帮助的人:1618万
展开全部
数据差异巨大,绝非转化问题。
建议你重新确认波特率、起始位、停止位是否设置正确。
看上去有点儿像是把波特率设高了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aquazoe
2014-02-12 · 超过17用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:43.9万
展开全部
MSComm1.Settings = "波特率,校验位,数据位,停止位"
引号里面的和串口数据助手的配置是否一样?特别是波特率
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式