C# 串口通讯是否适合使用多线程编程

UI上有GridView和两个串口参数设置框,GridView每行有两列,一列是最小值,另一列是最大值,通过串口1发送数值,串口2接收该数值,然后判断数值是否在GridV... UI上有GridView和两个串口参数设置框,GridView每行有两列,一列是最小值,另一列是最大值,通过串口1发送数值,串口2接收该数值,然后判断数值是否在GridView每行的最小值和最大值之间,判断完一行然后判断下一行... ...
原先 为了保证检测的速度使用了多线程编程,但一直没实现;后来改为先调用发送函数,然后是接收函数,最后是判断函数,发现这样速度也很快。所以,我想请问大家有没有什么建议做这类的项目。
展开
 我来答
freeeeeewind
推荐于2017-11-29 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1350万
展开全部
1)一般的来说,要保证实时性(接收实时性以及发送的实时性),对串口操作采用多线程:一个线程负责接收;另一个线程负责发送。
2)在 .Net类库中 System.IO.Ports.SerialPort就是采用这种方案:即无论你程序是否启动额外线程来处理窗口接收与发送,System.IO.Ports.SerialPort类都是按照多线程方式工作!
3)在MSDN关于SerialPort 类的文档中,请注意SerialPort类有个属性BaseStream。这个属性用于显式异步 I/O 操作,即多线程方式操作串口
4)同样,在MSDN文档中关于SerialPort.DataReceived 事件的说明中有这么一句话:“……从 SerialPort 对象接收数据时,将在辅助线程上引发 DataReceived 事件……”,意思很明白:DataReceived事件是在主线程之外的另一个辅助线程上引发的!
====
说了这么多,结论很简单:
串口通讯绝对适合使用多线程编程,因为System.IO.Ports.SerialPort本身就支持多线程操作;当然,你完全可以绕开System.IO.Ports.SerialPort提供的多线程机制,实现自己的单线程输入与输出操作。除非你有你特定的需求,这样做显然不是上策。
查晓筠0i5
2015-02-13 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4960万
展开全部
关注这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式