我正在使用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中支持更高的波特率?
答案 0 :(得分:2)
您可以使用native_handle()
方法获取端口的文件描述符,然后使用tcsetattr()
函数设置任意速度。我怀疑Linux将B1000000
定义为OS X没有的速度的预处理器定义。