Asio 是一个跨平台的 C++ 库,常用于收集编程、底层的 I/O 编程等 (low-level I/O),其构造框架以下:
2 运用 Asio
2.1 下载
Asio 库分为 Boost 版和 non-Boost 版,请到官网下载。
2.2 设置
1) 运用 Qt 5.9.1,其 .pro 工程文件中,增加以下设置:注重 ASIO_STANDALONE 在 non-Boost 版本中必需带有
INCLUDEPATH += $$PWD/../../serialport/asio-1.10.8/includeDEFINES += ASIO_STANDALONE
2)运用 VS 2015,则 ASIO_STANDALONE 设置以下所示:
2.3 代码示例
下面是一个简朴的串口通讯例子,重要步骤为: 建立串口 --> 设置参数 --> 读写数据 --> 开启事宜轮回
#include <functional>#include "asio.hpp"#include <QDebug>using namespace asio;// 存储吸收到的数据char kBuf[16];// 声明回调函数void PrintBuf();int main() { // 串口 COM1 io_service iosev; serial_port port(iosev, "COM1"); // 参数设置:波特率、流控、奇偶校验、住手位、数据位 port.set_option(serial_port::baud_rate(115200)); port.set_option(serial_port::flow_control(serial_port::flow_control::none)); port.set_option(serial_port::parity(serial_port::parity::none)); port.set_option(serial_port::stop_bits(serial_port::stop_bits::one)); port.set_option(serial_port::character_size(8)); // 向串口写数据 write(port, buffer("Hello Asio", 16)); // 从串口读数据(异步) port.async_read_some(buffer(kBuf),std::bind(PrintBuf)); // 开启事宜轮回 iosev.run(); }// 打印吸收的数据void PrintBuf() { qDebug() << kBuf; }
3 DB9 串口
当运转上面顺序时,会发明个题目:顺序先向串口 COM1, 发送 / 写入 了 "Hello Asio” 的数据,然后又去 收取 / 读出 数据,这关于一个串口而言,是不会收到数据的。
台式机背面,DB9 串口引脚的编号以下:
个中,2 --> RxD,是吸收数据的管脚;3 --> TxD,是发送数据的管脚。
为了上面的顺序能够胜利运转,能够在运转顺序之前,将 2脚 和 3脚 短接,如许,则既能够发送数据,也能够收取数据了
4 假造串口
假如运用笔记本的话,平常没有串口,这时候有两种计划:
一是,运用 USB 转串口数据线,并装置响应的驱动,便能够和带串口的装备举行通讯了;
二是,运用假造串口软件,建立假造串口,比方,Configure Virtual Serial Port Driver
再合营 串口调试东西,便可天真的举行串口顺序的调试
以上就是C++ 之 Asio 库的细致内容,更多请关注ki4网别的相干文章!