Boost串口通信第一课 boost::asio::serial_port基本使用
boost库有一个asio,支持串口通信。
步骤:
1、产生一个boost::asio::io_service(前摄模式,类似于完成端口,不过,可以针对不同IO对象)
2、构造一个boost::asio::serial_port,有两种方法:
(一)boost::asio::serial_port m_serialPort(m_IoService, "COM1");
(二)boost::asio::serial_port m_serialPort(m_IoService);
m_serialPort.open("COM1");
注意这种方式打开,如果串口没有准备好,会导致程序抛异常,导
5b4
致程序崩溃,所以应该要try{} catch包含,或者使用如下的方式
boost::system::error_code ec;
serial_port sp(iosev);
m_serialPort.open("COM1", ec);
if (ec) return;
或者
try
{
boost::asio::serial_port m_serialPort(m_IoService);
m_serialPort.open("COM1"); s
}
catch (exception& err)
{
}
3、设置串口参数:波特率、奇偶校验 位、停止位、字符大小和流量控制,通过set_option方法
boost::asio::serial_port::baud_rate 波特率
boost::asio::serial_port::parity 奇偶校验,可以为serial_port::parity::none / odd / even。
boost::asio::serial_port::flow_control 流量控制, 可以为serial_port::flow_control::type,enum类型,可以是none software hardware
boost::asio::serial_port::stop_bits 停止位, 可以为serial_port::stop_bits::one /onepointfive /two
boost::asio::serial_port::character_size 字符大小
4、数据读写
read_some
write_some
async_read_
16c8
some
async_write_some
5、同步读取例子
io_service iosev;
boost::system::error_code ec;
serial_port sp(iosev);
sp.open("COM1", ec);
if (ec) return;
sp.set_option(serial_port::baud_rate(9600));
sp.set_option(serial_port::flow_control(serial_port::flow_control::none));
sp.set_option(serial_port::parity(serial_port::parity::none));
sp.set_option(serial_port::stop_bits(serial_port::stop_bits::one));
sp.set_option(serial_port::character_size(8));
std::string strCompleteMsg;
boost::asio::streambuf content_sb;
int bytes = 0;
while (1)
{
strCompleteMsg = "";
bytes = 0;
while (strCompleteMsg.find("\r\n") == std::string::npos)
{
bytes += boost::asio::read(sp, content_sb, boost::asio::transfer_exactly(1), ec);
if (ec) break;
boost::asio::streambuf::const_buffers_type cont_bufs = content_sb.data();
strCompleteMsg = std::string(boost::asio::buffers_begin(cont_bufs), boost::asio::buffers_begin(cont_bufs) + bytes);
}
}
- C++ boost::asio::serial_port 串口通信类 使用 封装
- C++ boost::asio::serial_port 串口通信类 使用 封装 [大三四八九月实习]
- boost asio serial_port 读写串口
- boost::asio::serial_port 串口编程
- serialPort基本属性与使用(串口)——C#
- boost::asio::serial_port set RTS DTS
- boost::asio基本使用
- boost asio serial_port 读写串口
- error C2039: 'serial_port' : is not a member of 'boost::asio'
- boost asio serial_port
- (转)使用Boost.Asio编写通信程序
- PocoDataMySQL与Boost::asio共同使用时出现“用户回调期间未处理异常”解决方法
- 【Boost】boost库asio详解5——resolver与endpoint使用说明
- 使用Boost.Asio编写通信程序
- Boost.Asio的使用技巧
- Boost.asio的简单使用(timer,thread,io_service类)
- C# SerialPort使用方法 .
- boost::asio::io_service和io_service::work和boost::thread_group配合使用
- boost::regex的基本使用方法和编码支持
- Boost.Interprocess使用手册翻译之三:一些基本解释 (Some basic explanations)