# OCTToolkits **Repository Path**: ncnynl/octtoolkits ## Basic Information - **Project Name**: OCTToolkits - **Description**: 这是一个用于c++11及以上版本的工具库, 实现了网络UDP和tcp、串口通信, 接口简单易用 - **Primary Language**: C++ - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-09-10 - **Last Updated**: 2025-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 欢迎指正 ## 概述 - 该库是[https://github.com/ZLMediaKit/ZLToolKit](https://github.com/ZLMediaKit/ZLToolKit)和[https://github.com/itas109/CSerialPort](https://github.com/itas109/CSerialPort)的集合 - 这是一个通信库, 包括网络和串口通信 - 网络包括: TCP客户端、TCP服务端,UDP单播、UDP组播、UDP广播 - 提供的接口中,均为全双工通信, 支持收发 - 需要 c++11及以上版本支持 - 统一通信接口函数,比如,初始化、发送、关闭、获取接收速率、获取发送速率、获取错误信息等接口、设置接收函数接口。这样,方便不同通信类型网络和串口使用同一套接口对上层应用通信 - **即将** 新增的功能: 当通道初始化失败时,自动重连(实际生产中遇到过)直至成功 - 该库使用目标: 小团体使用 ## 目录说明 ``` . │ 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中 - 将持续维护该库