c#,采用SerialPort类的DataReceived事件来接收数据,性能达不到要求,有没有更好的思路和方法。 10

 我来答
袁吉航
2012-11-23 · TA获得超过546个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:159万
展开全部
不知道你说的性能不够是指哪方面的性能。
1.如果是从设备数据发出,到程序SerialPort类的DataReceived收到时间觉得过长,那你这个系统需要的性能就太牛叉了,还是换其他方式吧,例如socket。

2.如果是设备数据发出,程序也收到。但是如果是因为你在DataReceived事件里写了大量的处理逻辑导致在两次接收数据的时间间隔之内跟不上处理,那这个,我建议你建立一个接收数据队列。在DataReceived事件里只把接收到的数据存储在队列里。然后建一个处理数据的线程,每次只从队列里取第一条进行处理,处理完之后删除。而且要优化你的处理数据线程。

不知道我说的是否够详细。
追问
感谢你的回答。
我的情况是采用实际的串口来接收数据(只打开,不干其他任务),数据每20毫秒40个字节左右。cpu占用率8%左右。而采用虚拟串口,数据每1毫秒40个字节,cpu占用率却是0%左右。如何降低cpu占用率?
代码只有一句: serialPort1.Open();
angel6708
2012-11-23
知道答主
回答量:42
采纳率:0%
帮助的人:27.9万
展开全部
回复是为了抽奖
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式