小串口通讯软件在不同机器上运行时的CPU占用率相差巨大!why……?

letre 2009-08-14 10:36:59
VC++6.0做的小软件(350K不到),用于接收串口数据或通过串口发送数据,可是在不同的机器上运行时发现很严重的问题,详细情况如下:

1、在做该软件的电脑上(XP Professonal SP3),运行一切正常(不过在接收串口数据时CPU占用率有点高,达到了15%左右,而且随时间的推移CPU占用率会缓慢增加);
2、把该软件放到另外两台安装了VC++6.0的机器上运行,情况跟在本机运行时一样,一切正常;
3、、把该软件放到第三台机器上(XP Professonal SP3,也安装了VC++6.0)运行,若不接受串口数据,则无异常发生,可是一旦开始接收数据后大概5秒钟后,CPU的占用率就会从百分之几迅速跳变到百分之三十几再到百分之六十几,直到达到百分之九十八、九十九,然后软件就不能通过正常途径推出了,只能被强行kill掉;
4、将软件放到第四台机器上(XP Home Edition,无安装VC++6.0)运行时,出现的情况跟上面3中出现的状况一样,最终只能被强行kill。

不知道出现这种现象的根本原因在哪里,通过什么方式解决会比较有效(如果可能的话,希望尽量详细一些,因为本人属还未入门的范畴,刚开始接触VC)?

另:使用网上找的几款免费的串口通讯小软件,发现随着时间的推移和接受串口数据的增多,系统的性能都会受到不同程度的影响,若接收数据量庞大的话,系统会变得非常缓慢,不知道这些问题有什么好的解决方式(因为需要经常接受串口发送过来的大量数据),恳请大家指点……

谢谢……
...全文
114 点赞 收藏 18
写回复
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘雨 2009-08-21
建议用ReadFile,WriteFile来读写IO,包括异步读写。长期运行的服务类程序,还是不要用控件的号。
至于占用率?

建议你静态编译下代码,发布程序的时候,连同你开发机器的依赖的dll一同发布到其他计算机测试。
回复
别用控件的好,高速可能不稳。
回复
muzizongheng 2009-08-20
读完后 清空串口的buffer了吗?
回复
letre 2009-08-20
[Quote=引用 14 楼 muzizongheng 的回复:]
读完后 清空串口的buffer了吗?
[/Quote]
就算是没有清空的话,应该不至于在有些机器上表现基本正常而在另外一些机器上表现完全不正常啊
回复
letre 2009-08-20
[Quote=引用 13 楼 vieri_ch 的回复:]
用的是串口控件,还是ReadFile和WriteFile?
[/Quote]

用的是控件
回复
尘雨 2009-08-20
用的是串口控件,还是ReadFile和WriteFile?
回复
letre 2009-08-20
[Quote=引用 11 楼 zhouzhipen 的回复:]
估计是多线程死锁了.
你一定是把串口助手的源码改了一下吧.这份源码本身就很多地方有问题,你这么一改,问题就更大了.
[/Quote]

没有啊,完全是重新做的,跟串口调试助手没任何关系的
回复
zhouzhipen 2009-08-18
估计是多线程死锁了.
你一定是把串口助手的源码改了一下吧.这份源码本身就很多地方有问题,你这么一改,问题就更大了.
回复
letre 2009-08-17
[Quote=引用 6 楼 zhouzhipen 的回复:]
我开发的一个通讯程序几乎每天24小时运行,每天的通讯量至少500MB以上,也没出什么问题呀.估计程序其它地方有问题!
[/Quote]

可以给指点一下吗,自己现在真的是迷茫了,接触VC太晚,都不知道该朝那个方向去解决问题,感觉很复杂,跟自己一开始想的根本就不一样
回复
letre 2009-08-17
[Quote=引用 5 楼 zhouzhipen 的回复:]
是DEBUG版的吧!
[/Quote]

不是啊,是release版
回复
letre 2009-08-17
[Quote=引用 4 楼 letre 的回复:]
串口调试助手用过了啊,不会出现很快就把资源耗尽的情况,但是,接收很长时间的数据后,系统的性能也会受到比较大的影响。当时就是想避免这种影响才会想要去自己做一款,来代替串口调试助手的,结果没想到出来的东西问题更严重
[/Quote]

不是啊,时release版的
回复
没有那么多的问题吧,俺的串口程序开个线程,后台跑一天也没什么问题。
回复
letre 2009-08-14
那你的程序可以在不同的机器上正常运行吗?
回复
h490516509 2009-08-14
我刚做完一个串口程序,但没注意到这个问题/我也是接收大量数据。。。。。汗。
回复
zhouzhipen 2009-08-14
我开发的一个通讯程序几乎每天24小时运行,每天的通讯量至少500MB以上,也没出什么问题呀.估计程序其它地方有问题!
回复
zhouzhipen 2009-08-14
是DEBUG版的吧!
回复
letre 2009-08-14
串口调试助手用过了啊,不会出现很快就把资源耗尽的情况,但是,接收很长时间的数据后,系统的性能也会受到比较大的影响。当时就是想避免这种影响才会想要去自己做一款,来代替串口调试助手的,结果没想到出来的东西问题更严重
回复
king_query 2009-08-14
下个串口调试工具试一下。
回复
发动态
发帖子
硬件/系统
创建于2007-09-28

2589

社区成员

VC/MFC 硬件/系统
申请成为版主
社区公告
暂无公告