編輯:是一個硬件問題.....得到一個重複的設備或電纜似乎解決了這個問題。虛假的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
你不能使用GPS中間的任何原因驅動程序,所以你不必做這個低級別的東西? http://msdn.microsoft.com/en-us/library/ms850332.aspx – Lee 2009-06-15 23:33:25