在帧和字符之间暂停

时间:2014-02-27 09:23:44

标签: c# serial-port modbus

我正在编写一个C#应用程序,使用Modbus(RTU)协议通过串行端口与外部设备进行通信。要管理串口通信我正在使用SerialPort类。 Modbus要求一帧中的字符之间的<1.5T延迟和帧之间的> 3.5T静音(T是1个字符的传输时间(字节?))。

  1. 如何确保我发送的帧中的字节之间没有太长的静音?
  2. 如何识别我收到的字节之间的&gt; 3.5T静音?

1 个答案:

答案 0 :(得分:3)

之前我做过类似的事。首先,我不认为您需要担心发送时字符之间的&lt; 1.5T延迟。当您发送一个完整的缓冲区时,字符的传输没有任何暂停,特别是在短消息上。

字节之间的> 3.5T静音表示接收时的消息结束最初是在80年代设计的,其中每个字符接收1个中断。它在当时是有道理的,但是现在,在传入的角色和你的软件之间有16个字节的FIFO,USB适配器等,这是行不通的。

相反,请尽可能经常检查收到的消息。确定消息类型,然后确定Modbus RTU消息的长度。一旦你有了长度,检查你收到了多少字符,如果你有足够的字符,你显然已经完成了,否则等待更多。如果字符丢失,请暂停。