如何使用Boost.Asio c?
我会尝试使用该库在多个平台上使用套接字Boost.Asio c.
我在这里下载了最新版本: http://sourceforge.net/projects/boost/files/boost/1.46.1/ 但是现在我在代码中使用了什么? 解决方法
你如何使用它取决于你想做什么,;-).
文档可在此处找到: http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio.html 您会发现许多应该满足您需求的示例. 对于构建,您应该注意,库依赖性取决于您是在Windows还是Linux上运行.看这里 http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/using.html 特别是:
如果您不希望依赖于其他boost库,那么您可以从这里使用非boost(我认为是相同的asio)库:http://think-async.com/ 对于其他文档的来源,请参阅SO:Best documentation for Boost:asio?上的这个问题 例如,要打开串口,您可能会编写如下内容: /** Manage serial connections.*/ class serial_manager { boost::asio::io_service m_io_service; std::string m_name; const unsigned int m_baud_rate; const enum flow_control::type m_flow_control; const enum parity::type m_parity; const enum stop_bits::type m_stop_bits; const unsigned int m_char_size; boost::asio::serial_port m_SerialPort; boost::system::error_code m_error; public: /** A constructor. * @param name The dvice name,for example "COM1" (windows,or "/dev/ttyS0" (linux). * @param baud_rate The baud rate. * @param flow_control The flow control. Acceptable values are flow_control::none,flow_control::software,flow_control::hardware. * @param parity The parity of the connection. Acceptable values are parity::none,parity::even,parity::odd. * @param stop_bits The number of stop bits. Acceptable values are stop_bits::one,stop_bits::one_point_five,stop::bits::two * @param char_size The number of characters in connection. */ serial_manager(const std::string& name,const unsigned int& baud_rate = 19200,const enum flow_control::type& flow_control = flow_control::none,const enum parity::type& parity = parity::none,const enum stop_bits::type& stop_bits = stop_bits::one,const unsigned int& char_size = 8 ) ; void open(); }; void serial_manager::open() { if (!m_SerialPort.is_open()) { m_SerialPort.open(m_name,m_error); if (m_error == boost::system::errc::no_such_file_or_directory ) { //for example you tried to open "COM1" on a linux machine. //... handle the error somehow } m_SerialPort.set_option(boost::asio::serial_port::baud_rate(m_baud_rate)); m_SerialPort.set_option(boost::asio::serial_port::flow_control(m_flow_control)); m_SerialPort.set_option(boost::asio::serial_port::parity(m_parity)); m_SerialPort.set_option(boost::asio::serial_port::stop_bits(m_stop_bits)); m_SerialPort.set_option(boost::asio::serial_port::character_size(m_char_size)); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |