2013-08-23 128 views
0

我正在嘗試創建一個類似於超級終端的終端,以與GSM調制解調器通信(在Sierra無線sl8080上打開)。調制解調器可以隨機重置或通過命令發送到通信端口。調制解調器重置所有通信時丟失。我正在使用C#串行端口問題

private void serialPort1_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    Console.WriteLine(serialPort1.ReadExisting()); 
} 

從設備讀取。但重置後,我可以做任何事情,並得到任何回報。

如果我試圖和一個復位後讀我得到:

A first chance exception of type 'System.InvalidOperationException' occurred in System.dll 
An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll 
Additional information: The port is closed. 

如果我復位,然後關閉端口,我得到:

A first chance exception of type 'System.IO.IOException' occurred in System.dll 
An unhandled exception of type 'System.IO.IOException' occurred in System.dll 
Additional information: The requested resource is in use. 

我不能從這個狀態了恢復關閉應用程序完全。我一直在試圖解決這個問題一年多。我想出了很多其他解決方案。主要使用Python和Java/RXTX來完美地處理來自設備的重置。我現在真的很難把它看成是一個個人的挑戰。

我試過使用WMI來檢測usb設備的拔下並關閉了commport,但仍然是相同的結果。

回答

0

您是否嘗試過處置SerialPort對象而不是關閉它?

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.errorreceived.aspx

如果一個的SerialPort對象變成在讀取操作期間阻擋,不中止線程。而是關閉基本流或處理SerialPort對象。

+0

我有,也有同樣的結果。總是必須關閉應用程序,並且有時從設備上拔下USB,以免設備無法正常工作。 – stihl

+0

對象是否已配置? 我還發現了你可能已經看過的這篇文章。似乎與.net的一些錯誤。 (http://social.msdn.microsoft.com/Forums/vstudio/en-US/89944715-8549-4fc9-86ec-7dd92b707786/serialport-unplug-and-plug) – bjaminn