1个不稳定版本
0.1.0 | 2023年12月25日 |
---|
#8 在 #reconnect
在 2 个crate中使用
16KB
267 行
使tokio-modbus在连接丢失时更加健壮
这个库是tokio-modbus的层。当modbus调用失败时,它会自动丢弃当前连接并重新连接。这使得它能够应对TCP连接故障,例如,可能由重启mbusd
引起。
这并不是一个完整的重试机制。例如,如果重新连接失败,调用将失败,而不是进行进一步的连接尝试。如果需要多次重试,可以将它们叠加在这个库之上,无需担心重新建立失败的连接,因为每次调用都会自动尝试这样做。
它也不实现任何形式的超时;同样,这也应该叠加。
最后,请注意,一个调用可能会被modbus设备实际接收两次。例如,可能是命令成功接收,但回复未能送达。因此,这个库应该只在调用幂等时使用。
用法
对于简单用例,可以使用TCP/IP的new_tcp_slave
或串行的new_rtu_slave
。后者是仅在需要设置串行端口的设备路径和波特率时的快捷方式。如果需要更改其他选项(例如奇偶校验),请使用new_sync
:它接受一个生产连接的工厂函数。它仅适用于同步连接函数。
对于更复杂的用例,实现SyncConnector
trait来指定如何建立连接(异步)。然后将其实现传递给RobustClient::new_context
。
依赖
~6–18MB
~202K SLoC