2009-06-15 51 views
0

編輯:是一個硬件問題.....得到一個重複的設備或電纜似乎解決了這個問題。虛假的TimeoutException讀取.NETCF SerialPort

你好,我拉着頭髮試圖從.NETCF中的串行端口讀取大量數據(〜1MB)。

我讀GPS數據的轉儲,但我隨意在電話會議中m_serial.Read(..)

肯定是有數據的串行端口上的流收到一個TimeoutException - 轉儲需要幾分鐘。當我超時時,我可以將串行電纜插入另一臺計算機,並穩定地看到數據流。

我試過實現這幾種不同的方式--SocketPort.Read,SerialPort.ReadLine,SerialPort.ReadExisting - 並且它們都會讀取一小段時間(隨機數量),然後失敗並出現TimeoutException。

任何幫助將非常感謝,謝謝!我基本上處於虧損狀態,因爲我怎麼得到一個超時的時候肯定是有數據提供,在38400波特流

//m_serial is a SerialPort object, ReadTimeout set to 9000 

        string eoftest = "\r\n$PSRF206"; 
        byte[] bEOFTest = ASCIIEncoding.ASCII.GetBytes(eoftest); 

        int bufferSize = 1024 * 16; 
        byte[] buffer = new byte[bufferSize]; 
        int testingIndex = 0; 

        while (testingIndex < bEOFTest.Length) 
        { 
         int count = m_serial.Read(buffer, 0, bufferSize); 

         if (count > 0) 
         { 
          for (int i = 0; i < count; i++) 
          { 
           if (buffer[i] == bEOFTest[testingIndex]) 
           { 
            testingIndex++; 
            if (testingIndex >= bEOFTest.Length) 
             break; 
           } 
           else 
            testingIndex = 0; 
          } 

          writer.Write(buffer, 0, count); 
         } 
        } 

UPDATE:

我發現的代碼運行正常上Motorola Symbol設備,但不在我擁有的intermec設備上。我已經將所有硬件換掉,試圖消除這種可能性,但仍然無法正常工作。

兩款器件的Windows Mobile 5.0

+0

你不能使用GPS中間的任何原因驅動程序,所以你不必做這個低級別的東西? http://msdn.microsoft.com/en-us/library/ms850332.aspx – Lee 2009-06-15 23:33:25

回答

0

真是太好了....看起來就像是一個硬件問題....我提供了一些其他的設備現在和它的正常工作.....

0

作爲一個建議,你總是可以嘗試使用OpenNETCF serial port library。它的接口兼容性,這樣你可以將所有的信息源都下載到設備管理器調用中,這樣你就可以看到爲什麼會出現任何錯誤。