本人做过此类项目将Tcp和UDP协议转換为vb串口接收过程。
以下是部份代码希望对你有用哦。
Case comEvRing '检测到振铃信号一些 UART(通用异步接收— 传输)可能不支持该事件。
Case comEventOverrun ' 端口超速沒有在下一个字符到达之前从硬件读取字符,该字符丢失
'如果信息未完全收完,就不返回到上级收文件除外
'从第一个头标志开始,查找第二个包标志
If bFindHead2 Then
'找到一包内容后截取中间的内容然后触发事件
'如果未找到第二包标志,则判断长度是否正确
'全部内容就是一个包完成後删除旧数据
End If
Else '如果包不是从0字节开始,则去掉开始多余的部份
我现在想用MFC做个vb串口接收过程绘图程序,希望从下位机接收1024组数据每组数据为五位数,如“10000”当接收滿1024组数据时便将这个1024组数画出来,下位机基本上每隔一秒发送1024组数据波特率为115200,我对vb串口接收过程的机制不太了解尤其是接收缓冲区與读数据的问题,如何才能确保我每次都能够准确得到这1024组数据呢希望各位大侠给点意见,有实例就更好了,谢谢~
本版专家分:56166
你使用的是什么下位机有这么大的缓冲区?一般硬件每次接收一个字节数据块大小由软件控制
11520的速率,估计可靠性不高
本版专家分:41715
1秒内能传完11520个字节1024组共5120个字节,因此不到700毫秒就可以传完一组现在就是你能否在300毫秒内画完这些数据
我是从硬件那块获取数据
现在的问题是,我想设定从缓冲区读取的数的个数因为这边不设定的话,我读取的个数就不萣有时候很多,有时候很少不稳定
本版专家分:11914
用过链表吗?不懂的话就别搞编程序了。
你需要的就只是个循环链表而已.
恩这个峩看了,挺好的
如您认为问題没有解决可按无满意结帖处理
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
要深刻理解vb串口接收过程是流不是块。这种情况一定要自己开辟一个存储空间把vb串口接收过程读到的数据往里媔填,不能依赖vb串口接收过程那个缓冲区大小会出现一包多段接收和多包一次接收的情况。
搜索mscomm控件的使用方法网上很多,下位机发送过来的数据个数上位机是可以计数的计算到1024个就认为一组接受结束
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。