2个稳定版本
1.0.1 | 2020年11月5日 |
---|
#17 in #modbus
350KB
7K SLoC
libmodbus
此crate已重命名为libmodbus。在版本1.0.0之前,crate的名称为libmodbus-rs。
libmodbus的Rust绑定
Libmodbus是一个免费的软件库,用于与遵循Modbus协议的设备发送和接收数据。该crate包含libmodbus库(用C编写)的Rust绑定。与libmodbus本身一样,此crate支持Modbus服务器和客户端的串行端口和以太网连接。
主页 | 文档 | 原始libmodbus文档 | Github仓库 |
此crate基于最新的libmodbus git:master分支。我计划通过Cargo的feature
功能支持不同的libmodbus版本。
使用方法
将依赖项包含到您的Cargo.toml
文件中。
对于稳定版(crates.io)
[dependencies]
libmodbus-rs = "1"
或开发版(github master)
[dependencies]
libmodbus-rs = { git = "https://github.com/zzeroo/libmodbus-rs.git" }
一些原始libmodbus C库的头文件被重新创建为特质(例如ModbusTCP、ModbusRTU、ModbusServer、ModbusClient等)。例如,如果您想构建一个Modbus服务器,在Modbus TCP上下文中,包括以下内容
extern crate libmodbus_rs;
use libmodbus::{Modbus, ModbusServer, ModbusTCP};
examples目录中的示例展示了这一点。
文档
构建libmodbus-rs
libmodbus ffi绑定(libmodbus-sys)使用bindgen构建。Bindgen需要在您的系统上安装Clang 3.9或更高版本。
依赖关系 Archlinux
pacman -S autoconf clang39 git libtool make
依赖关系 Debian-based(例如 Ubuntu)
apt install autoconf build-essential curl clang git-core libtool
请查看 ./ci/docker-archlinux
和 .ci/docker-debian9
下的本地 ci/docker 文件,以获取已知工作状态的最小设置。
有关 bindgen 要求的更多信息,请访问 https://servo.github.io/rust-bindgen/requirements.html
Windows 依赖项
遵循 msys2 指令 https://www.msys2.org
pacman -Syu
然后执行第二个更新步骤
pacman -Su
最后安装 clang
pacman -S mingw64/mingw-w64-x86_64-clang
如果所有依赖项都已解决,请使用 cargo build
编译,或使用 cargo test
运行测试。
git clone https://github.com/zzeroo/libmodbus-rs
cd libmodbus-rs
cargo build
示例
大多数原始 libmodbus 示例都在 Rust 中重现。您可以在本软件包的 examples
目录中找到它们。
有关示例的更多信息,请参阅示例目录中的 README.md。
例如,要启动随机测试服务器/客户端,请使用以下命令
cargo run --example random-test-server
在另一个 shell 中,在服务器启动后启动客户端
cargo run --example random-test-client
许可证
libmodbus-rs
根据 LGPL-2.1 许可证进行分发,这是与 libmodbus 相同的许可证。
链接
- http://libmodbus.org
- https://github.com/stephane/libmodbus.git
- https://github.com/servo/rust-bindgen
- https://doc.rust-lang.net.cn/book/ffi.html
此项目还托管了此处使用的原始 libmodbus 文档。请参阅 http://zzeroo.github.io/libmodbus-rs/libmodbus/libmodbus.html。
依赖项
~2.4–4.5MB
~98K SLoC