在OS X上为高波特率串行提升ASIO

时间:2014-11-07 04:07:18

标签: c++ macos boost serial-port boost-asio

我正在使用Boost的ASIO类进行串行通信。我想在OS X系统上以1M波特率运行它。每当我尝试将波特率设置为高于115200的标准值时,我都会遇到异常。

boost::asio::serial_port m_port;
baudrate = 1000000;
try {
  m_port.open(serial_port_path);
} catch (boost::system::system_error::exception e) {
  // ...
}

try {
  m_port.set_option(boost::asio::serial_port_base::baud_rate(baudrate));
} catch (boost::system::system_error::exception e) {
  // Tripped here on OS X
}

我正在运行OS X(约塞米蒂),我通过家庭酿造安装了Boost。我在linux虚拟机上测试了我的代码(在我的OS X系统上运行),它运行正常。

有没有办法让Boost在OS X中支持更高的波特率?

1 个答案:

答案 0 :(得分:2)

您可以使用native_handle()方法获取端口的文件描述符,然后使用tcsetattr()函数设置任意速度。我怀疑Linux将B1000000定义为OS X没有的速度的预处理器定义。