假TimeoutException异常阅读.NETCF的SerialPort
-
14-09-2019 - |
题
编辑:是a硬件问题.....得到一个重复的设备或电缆似乎要解决的问题
您好,我拉我的头发试图从.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);
}
}
更新:
我发现的代码运行正常摩托罗拉符号设备上,但并不是说我有一台Intermec设备上。我已经换出所有的硬件,试图消除的可能性,它仍然无法正常工作。
这两种设备是Windows Mobile 5.0的
解决方案 2
真是太好了....看起来就像是一个硬件问题....我提供了一些其他的设备现在和它的正常工作......
其他提示
作为一个建议,你总是可以尝试使用 OpenNETCF串行端口库一>。它的接口兼容,这样你把所有的源到设备管理器调用,所以你可以看到为什么任何错误可能会被抛出。
不隶属于 StackOverflow