面试题答案
一键面试以下是使用Boost.Asio设置串口波特率、数据位、停止位和校验位的代码示例:
#include <iostream>
#include <boost/asio.hpp>
int main() {
try {
// 创建io_context对象
boost::asio::io_context io;
// 创建串口对象
boost::asio::serial_port serial(io, "/dev/ttyUSB0"); // 根据实际情况修改串口设备路径
// 设置波特率
serial.set_option(boost::asio::serial_port_base::baud_rate(9600));
// 设置数据位
serial.set_option(boost::asio::serial_port_base::character_size(8));
// 设置停止位
serial.set_option(boost::asio::serial_port_base::stop_bits(boost::asio::serial_port_base::stop_bits::one));
// 设置校验位
serial.set_option(boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none));
std::cout << "串口设置成功" << std::endl;
} catch (std::exception& e) {
std::cerr << "异常: " << e.what() << std::endl;
}
return 0;
}
在上述代码中:
boost::asio::serial_port_base::baud_rate(9600)
设置波特率为9600。boost::asio::serial_port_base::character_size(8)
设置数据位为8位。boost::asio::serial_port_base::stop_bits(boost::asio::serial_port_base::stop_bits::one)
设置停止位为1位。boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none)
设置校验位为无校验。
注意:
- 上述代码中串口设备路径
/dev/ttyUSB0
需根据实际使用的串口设备进行修改,在Windows系统下可能是COM1
等类似形式。 - 实际应用中,还需添加错误处理等完善代码逻辑。