您好,我正试图从.NETCF中的串口读取大量数据(~1MB)。
我正在阅读GPS数据转储,但我在调用m_serial.Read(..)时随机收到一个TimeoutException
串口上肯定有数据流 - 转储需要几分钟。当我收到超时时,我可以将串行电缆插入另一台计算机,然后稳定地看到数据流。
我尝试过几种不同的方式实现 - 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);
}
}
更新:
我发现代码在Motorola Symbol设备上运行正常,但在我所拥有的intermec设备上却没有。我已经换掉了所有的硬件试图消除这种可能性,但它仍然不起作用。
这两款设备均为Windows Mobile 5.0
答案 0 :(得分:0)
作为建议,您始终可以尝试使用OpenNETCF serial port library。它的接口兼容,并且您可以将所有源都放到设备管理器调用中,这样您就可以看到为什么会抛出任何错误。
答案 1 :(得分:0)
很棒....看起来这是一个硬件问题....我现在有一些其他设备可用,它工作正常......