串行<>以太网转换器和SerialPort.Write()

时间:2011-05-09 04:03:38

标签: c# serial-port

我正在尝试在串行端口上实现最大吞吐量。我相信我的C#代码导致缓冲区溢出情况。 SerialPort.Write()通常是一种阻塞方法。

问题是执行以太网到串行转换的单元/驱动程序在其传输消息所需的持续时间内不会阻塞。它似乎根本没有阻止。一旦太多数据写入太快,它就会永远阻塞。然后在再次运行之前需要处理SerialPort。另一个问题是BytsToWrite在写入后直接== 0。驱动???

那么,我该如何解决这个问题呢?

我尝试在写入之后直接进行睡眠,并将消息发送出去,但它不起作用。

com.Write(buffer, 0, length);
double sleepTime = ((length + 1) * .000572916667) * 1000; //11 bits, 19.2K baud
Thread.Sleep((int) sleepTime);

我发现在设备收到消息和从COM端口发送消息之间可能会有一些延迟。也许这就是驱动程序不阻止.Write调用的原因?

我可以等待节点确认消息。问题是我正在处理数千个节点,并且一些消息是全局广播的。等待每个人都不可行。怎么办?

有什么想法吗?

0 个答案:

没有答案