rust - 如何在 Rust 的串行端口箱中使用 read_line 函数
问题描述
我正在使用树莓上的串口板条箱。给定的例子port.read
工作正常。但是port.read_to_end
还是port.read_to_string
不起作用,我会超时。任何人都可以解释这种行为吗?这两个函数读取所有字节,直到 EOF。我正在发送带有空终止的测试字符串。
我对read_line
功能更感兴趣。但这并不直接与 serialport crate 支持,是吗?我可以为此使用 BufRead 特征吗?
解决方案
这是一个最小的例子read_line
。在 TX 和 RX 连接时工作。
use serialport;
use std::time::Duration;
use std::io::BufReader;
use std::io::BufRead;
fn main() {
let mut serial_port = serialport::new("/dev/serial0", 9600)
.timeout(Duration::from_millis(1000))
.open()
.expect("Failed to open serial port");
let output = "This is a test.\n".as_bytes();
serial_port.write(output).expect("Write failed!");
serial_port.flush().unwrap();
let mut reader = BufReader::new(serial_port);
let mut my_str = String::new();
reader.read_line(&mut my_str).unwrap();
println!("{}", my_str);
}
推荐阅读
- node.js - 为相同的登录请求获取 3 个输出
- html - 随着半径的增加,如何实现边框变亮?
- google-admin-sdk - Google Drive 的 Google admin sdk 不返回最新结果
- css - CSS Grid - 删除底部多余的行
- javascript - 如何返回 axios get value 而不是 [object Promise]?
- kubernetes - 需要编辑 pod 以允许在不更改 netpol 的情况下与其他 pod 通信
- python - 如何在 Scrapy 中更改过期的 cookie
- intellij-idea - 如何在 Jetbrains 产品中更改电力线字形的颜色
- design-patterns - 微服务设计:改变数据需求或模式
- tcp - 请求中止,Apache2,Pm2,强大