| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1651 人关注过本帖
标题:[求助]高接收缓冲区为什么不能避免串口分多次接收数据?
只看楼主 加入收藏
清洁工
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2005-4-12
收藏
 问题点数:0 回复次数:1 
[求助]高接收缓冲区为什么不能避免串口分多次接收数据?
用串口传输数据时遇到一个问题:我发送一条80字节左右的字符串 ,虽然对方(其实还是我自己)能完整地收到这个字符串,但经常是分为好几段接收的(即:触发了好几次OnComm事件才完全收到),事实上我发送和接收的缓冲区都设得足够大了啊!不知会是什么原因?请知情者指点一下,谢谢!

部分串口设置代码如下:
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputMode = comInputModeText
MSComm1.InBufferSize = 1024 '设置MSComm1接收缓冲区为1024字节
MSComm1.OutBufferSize = 512 '设置MSComm1发送缓冲区为512字节
MSComm1.InputLen = 0 '设置Input 一次读取接收缓冲区中全部的内容
MSComm1.InBufferCount = 0 '清除接收缓冲区
MSComm1.OutBufferCount = 0 '清除发送缓冲区
MSComm1.PortOpen = True

[此贴子已经被作者于2006-2-21 14:02:54编辑过]

搜索更多相关主题的帖子: 串口 缓冲区 数据 字节 
2006-02-21 13:41
清洁工
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2005-4-12
收藏
得分:0 
刚才这个问题我暂时是这么解决的:在每次发送数据后延时100毫秒 或 在每次读取串口数据前先延时100毫秒,确保读入的都是完整的数据(毕竟每条数据都不是太长)。
但我始终搞不明白:为什么“MSComm1.InBufferSize =1024” 却要分两次才能载入80个字节?难道是因为串口分为两次才把数据发出去?但“MSComm1.OutBufferSize = 512”,远远大于80字节啊,仍是不懂

[此贴子已经被作者于2006-2-21 15:11:03编辑过]


2006-02-21 14:53
快速回复:[求助]高接收缓冲区为什么不能避免串口分多次接收数据?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.142912 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved