C#串口通信遇到的坑


C#串口通信中有一個DataReceived事件可以委托一個接收函數。此接收函數是運行在輔線程(secondary thread)上的。如果要在這個函數中修改主線程中的一些元素,比如UI界面上的變量的值,必須使用委托的方式。DataReceived所注冊的接收函數和主線程中的發送函數是異步的。如若想用同步的方式進行發送和接收。阻塞讀是一個解決方案。阻塞讀是指如果發送的指令沒有接收完畢,那么接收方法被堵塞。此時也不能發送下一條指令。串口中有一個readLine方法是阻塞讀的。部分代碼如下:

 String order1;
 order1 = "命令一";
sp1.WriteLine(order1);
 sp1.ReadLine();  
order1 = "命令二";
sp1.WriteLine(order1);

如果命令一發送后,sp1的readLine方法沒有接收完畢。在這里就是接收一行。那么命令二是不會繼續執行的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM