C++ 之 Asio 库(全面解析)
1 简介
Asio 是一个跨平台的 C++ 库,常用于网络编程、底层的 I/O 编程等 (low-level I/O),其结构框架如下:
2 使用 Asio
2.1 下载
Asio 库分为 Boost 版和 non-Boost 版,后者的下载地址为: http://think-async.com/ ,下载完成后,直接解压到合适位置即可。
2.2 配置
INCLUDEPATH += $$PWD/../../serialport/asio-1.10.8/include DEFINES += ASIO_STANDALONE
1) 使用 Qt 5.9.1,其 .pro 工程文件中,添加如下配置:注意 ASIO_STANDALONE 在 non-Boost 版本中必须带有
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 库(全面解析)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
您可能感兴趣的文章
- 04-02c语言没有round函数 round c语言
- 01-10深入理解C++中常见的关键字含义
- 01-10使用C++实现全排列算法的方法详解
- 01-10APUE笔记之:进程环境详解
- 01-10c++中inline的用法分析
- 01-10用C++实现DBSCAN聚类算法
- 01-10全排列算法的非递归实现与递归实现的方法(C++)
- 01-10C++大数模板(推荐)
- 01-10浅谈C/C++中的static与extern关键字的使用详解
- 01-10深入C/C++浮点数在内存中的存储方式详解
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 01-10SublimeText编译C开发环境设置
- 01-10C#中split用法实例总结
- 04-02jquery与jsp,用jquery
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-11ajax实现页面的局部加载
- 01-10delphi制作wav文件的方法
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 08-05织梦dedecms什么时候用栏目交叉功能?