#ascii #binary #serial #rs232 #serial-communication #zaber

zproto

一个用于在 Rust 中与 Zaber 产品通信的库

9 个版本

0.3.5 2024年6月8日
0.3.4 2023年10月12日
0.3.3 2023年9月30日
0.3.2 2023年8月4日
0.1.1 2022年2月26日

#93 in 硬件支持

Download history 109/week @ 2024-04-27 135/week @ 2024-06-08 3/week @ 2024-06-15 2/week @ 2024-06-29

每月577次下载

MIT 许可证

450KB
9K SLoC

zproto

Zaber 的 ASCII 和二进制协议的 Rust 实现。

此库是非官方的。 Zaber 动态库 是 Zaber 的官方通信库,但截至本文写作,尚无 Rust 绑定。

用法

将以下内容添加到您的 `Cargo.toml

[dependencies]
zproto = "0.3.5"

入门

此库旨在简单但健壮。使用 Zaber 的 ASCII 协议与产品通信看起来可能如下所示

use zproto::{
    ascii::{Port, check, Warning},
    error::Error,
};

fn main() -> Result<(), Error> {
    // Open the port, home device 1, and wait for it to finish.
    let mut port = Port::open_serial("/dev/ttyUSB0")?;
    port.command_reply_with_check(
        (1, "home"),
        // Ignore warnings about it being unhomed.
        check::warning_in(("WR", "WH", Warning::NONE)),
    )?;
    port.poll_until_idle(1)?;

    // Move towards the end of travel and monitor position as it goes.
    // Once the position exceeds 100000, interrupt the motion.
    port.command_reply((1, "move max"))?;
    port.poll_until((1, "get pos"), |reply| {
        let pos: i32 = reply.data().parse().unwrap();
        pos >= 100_000
    })?;
    port.command_reply_with_check((1, "stop"), check::warning_is("NI"))?;
    Ok(())
}

有关使用 Zaber ASCII 或二进制协议与设备通信的更深入介绍,请参阅 asciibinary 模块文档。

示例文件夹中包含一些简单的应用程序。

文档

文档可在 docs.rs 上找到。

Cargo 功能

默认情况下,ASCII 和二进制协议分别通过 asciibinary Cargo 功能启用。但是,如果您只想使用其中之一,例如 ascii,您可以在您的 Cargo.toml 中指定

[dependencies]
zproto = { version = "0.3.5", default-features = false, features = ["ascii"] }

这将仅在编译时包含与 ASCII 协议相关的库部分。

许可证

本项目采用 MIT 许可证

故障排除

  1. 构建时出现关于 libudev 的错误

    此 crate 需要在您的系统上安装 libudev 共享库,某些操作系统默认没有安装。安装库将解决问题。例如,在 Ubuntu 上,可以使用以下命令安装库: sudo apt install libudev-dev

依赖关系

~2MB
~45K SLoC