Rust串口读取总是空/超时

问题描述 投票:0回答:1

我正在尝试运行一个非常基本的 Rust 程序,该程序打开串行端口并转储以控制台所有数据。然而由于某种原因它总是超时,即什么也没有收到。

我确信串行端口工作正常,因为如果我使用串行工具,我会看到数据传入。我也尝试在 python 中执行此操作,并且它在那里工作。

这是我的代码:

use std::io::{self, Write};
use std::time::Duration;

fn main() {

    let port_name = "COM8";
    let baud_rate = 9600;

    let port = serialport::new(port_name, baud_rate)
        .timeout(Duration::from_millis(100))
        .open();
    match port {
        Ok(mut port) => {
            let mut serial_buf: Vec<u8> = vec![0; 1000];
            println!("Receiving data on {} at {} baud:", &port_name, &baud_rate);
            loop {
                match port.read(&mut serial_buf) {
                    Ok(t) => io::stdout().write_all(&serial_buf[..t]).unwrap(),
                    Err(ref e) if e.kind() == io::ErrorKind::TimedOut => (),
                    Err(e) => eprintln!("{:?}", e),
                }
            }
        }
        Err(e) => {
            eprintln!("Failed to open \"{}\". Error: {}", port_name, e);
            ::std::process::exit(1);
        }
    }
}
rust serial-port
1个回答
0
投票

https://github.com/serialport/serialport-rs/issues/29

也许是同样的问题,有一个PR待处理

© www.soinside.com 2019 - 2024. All rights reserved.