16 个版本

使用旧的 Rust 2015

0.4.0 2017年7月2日
0.3.4 2016年6月2日
0.3.3 2016年3月20日
0.3.2 2015年11月6日
0.0.2 2015年3月29日

操作系统 类别下排名 620

Download history 34258/week @ 2024-02-28 37068/week @ 2024-03-06 40347/week @ 2024-03-13 42500/week @ 2024-03-20 42321/week @ 2024-03-27 43882/week @ 2024-04-03 43409/week @ 2024-04-10 42704/week @ 2024-04-17 19593/week @ 2024-04-24 15680/week @ 2024-05-01 15895/week @ 2024-05-08 14306/week @ 2024-05-15 13484/week @ 2024-05-22 13907/week @ 2024-05-29 12513/week @ 2024-06-05 9413/week @ 2024-06-12

每月下载量 51,322
111 包(59 个直接)中使用

MIT 许可证

7KB

Serial

serial 包为 Rust 程序提供对串行端口的访问。串行端口被定义为特质,以便通过自定义实现进行扩展。Unix TTY 设备和 Windows COM 端口默认支持。

兼容性

serial 包与 Windows 以及任何实现了 termios API 的 Unix 操作系统兼容。以下平台已确认兼容

  • Linux (x86_64, armv6l)
  • OS X (x86_64)
  • FreeBSD (amd64)
  • OpenBSD (amd64)
  • Windows (x86_64)

使用方法

Cargo.toml 中将 serial 添加为依赖项

[dependencies]
serial = "0.4"

导入 serial 包及其 serial::prelude 模块。当与串行端口一起工作时,serial::prelude 模块中的特质非常有用,并且它们不太可能与其他包冲突。

要打开串行端口,请使用任何可转换为 OsStr 类型的类型调用 serial::open()。有了打开的串行端口,您可以使用 SerialPort 特质与之交互。通过依赖这些特质,您的代码将支持串行端口的未来实现,包括自定义实现。

extern crate serial;

use std::env;
use std::io;
use std::time::Duration;

use std::io::prelude::*;
use serial::prelude::*;

fn main() {
    for arg in env::args_os().skip(1) {
        let mut port = serial::open(&arg).unwrap();
        interact(&mut port).unwrap();
    }
}

fn interact<T: SerialPort>(port: &mut T) -> io::Result<()> {
    try!(port.reconfigure(&|settings| {
        try!(settings.set_baud_rate(serial::Baud9600));
        settings.set_char_size(serial::Bits8);
        settings.set_parity(serial::ParityNone);
        settings.set_stop_bits(serial::Stop1);
        settings.set_flow_control(serial::FlowNone);
        Ok(())
    }));

    try!(port.set_timeout(Duration::from_millis(1000)));

    let mut buf: Vec<u8> = (0..255).collect();

    try!(port.write(&buf[..]));
    try!(port.read(&mut buf[..]));

    Ok(())
}

交叉编译

交叉编译 serial 包只需要在 --target 选项中为 cargo build 提供目标。以下是为 arm-unknown-linux-gnueabihf (树莓派) 交叉编译的示例

cargo build --target=arm-unknown-linux-gnueabihf

许可证

版权所有 © 2015 David Cuddeback

MIT 许可证 下分发。

依赖项