我的应用程序需要通过串行通信与大约1MHz时钟速度的嵌入式设备进行通信。在这个过程中,我们发现我们错过了设备中的一些数据。c#.NET串行驱动程序性能
因此,我开始测试我使用的串行驱动程序的性能。该设备持续发送带有计数器的原始数据,每个数据包的波特率为115200比特/秒。当连接到超级终端并运行整晚时,我们发现它不会丢失任何数据。
但是,当我使用DataReceived处理程序和书面找到包是否丢失或不解析器的C#串口驱动程序,我们遇到的情况一样
1)丢失的数据包 2)缓冲超限错误的。
我无法得出结论。我希望获得关于可用数据的全部观点。
它是一个延伸任何串行设备驱动程序边界的测试吗?或者.NET串行驱动程序写入的方式不符合标记?
我实施的方式非常简单。我刚刚使用了一个DataReceived处理程序,并将数据更新为List,其中inturn由运行在具有最高优先级的不同线程中的解析器使用。在DataReceived hanlder中完成的功能只不过是将收到的数据添加到列表中。
由于提前
我以某种方式怀疑它是'波特率115200 Kbps',你可能意味着115200bps。 – leppie 2010-08-19 05:02:21
“解析器运行在具有最高优先级的不同线程中” - 该线程可能会抢占处理传入串行数据的线程,具体取决于解析器线程如何处理从列表读取以及如何同步线程 – Peter 2010-08-19 05:03:52