【发布时间】:2015-06-03 11:21:36
【问题描述】:
我有一个串口设备,我想在通信过程中控制 RTS 和 DTR 信号。基本上整个通信都是基于这两个信号。有没有办法在 linux 下使用 boost::asio::serial_port 实现来做到这一点。有什么方法可以让 boost 使用的底层结构来控制这两个信号?
我在 boost/asio/impl/serial_port_basis.ipp 下找到了
boost::system::error_code serial_port_base::flow_control::load(
const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
{
#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__)
...
#else
if (storage.c_iflag & (IXOFF | IXON))
{
value_ = software;
}
# if defined(_BSD_SOURCE)
else if (storage.c_cflag & CRTSCTS)
{
value_ = hardware;
}
# elif defined(__QNXNTO__)
else if (storage.c_cflag & IHFLOW && storage.c_cflag & OHFLOW)
{
value_ = hardware;
}
# endif
else
{
value_ = none;
}
#endif
ec = boost::system::error_code();
return ec;
}
boost 还定义了 #define BOOST_ASIO_OPTION_STORAGE termios
【问题讨论】:
-
你可以别看了,Boost只包装了驱动程序的握手控制。自己控制它们需要特定于平台的后备代码。
标签: c++ boost serial-port boost-asio flow-control