以同步方式使用全双工串口与ASIO(或其他库)

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

我正在开发一个项目,需要通过串行端口与设备进行通信。我一直在考虑使用 ASIO 库来处理通信,但我有几个问题:

  1. 串行端口本质上是全双工的吗?我可以同时读取和写入端口而不出现任何问题吗?
  2. 如果我使用 ASIO,我可以在不使用互斥锁的情况下从两个不同的线程对同一个 asio::serial_port 对象执行同步读取和写入吗?具体来说,我想要一个线程专门用于阅读,另一个线程专门用于写作。需要注意的是,只有一个线程会写,一个线程会读,所以不可能有多个读或写,但同时读和写应该是可以的。
  3. 如果 ASIO 不是最佳选择,您是否有其他推荐的 C++ 同步串行端口通信库?

现在,我使用互斥体保护 asio::serial_port,因此只能发生一次读取或写入。 我正在以同步方式使用 ASIO。

c++ serial-port boost-asio asio full-duplex
1个回答
0
投票

Asio 已经线程化了。它使用线程来防止阻塞,这就是该库的目的(异步输入输出)。 RS232 按照设计是全双工的。该协议在端口上同时处理发送和接收。

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