我正在Visual Studio C#上的項目。是否延遲塊數據接收
我正在從通過串口連接到PC的設備收集數據。 首先我發送一個請求命令,然後等待響應。 發送請求命令後,設備響應延遲1秒。 事情是設備可能無法到達,有時可能無法響應。 爲了等待響應(如果有)並且不提前發送下一個數據請求命令,我通過System.Threading.Thread方法進行延遲。
我的問題是,如果我延長了延遲時間,我是否會丟失串口數據接收。
我使用的延時功能是:
private void Delay(byte WaitMiliSec)
{
// WaitTime here is increased by a WaitTimer ticking at every 100msec
WaitTime = 0;
while (WaitTime < WaitMiliSec)
{
System.Threading.Thread.Sleep(25);
Application.DoEvents();
}
}
你不能使用DataReceived事件嗎? http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived.aspx –
不,你不會失去串口,但我建議你減少thread.sleep並檢查端口連接或者如果是,則調用數據端口,否則將其放入遞歸函數中,如果沒有連接且數據未收到,則再次調用。 –