RT-Thread-packages / freemodbus

A Modbus ASCII/RTU and TCP implementation
Other
227 stars 101 forks source link

[fix] Hosts should not wait forever for events to arrive #9

Closed whj4674672 closed 3 years ago

whj4674672 commented 3 years ago
  1. 主机不应该使用 forever 的方式去等待事件的到来,这样会导致主机阻塞。主机作为 modbus 协议中的通讯发起者,不能出现阻塞的情况,如果网络中有一个从机的响应不正常,主机的阻塞将导致整个网络瘫痪。主机该返回超时时一定要返回超时。
  2. 增加 switch case 中的 default 。这里是 or 的方式去等待事件,极限情况下是可能出现同时受到多个事件,同时收到多个事件将导致 switch case 解析失败,在该语句中只有一种情况是表示接受成功的,只要接收到2个事件,至少有一个事件是错误事件,因为没有 default 的存在,这里依然会返回 eErrStatus = MB_MRE_NO_ERR
whj4674672 commented 3 years ago

@armink @Guozhanxin