我正在尝试运行一个非常基本的 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);
}
}
}
https://github.com/serialport/serialport-rs/issues/29
也许是同样的问题,有一个PR待处理