C#串口通讯问题

我用C#编写监控软件,与单片机串口通讯,将收到的100个字节,这个800个二进制位的没有个位决定着一个picturebox控件为红色还是蓝色,现在这部分代码在主线程内,由... 我用C#编写监控软件,与单片机串口通讯,将收到的100个字节,这个800个二进制位的没有个位决定着一个picturebox控件为红色还是蓝色,现在这部分代码在主线程内,由于控件太多需要很长时间才能执行完,这段时间软件就跟四级一样,什么都不能做,如何解决这个问题?还有有什么办法实现在这个功能快一些?希望高手帮助,先谢谢啦!能解决问题的加分哦~~ 展开
 我来答
syht2000
高粉答主

2014-01-17 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
收到数据后,启动一个线程(这100个字节做为参数传过去),然后在这个新线程中处理变色(注意在别的线程中处理控件要用委托,度娘一下C# 跨线程 访问控件),实际上,在这个新开的线程中,也可以同时再开启比如10个线程,每个线程来处理10个字节,这样处理的速度至少可以提升10倍。
另外,用picturebox效率估计很低,建议自己用gdi来画。
摩羯眼睛会勾魂
2014-01-17 · 超过45用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:112万
展开全部
可以只使用一个picturebox来显示,通过gdi+把颜色画到控件上。
追问
这样会快吗?如果画也是一个一个的字节判定,一个一个决定颜色
追答
这样会快很多,因为不需要维护800个控件的更新,每个控件再重绘的时候都会调用大量的函数,所以会占用大量的时间。

另外,如果用一个picturebox的方案的话,不要直接画在picturebox上,应该在一个临时的对象中画完所有颜色,然后再画到picturebox上,这样可以避免画面闪烁。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c42a80b
2014-01-17
知道答主
回答量:5
采纳率:0%
帮助的人:2.9万
展开全部
使用线程专门负责串口模快的读写,并且要对串口的读写超时进行设置,否则超时时间是无穷时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式