7 个不稳定版本 (3 个破坏性更新)
使用旧的 Rust 2015
0.8.3 | 2017年12月21日 |
---|---|
0.8.2 | 2017年12月14日 |
0.6.1 | 2017年11月8日 |
0.5.8 | 2017年10月20日 |
0.4.3 | 2017年5月15日 |
#19 in #modbus
258 每月下载量
345KB
6.5K SLoC
libmodbus-rs
libmodbus 的 Rust 绑定
这个crate是一个没有active bindgen的简化版本!我需要这个版本,因为我们的构建系统无法提供rust和libclang。请不要在生产环境中使用并期待异常行为。
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 = "0.6"
或开发版(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_rs::{Modbus, ModbusServer, ModbusTCP};
examples目录中的示例展示了这一点。
文档
构建 libmodbus-rs
libmodbus ffi绑定(libmodbus-sys)使用 bindgen 构建。bindgen需要在您的系统上安装Clang 3.9或更高版本。
Archlinux 依赖项
pacman -S autoconf clang39 git libtool make
基于Debian的依赖项(例如Ubuntu)
apt-get install autoconf build-essential curl clang-3.9 git-core libtool
请查看 ./ci/docker-archlinux
和 .ci/docker-debian9
下的本地 ci/docker 文件,以获取已知工作状态的、最小的设置。
有关 bindgen 的更多要求信息,请访问 https://servo.github.io/rust-bindgen/requirements.html
如果所有依赖都已解决,请使用 cargo build
进行编译,或者使用 cargo test
运行测试。
git clone https://github.com/zzeroo/libmodbus-rs
cd libmodbus-rs
cargo build
示例
所有原始的 libmodbus 示例都已在 Rust 中重现。您可以在该包的 examples
目录中找到它们。
有关示例的更多信息,请参阅 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。
依赖关系
~1.7–4MB
~66K SLoC