Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341789
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:05:11

我最近发现一个情况,关于我的程序的,具体如下:
我用了您的串口控件,在主线程里接收下位机上传的数据,一般情况下没发现什么问题。但是一次偶然的情况,我在给下位机杀毒的情况下用KV2004,KV2004有时竟然会占用CPU高达80-99%的情况,这时我的程序就开始丢失接收的数据了,本来显示的125ms接收一个数据,结果弄得好半天计数序号才跳一下,一旦关了KV2004,CPU时间充裕后我的程序就可以正常运行了。请问这种情况该如何解决,您能给我提供一个解决方案吗?非常感激!!!!
另外,还想请教您另外一个问题,就是您的串口控件有否在长时间接收串口数据(比如连续20小时)这种情况下进行过测试,不知这种情况下会不会出现占用CPU时间过高的情况呢?因为我的程序在这种情况下会出现占用CPU过高,一旦停止接收,时间马上降下来,我一直查不出问题所在,所以也想顺便问您一下,以方便我缩小问题可能引起的原因范围。

谢谢您的帮助!五一快乐!!!!!

--------------------next---------------------
如果在串口事件里面做的处理数据程序,问题可能出在在串口事件里面处理界面显示有关的东西了,例如修改显示内容等。
在串口事件里面只处理数据,不处理显示,而是把要显示的东西放在内存里面,在主线程里面处理显示,这样会好很多。
如果不在串口事件里面处理数据,在定时器或者其他地方查询的数据,一般不会丢失数据,只是响应速度变慢了。

如果始终在丢失数据,可以通过加大系统缓存的容量 HwInSize 能够缓解一些,
这个缓存并不在控件里面, 是用在 Windows 串口驱动在系统中的缓存, 这个属性控件设的是系统的默认值,
由于系统忙着处理杀毒, Windows 的这个缓存满了引起的丢失数据可以解决或缓解。

控件里面的 InBufSize 是控件使用的缓存, 默认值 8k 字节,一般不会出现溢出现象。

--------------------next---------------------

阅读(1008) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~