РЕДАКТИРОВАТЬ: была проблема с оборудованием ..... получение дублирующего устройства или кабеля, казалось, решило проблему.
Здравствуйте, я выдергиваю волосы, пытаясь прочитать большое количество данных (~ 1 МБ) из последовательного порта в .NETCF.
Я читаю дамп данных GPS, но случайно получаю исключение TimeoutException при вызове m_serial.Read (..)
Определенно, на последовательный порт поступает поток данных - дамп занимает пару минут. Когда я получу тайм-аут, я могу просто подключить кабель последовательного интерфейса к другому компьютеру и видеть, что данные постоянно передаются.
Я пытался реализовать это несколькими различными способами - SerialPort.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