[英]C# : SerialPort class and Threading
目前,我正在使用SerialPort類與我的設備進行通信。 為了改善用戶體驗,我創建了一個可以終止正在進行的通信的線程。 但是,當我在線程中啟動以下代碼時,我將從(SerialPort)port_.Read指令接收的數據實際上與在Write指令中使用的數據相同(看起來我無法與讀寫緩沖區)。如果我不將其放入新線程,則該代碼有效。 那么為什么會發生這種情況,我一次只能進行一次通訊,因此無法同時在緩沖區中寫入2個命令。
commTmr是一個計時器,它將在一定時間后停止while循環。
Thread.Sleep是為了確保可以在緩沖區中讀取接收到的數據(如果沒有它,我很難讀取)
while ((commTmr.timedout == false) && (port_.BytesToRead < threshold))
{
if (commTmr.TimeElapsed().TotalSeconds > trigg)
{
port_.Write(sentData_, 0, nbBytesSend);
trigg+=0.3;
}
}
if (commTmr.timedout == true)
{
return false;
}
else if (!(port_.BytesToRead < threshold))
{
Thread.Sleep(100);
port_.Read(receivedData_, 0, nbBytesRead);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.