最小 boost::asio::serial_port 读取 (read_some) 示例

以下示例展示如何初始化 boost::asio serial_port,设置其波特率、校验位和停止位,然后在循环中从中读取数据,并将数据原样打印到 stdout。

serial_read_example.cpp
#include <boost/asio.hpp>
#include <iostream>

#define BUFSIZE 256

int main() {
    boost::asio::io_service io;
    // 打开串口
    boost::asio::serial_port serial(io, "/dev/ttyUSB0");

    // 配置基本串口参数:115.2kBaud, 8N1
    serial.set_option(boost::asio::serial_port_base::baud_rate(115200));
    serial.set_option(boost::asio::serial_port_base::character_size(8 /* data bits */));
    serial.set_option(boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none));
    serial.set_option(boost::asio::serial_port_base::stop_bits(boost::asio::serial_port_base::stop_bits::one));

    // 在循环中读取数据并复制到 stdout
    while(true) {
        char data[BUFSIZE];
        size_t n = serial.read_some(boost::asio::buffer(data, BUFSIZE));
        // 将数据写入 stdout
        std::cout.write(data, n);
    }
}

有关还展示如何打开串口的更完整示例,请参阅如何打开和初始化 boost::asio::serial_port


Check out similar posts by category: Boost, C/C++