小编Sha*_*ver的帖子

如何在 Rust 的多线程中使用串口?

我正在尝试在 Linux 上读取和写入我的串行端口以与微控制器通信,我正在尝试在 Rust 中这样做。

在使用 C++ 或 Python 进行开发时,我的正常模式是有两个线程:一个定期通过串行发送请求,另一个从缓冲区读取字节并处理它们。

在 Rust 中,我在使用串行板条箱时遇到了借用检查器的问题。这对我来说是有道理的,但我不确定在 Rust 中设计异步通信接口会是什么样子。这是我的源代码片段:

let mut port = serial::open(&device_path.as_os_str()).unwrap();
let request_temperature: Vec<u8> = vec![0xAA];

thread::spawn(|| {
    let mut buffer: Vec<u8> = Vec::new();
    loop {
        let _bytes_read = port.read(&mut buffer);
        // process data
        thread::sleep(Duration::from_millis(100));
    }
});

loop {
    port.write(&request_temperature);
    thread::sleep(Duration::from_millis(1000));
}
Run Code Online (Sandbox Code Playgroud)

在 Rust 中有两个线程持有可变资源的情况下,如何模拟此功能?我知道因为这个特定的例子可以在单个线程中完成,但我正在考虑一个最终的更大的程序,这最终会是多个线程。

serial-port rust borrow-checker

2
推荐指数
1
解决办法
771
查看次数

标签 统计

borrow-checker ×1

rust ×1

serial-port ×1