1 个不稳定版本

0.0.1 2024年5月2日

#4#knx

LGPL-3.0-only

82KB
2K SLoC

knx-rust

knx-rust是一个使用Rust编写的库,实现了KNXNet/Ip协议,通过KNX Ip网关或路由器与KNX设备进行通信。库的实现不包含任何io调用(https://sans-io.readthedocs.io/how-to-sans-io.html),以具有最小的运行时要求,使其仅能在嵌入式环境中与tokio、async-std或mio一起使用。

用法

Cargo.toml中将knx-rust作为依赖项添加

[dependencies]
knx-rust = "0.0.1"

您需要确保以下函数定期调用(例如,在您的事件循环中)

  • knx.get_outbound_data()并发送返回的数据到UDP(如果有)。在初始化后或调用knx.sendknx.handle_inbound_messageknx.handle_time_events后可能会有新数据。
  • 当从UDP接收到数据时,需要调用knx.handle_inbound_message(buf)。如果数据包含组通信消息,则该函数将返回并可以进一步处理
  • 需要调用knx.handle_time_events(),下一次在knx.get_next_time_event()定义的时间点。需要在将数据发送到UDP(在knx.get_outbound_data()之后)后更新时间。

除此之外,您可以使用knx.send(group_event)在任何时间将消息发送到总线上。

如何在miotokio中使用该库的示例可以在examples文件夹中找到。

可以使用以下命令执行这些示例

cargo run --example group_tunnel_mio

cargo run --example group_tunnel_tokio

依赖项

~0.4–1MB
~21K SLoC