一个网络和串口全双工通信的c++库

欢迎指正

概述

  • 该库是https://github.com/ZLMediaKit/ZLToolKithttps://github.com/itas109/CSerialPort的集合
  • 这是一个通信库, 包括网络和串口通信
  • 网络包括: TCP客户端、TCP服务端,UDP单播、UDP组播、UDP广播
  • 提供的接口中,均为全双工通信, 支持收发
  • 需要 c++11及以上版本支持
  • 统一通信接口函数,比如,初始化、发送、关闭、获取接收速率、获取发送速率、获取错误信息等接口、设置接收函数接口。这样,方便不同通信类型网络和串口使用同一套接口对上层应用通信
  • 即将 新增的功能: 当通道初始化失败时,自动重连(实际生产中遇到过)直至成功
  • 该库使用目标: 小团体使用
  • 仓库地址:https://gitee.com/mohistH/octtoolkits

目录说明

.
│  CMakeLists.txt	 - 顶层CMake脚本
│                      
├─cmake				- ZL toolkits原有
│      
├─example			- 新增, 用于存放自己封装接口的测试文件
│      
├─src				- 原 ZLToolkits原有
│  │  
│  ├─Communcation	- 新增,用于存放自己封装接口文件
│  │      
│  ├─Network		- ZLToolkits原有
│  │      
│  ├─Poller			- ZLToolkits原有
│  │      
│  ├─SerialPort		- 将Cserialport代码拷贝到这里
│  │      
│  ├─Thread			- ZLToolkits原有
|  |
│  ├─Util			- ZLToolkits原有
│  │      
│  └─win32			- ZLToolkits原有
│          
└─tests				- ZLToolkits原有

接口说明

  • 根据使用习惯,通信接口封装分为: 初始化 init、设置接收函数setOnReadFunc、发送send、关闭shutdown、获取错误信息getLastErrorMsg、获取接收速率recvSpeed、获取发送速率sendSpeed。
  • 一个简单的使用范例 (可在 example/recv.cpp中获取具体使用范例), 以串口为例
...
// 1. 创建通信对象
ISP	sp;

// 2. 设置接收数据函数, 如果不需要接收数据,可省略该步骤
{
	RecvData rd;
	auto onread = std::bind(&RecvData::on_recv_data, &rd, std::placeholders::_1, std::placeholders::_2);
	psp->setOnReadFunc(onread);
}

// 3. 初始化参数赋值
SPInit sp_init;
// 设置波特率
sp_init.baud_ = 115200;
// 设置与哪个串口通信
sp_init.name_ = std::string{"COM10"};
// 设置需要接收的数据帧头是哪个, 如果是需要处理原始数据,这里传递空字符串即可。
sp_init.recv_head_ = std::string{ "01 02" };
// 串口需要接收的数据帧长。
sp_init.recv_len_ = 10;

// 5. 初始化串口(应该检查结果,是否初始化成功)
const init_ret  = sp.init(sp_init);

// 6. 发送数据
const int arr_size = 10;
const char arr[arr_size] = {0};
// 检查发送结果,是否发送成功
const int send_ret = sp.send(arr, arr_size);

// 7. 获取接收速率 bytes/s
const int recv_speed = sp.recvSpeed();

// 8. 获取发送速率, bytes/s
const int send_speed = sp.sendSpeed();

// 9. 获取错误信息
const std::string str_error = sp.getLastErrorMsg();

// 10. 关闭串口
sp.shutdown();

更多使用, 参考 /example/recv.cpp

接口封装说明

  • 因为自己统一了通信接口,将代码放在了/src/Communcationw/icommunication.h和icommunication.cpp中
  • 将持续维护该库
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值