#byte #chunks #channel #delimiter #frame #serial #send

serial_frame

通过给定的分隔符,通过通道发送字节数据块

5个不稳定版本

0.3.0 2020年1月21日
0.2.2 2020年1月14日
0.2.1 2020年1月13日
0.2.0 2020年1月13日
0.1.0 2019年12月3日

#1071 in 硬件支持

每月 23 次下载

MIT 许可证

12KB
171

SerialFrame

Latest version License

简单的串行端口帧接收器,异步地通过mpsc通道发送字节数据块。数据块使用选择的分隔符发送。

可用于以异步方式接收串行端口上的行,或接收cobs消息,或从数据块中解析出您需要的任何类型

请参阅示例,以了解仅接收行的示例用法

示例

use serialport::prelude::*;
use simple_logger;

use std::time::Duration;

use serial_frame::{create_line_sender};

fn main() {
    // Setup the serialport to act on
    let serialport: Box<dyn SerialPort> = init();

    // get a Reciever for strings that all end with a newline
    let (rx, linestop) = create_line_sender(serialport).unwrap();

    // Recieve the lines, stop if timeout
    while let Ok(line) = rx.recv_timeout(Duration::from_secs(2)) {
        // Inspect the received line
        println!("line is: {}", line);
    }
    // This will end the thread if it not stopped
    let e = linestop.stop();
    println!("Stop: {:?}", e);
}

fn init() -> Box<dyn SerialPort> {
    simple_logger::init_with_level(log::Level::Debug).unwrap();

    let mut settings: SerialPortSettings = Default::default();
    settings.timeout = Duration::from_millis(100);
    let baudrate = 115200;
    settings.baud_rate = baudrate;
    let serialport = serialport::open_with_settings("/dev/ttyACM0", &settings).unwrap();
    serialport
}

依赖项

~2.5–3.5MB
~73K SLoC