簡體   English   中英

System.IO.Ports.SerialPort Write()超時

[英]System.IO.Ports.SerialPort Write() Timeout

我正在C#(.Net Framework 2.0)中使用的程序要求能夠切換到“遠程模式”,並通過藍牙將ASCII數據發送到另一個屏幕。 首先,我不是一個非常有經驗的程序員,並且我對網絡一無所知,但是昨天在閑逛了SerialPort類之后,我得以開發出一個可以在兩個連接藍牙的設備之間很好地工作的聊天程序。

但是,聊天程序僅在用戶按下按鈕“發送”數據時才發送數據。 如果兩個設備未正確連接,我將拋出TimeoutException以及錯誤消息。 我現在正在使用的程序要大得多,並且只要打開COM端口,它就會嘗試不斷寫入數據。

這意味着,如果沒有立即連接這兩個設備,則必須拋出TimeoutException ,並且它將一次又一次地拋出它,直到它們正確連接為止。 那是完全不能接受的。 它將程序減慢到無法使用的程度,並在調試輸出中顯示“ TimeoutException Thrown Here”錯誤消息。

有更好的解決方案嗎? 我可以通過某種方式僅在可以確認兩個設備均已連接的情況下將數據寫出,而無需不斷檢查(並隨后在檢查時得到超時錯誤)。

否。串行連接是無狀態的

這意味着您不知道有人在另一邊。 您所能做的就是發送一些信息,看看是否有有意義的東西回來了。

最簡單的例子是老式的模擬調制解調器。 要找出它是否已連接,就是發送一個AT並檢查是否返回OK

因此,您的解決方案是正確的,但可能未正確實施。 您應該將建立連接的序列放入BackgroundWorker 因此,這些嘗試將在您的GUI對用戶保持響應的同時在另一個線程中完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM