2个稳定版本

1.0.1 2020年11月5日

#17 in #modbus

LGPL-2.1

350KB
7K SLoC

C 4.5K SLoC // 0.1% comments Rust 1K SLoC // 0.0% comments Visual Studio Project 456 SLoC Automake 162 SLoC JavaScript 121 SLoC // 0.2% comments Shell 84 SLoC // 0.2% comments Bitbake 45 SLoC Batch 37 SLoC M4 19 SLoC // 0.2% comments Visual Studio Solution 19 SLoC

libmodbus

此crate已重命名为libmodbus。在版本1.0.0之前,crate的名称为libmodbus-rs。

libmodbus的Rust绑定

Libmodbus是一个免费的软件库,用于与遵循Modbus协议的设备发送和接收数据。该crate包含libmodbus库(用C编写)的Rust绑定。与libmodbus本身一样,此crate支持Modbus服务器和客户端的串行端口和以太网连接。

Crates.io版本   构建状态   构建状态   覆盖率状态

主页 |   文档 |   原始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目录中的示例展示了这一点。

文档

文档(crates.io)

文档(master)

构建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 相同的许可证。

链接

此项目还托管了此处使用的原始 libmodbus 文档。请参阅 http://zzeroo.github.io/libmodbus-rs/libmodbus/libmodbus.html

依赖项

~2.4–4.5MB
~98K SLoC