最小 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
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow