我正在编写一个C#应用程序,使用Modbus(RTU)协议通过串行端口与外部设备进行通信。要管理串口通信我正在使用SerialPort类。 Modbus要求一帧中的字符之间的<1.5T延迟和帧之间的> 3.5T静音(T是1个字符的传输时间(字节?))。
答案 0 :(得分:3)
之前我做过类似的事。首先,我不认为您需要担心发送时字符之间的&lt; 1.5T延迟。当您发送一个完整的缓冲区时,字符的传输没有任何暂停,特别是在短消息上。
字节之间的> 3.5T静音表示接收时的消息结束最初是在80年代设计的,其中每个字符接收1个中断。它在当时是有道理的,但是现在,在传入的角色和你的软件之间有16个字节的FIFO,USB适配器等,这是行不通的。
相反,请尽可能经常检查收到的消息。确定消息类型,然后确定Modbus RTU消息的长度。一旦你有了长度,检查你收到了多少字符,如果你有足够的字符,你显然已经完成了,否则等待更多。如果字符丢失,请暂停。