编辑:是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

真是太好了....看起来就像是一个硬件问题....我提供了一些其他的设备现在和它的正常工作......

scroll top