【C/C++】轻量级跨平台 开源串口库 CSerialPort

文章目录

1、简介

Qt 的QSerialPort 已经是跨平台的解决方案,但Qt开发后端需要 Qt 的依赖库。为了使 C/C++ 开发的前后端不依赖 Ros、Qt 等工具,找到了一款还不错的开源库CSerialPort。它是一个基于C/C++的轻量级开源跨平台串口类库,可以轻松实现跨平台多操作系统的串口读写,同时还支持C#, Java, Python, Node.js等。

当前版本:4.3.0.230215 on 2023-02-15

官网地址:https://github.com/itas109/CSerialPort

2、支持的平台

  • Windows ( x86, x86_64, arm64 )
  • Linux ( x86, x86_64, arm, arm64/aarch64, mips64el, riscv, s390x, ppc64le )
  • macOS ( x86_64 )
  • Raspberry Pi ( armv7l )
  • FreeBSD ( x86_64 )
  • ...

3、已经支持的功能

1.首先支持windows和linux平台

2.增加通用串口通信协议

3.支持热插拔 - CSerialPortExtend

4.更高效的通知模块 - CSerialPortListener

5.支持其他语言 - C#, Python, Java, Node.js - 详见bindings

6.同步串口通信

7.全新的跨平台串口调试助手 - CommMaster通信大师

8.增加CSerialPort的介绍和使用教程 - CSerialPort教程

9.跨平台操作系统识别库

10.跨平台多线程类库

11.跨平台锁类库

12.跨平台高效定时器类库

4、Linux下使用

$ git clone --depth=1 https://github.com/itas109/CSerialPort.git

$ cd CSerialPort

$ mkdir bin && cd bin

$ cmake ...

$ cmake --build .

运行示例程序(如linux下串口环回测试)

CSerialPort/bin $ ./bin/CSerialPortDemoNoGui

Version: https://github.com/itas109/CSerialPort - V4.3.0.230215

availableFriendlyPorts:

1 - /dev/ttyS0

Please Input The Index Of Port(1 - 2)

1

Port Name: /dev/ttyS0

Open /dev/ttyS0 Success

Count: 1, Length: 29, Str: https://blog.csdn.net/itas109, Hex: 0x68 0x74 0x74 0x70 0x73 0x3A 0x2F 0x2F 0x62 0x6C 0x6F 0x67 0x2E 0x63 0x73 0x64 0x6E 0x2E 0x6E 0x65 0x74 0x2F 0x69 0x74 0x61 0x73 0x31 0x30 0x39

5、使用vcpkg安装CSerialPort

您可以通过vcpkg依赖包管理工具下载和安装CSerialPort

$ git clone https://github.com/Microsoft/vcpkg.git

$ cd vcpkg

$ ./bootstrap-vcpkg.sh

$ ./vcpkg install cserialport

6、交叉编译

  • arm on ubuntu 20.04

$ sudo apt-get install g+±arm-linux-gnueabi

$ cd CSerialPort

$ mkdir bin_arm && cd bin_arm

$ cmake ... -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain_arm.cmake

$ cmake --build .

  • aarch64 on ubuntu 20.04

$ sudo apt-get install g+±aarch64-linux-gnu

$ cd CSerialPort

$ mkdir bin_aarch64 && cd bin_aarch64

$ cmake ... -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain_aarch64.cmake

$ cmake --build .

  • mips64el on ubuntu 20.04

$ sudo apt-get install g+±mips64el-linux-gnuabi64

$ cd CSerialPort

$ mkdir bin_mips64el && cd bin_mips64el

$ cmake ... -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain_mips64el.cmake

$ cmake --build .

  • riscv64 on ubuntu 20.04

$ sudo apt-get install g+±riscv64-linux-gnu

$ cd CSerialPort

$ mkdir bin_riscv64 && cd bin_riscv64

$ cmake ... -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain_riscv64.cmake

$ cmake --build .

7、效果图

示例路径: CSerialPort/examples/CommQT

Tui 终端用户界面

示例路径: CSerialPort/examples/CommTui

No Gui 无界面

示例路径: CSerialPort/examples/CommNoGui

8、基于CSerialPort的应用

8.1、CommMaster通信大师

安装包路径:https://gitee.com/itas109/CommMaster

8.2、CommLite串口调试器

安装包路径:https://github.com/itas109/CommLite

相关推荐
0x3F(小茶)11 小时前
STM32 SPI的5种方向模式
c语言·stm32·单片机·嵌入式硬件
小小龙学IT11 小时前
C++ Placement New 与显式析构:手动对象生命周期管理的艺术
c++·windows·mfc
小保CPP12 小时前
OpenCV C++车型识别2-形状匹配
c++·人工智能·opencv·计算机视觉
冻柠檬飞冰走茶12 小时前
PTA基础编程题目集 7-19 支票面额(C语言实现)
c语言·开发语言·数据结构·算法
开源推荐官13 小时前
本地图切OSS,tigshop开源商城存储驱动切换记录
开源
醉城夜风~13 小时前
手撕 C++ string:从零实现一个简易字符串类
开发语言·c++·算法
nLif13 小时前
进程管道通讯-伪终端方式
c++·windows
颜x小14 小时前
[C#]泛型类与泛型方法
开发语言·c++·c#
caishenzhibiao14 小时前
顺势交易矩阵主图 同花顺期货通指标
java·c语言·c#
Lhan.zzZ14 小时前
深入理解 windeployqt:混合 C++/Qt 项目的打包指南
开发语言·c++·qt