C#串口编程时,读取数据必须在,串口响应事件中进行吗 25

//AddEventHandlermSerialPort.DataReceived+=newSerialDataReceivedEventHandler(SerialPo... // Add Event Handler
mSerialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);
也就是说要在SerialPort_DataReceived()这个函数被触发时读..
我是按照我自己想法,根据自己设计的握手通信,当我发送出去一个东西后,我主动的去读
serialPort_jmt.Write(glb_retuMcuCmd,0,2);
serialPort_jmt.Read(glb_readMcuCmd, 0, 2);
但是这样好像经常使程序卡主,我是想这个read(),是不是一直在循环等待的?
还有c#等面向对象编程是不是不能使用死循环的,这样也会使程序卡主?
在线等......
展开
 我来答
Sxzy灬丨小柒
2015-01-04 · TA获得超过623个赞
知道小有建树答主
回答量:1223
采纳率:50%
帮助的人:258万
展开全部
  1. SerialPort_DataReceived()事件是.net提供好的很完善的实时接收串口响应的方法. 正常情况用它就可以了.

  2. mSerialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived); 这行代码执行后就意味着程序已经另开一线程了.它不会影响主进程的操作,也就是说不会卡死主程序.

  3.  当你不开线程直接serialPort_jmt.Read的时候如果没有串口响应来的数据那么该方法会一直等待,也就是说回卡住主程序.

  4. 这不是死循环,而是主线程等待.

  5. 如果不用SerialPort_DataReceived()事件,可以自己写线程,用线程去serialPort_jmt.Read,这样就让线程一直等待,而不会卡死主程序.

     

    有帮助请采纳,如有疑问请追问.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式