2 xiaohuli1 xiaohuli1 于 2013.10.23 19:41 提问

MSComm控件的输入缓冲区如何设置大小才合理

我在做一个串口。要把罗盘仪的数据读出来,为了保证数据全部读出来,我的MSComm控件的输入缓冲区设置的越大越好吗,默认是1024,最大是多少。

1个回答

ll_0520
ll_0520   2013.10.24 10:43
已采纳

也不是越大越好,串口是有固定的几个速率的,也就是说每秒串口最多传输的数据量是有限的,根据你的数据量大小合理设置缓冲区最好。具体你可以每次读缓冲区时看看读了多少字节,根据实际读到的字节数合理设置缓冲区大小。

ll_0520
ll_0520 看看这个试下,用控件:http://yudaweilili.blog.163.com/blog/static/4767447620117292473189/不用控件:http://blog.csdn.net/ll_0520/article/details/6238351
4 年多之前 回复
xiaohuli1
xiaohuli1 我把输入缓冲区大小放在打开串口前面解决了这个问题,可是又有了新问题。我的每次传输14字节,当我把RThreshold设置成14,我的cpu达到百分之五十,运行的窗口在设备管理器中是正在运行,可是实际上已经点击不了了,当我把RThreshold设置成1,cpu就变成百分之十五。虽然cpu降下来但是每次只取一个数也不行啊,这个情况你知道吗,非常感谢。
4 年多之前 回复
ll_0520
ll_0520 没碰到过,你看下MSDN中设置缓冲区大小的那个函数的说明
4 年多之前 回复
xiaohuli1
xiaohuli1 现状问题是我的程序只要我把输入缓冲区变大,比如2048的话,点击运行对话框不出来,窗口在任务管理器里都没有显示,我只能重新启动电脑才能再次运行程序。不知道这种情况你遇到了没有。谢谢了。
4 年多之前 回复
ll_0520
ll_0520 恩,比你的数据量大些就行
4 年多之前 回复
xiaohuli1
xiaohuli1 我计算了一下。一秒仪器发送给我的数据6kb,我想一秒读一次或者半秒读一次,那我的输入缓冲区设置能是1024*7吗
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!