簡體   English   中英

發送從串行端口接收的數據的C#TCP / IP客戶端-建議

[英]C# TCP/IP Client that sends data received from serial port - Suggestions

目前,我正在開發一個通過串口從RFID讀卡器接收數據應用程序。 數據,然后將數據通過TCP / IP發送到服務器。

我已經使兩件事都起作用了,但不是同時進行。 我可以從卡中讀取ID,也可以向服務器發送一些文本。 但是,我想請教您一些建議,對於這兩個共同工作的最佳解決方案是什么?

目前,我有兩個類別的TCP / IP使用情況和串行使用情況。 從主類im創建兩個類的對象,並啟動一個從串行端口讀取數據的線程。

我應該嘗試這樣的事情嗎?

在課堂上,我將只創建串行用法對象並調用一個處理讀取的線程。 在該讀取線程內部,我將調用一個新線程,該線程將打開TCP / IP連接並發送從串行端口接收到的數據。

另一種類似的方法將打開主類的兩個連接,但是它將從串行端口接收線程啟動TCP / IP發送線程(已經打開的連接)。

我在線程方面沒有太多的經驗,所以這就是為什么我向軟件開發人員尋求幫助。 謝謝! (如果有幫助,我可以在此處粘貼部分代碼)。

更新:

多數民眾贊成在技巧,我將仔細研究您的建議。 我想這是個好主意,但是正如我所說,我沒有太多的線程經驗。 如果我可以在這些類中創建單獨的線程,並且它們都使用相同的對象,可以說它是Message類的對象,那我可以在COM處理線程中創建新對象,而TCP / IP處理線程可以使用該對象嗎?通過TCP / IP從中發送數據? 我可以像對List那樣對Message類的對象進行排隊嗎? 另外,如何將在一個線程中創建的對象隊列傳遞給另一個線程

將兩種不同的通信方法抽象到單獨的類中是很好的設計,因此我會堅持這樣做。

不必在主類中處理線程,而是讓每個通信類處理自己的線程管理,並通過共享的線程安全隊列在它們之間進行通信。

然后,您的串行通信對象可以處理與串行端口的通信,讀取數據並將該數據放入隊列中。 TCP comms對象可以處理連接,重新連接,斷開連接等...,並使用隊列中的數據並將其發送到套接字並在網絡上發送出去。

您的主類可以只創建隊列,並在同一隊列實例中傳遞兩個comms對象。

暫無
暫無

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

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