[英]How to use 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
特别是:
使用MSVC或Borland C ++,您可能希望将-DBOOST_DATE_TIME_NO_LIB和-DBOOST_REGEX_NO_LIB添加到项目设置中,以分别禁用Boost.Date_Time和Boost.Regex库的自动链接。 或者,您可以选择构建这些库并链接到它们
如果您不希望依赖于其他升级库,那么您可以从这里使用非升压(我认为是相同的asio)库: http : //think-async.com/
对于其他文档的来源,请参阅SO上的这个问题: 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));
}
}
阅读以前关于SO的一些Boost.Asio问题。 您将对使用此库时使用的一些技术有所了解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.