VB与单片机通信,传送11字节的数据,有时接受的是正确的,有时接受少一位,什么原因呢?
展开全部
VB与单片机通信。如 VB 为上位机,单片机为下位机。
通讯必须以协议形式,不然分不清 是第一字节数据,还是第几个字节数据。
通讯协议可以 自己设计 如
指令码 - (多机通讯需要加从机 号)- 数据1 - 数据n - 校验码 - 结束码。
接收数据 首先 判断 指令码, 接着开始接收 数据,
校验码 是为了判断 接收的数据 与 发送的数据 是否一致,不一致 就是数据受到干扰错误。
结束码 表示 数据 发送 或者 接收 完毕,等待接收 下一组数据,这样就不会出错。
通讯必须以协议形式,不然分不清 是第一字节数据,还是第几个字节数据。
通讯协议可以 自己设计 如
指令码 - (多机通讯需要加从机 号)- 数据1 - 数据n - 校验码 - 结束码。
接收数据 首先 判断 指令码, 接着开始接收 数据,
校验码 是为了判断 接收的数据 与 发送的数据 是否一致,不一致 就是数据受到干扰错误。
结束码 表示 数据 发送 或者 接收 完毕,等待接收 下一组数据,这样就不会出错。
展开全部
首先你要搞清楚问题在MCU还是在上位机程序。
解决方法:
1,先用串口调试程序(如超级终端)调好单片机的程序
2,再用VB程序来调试。
解决方法:
1,先用串口调试程序(如超级终端)调好单片机的程序
2,再用VB程序来调试。
追问
串口调试助手测试数据正常,但用VB读取时数据有时会出错误。
追答
那是你写的VB程序有问题了,我发一个我的给你看看.
MSComm1.InBufferSize = 256 '初始化串口
MSComm1.InBufferCount = 0
MSComm1.InputMode = comInputModeBinary '二进制方式
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.InputLen = 0 '每次读入缓冲区所有字符
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True '打开串口
End If
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
tdata2 = AscB(MSComm1.Input)
End If
MSComm1.InBufferCount = 0
'tdata2 是你收到的数据,你要马上存下来.不然他在下一个来时他就没有了.
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.波特率要一定
2.vb编程,在数据处理没有处理好
vb的MSComm控件传输数据哟两种格式:二进制和文本,具体你可以参考Visual Basic串口通信及编程实例(张辉 李荣利 王和平 著)
2.vb编程,在数据处理没有处理好
vb的MSComm控件传输数据哟两种格式:二进制和文本,具体你可以参考Visual Basic串口通信及编程实例(张辉 李荣利 王和平 著)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询