打印

单片机与VB通信。vb的mscomm控件只接收8字节数据?求助!!!

[复制链接]
4998|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bhsdlmj|  楼主 | 2009-8-5 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机和PC机的VB的mSCOMM进行串口通信。
其中单片机为主机,VB为从。

单片机每隔200ms发送17字节的帧给VB,VB接收到17字节后,若符合协议,VB发送10字节的帧给单片机。

请问:(1)采用oncomm好呢,还是采用轮询方式好呢?
(2)若采用oncomm事件,令MSComm1.RThreshold = 1,那么 VB先收8个字节,再收8个字节,最后收1个字节,发生了三次oncomm事件。微软技术支持说是因为数据传输需要时间的缘故,见链接http://faq.csdn.net/read/215129.html
但是我发现把波特率更改了变大几倍之后,仍然是上面的“8字节现象”。不知道什么原因?

注:我也觉得微软技术支持说得是对的。因为我用虚拟串口在同一台电脑上面模拟发送和接收,就不会出现“8字节现象”。

现在我的做法是在oncomm程序里面的comEvReceive事件后面 加个延时,针对17个字节延时20毫秒,那么就可以完整接收17个字节了

不知道大家针对这个问题  有什么自己的看法??

相关帖子

沙发
渤海三叠浪| | 2009-8-6 07:10 | 只看该作者
楼主的问题不容易解决 比较麻烦 尤其是8个字节 的那个问题   ,期待好的方法

使用特权

评论回复
板凳
古道热肠| | 2009-8-6 10:33 | 只看该作者
俺过去用的是查询长度,做个延时,收到数据后等一会儿,长度够量就处理,处理完全清空串口缓冲.

使用特权

评论回复
地板
bhsdlmj|  楼主 | 2009-8-6 13:55 | 只看该作者
古道热肠 很热心 !!!

多谢你分享经验!!

使用特权

评论回复
5
呆板书生| | 2009-8-6 14:01 | 只看该作者
协议定长用oncomm,不定长用定时查询

使用特权

评论回复
6
bhsdlmj|  楼主 | 2009-8-6 21:13 | 只看该作者
为什么延时就好用  好像没有权威的解释。

有个微软全球支持说是和传输时间有关。

我看可能是 数据向缓冲区里面移动的速度可能是个特定的定值。


=======================================================

设置inputlen = 1  不知道能不能搞定?  我明天要好好试验一下!!

使用特权

评论回复
7
bhsdlmj|  楼主 | 2009-8-10 08:27 | 只看该作者
5# 呆板书生

同意5楼的观点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

351

帖子

0

粉丝