【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

相关推荐
X54先生(人文科技)1 小时前
ELR-SELLM Edge 神经元网络架构评估报告
人工智能·深度学习·架构·开源
T1mzhou2 小时前
ARM64 Linux 6.10内核启动流程7-ioremap和readl writel
linux·服务器·c语言
小艾.pino2 小时前
ECC 开源项目实战:从原理到落地的技术分享
开源
Keven_112 小时前
算法札记:ACM适用的很骚的C++语法(持续更新)
开发语言·c++
冬奇Lab2 小时前
一天一个开源项目(第212篇):OpenMAIC —— 清华出品的多智能体交互式课堂
人工智能·开源·资讯
mengzhi啊2 小时前
QPluginLoader 动态 DLL 插件版,支持插件之间通信,广播。请求和应答
c++·qt
萧鼎4 小时前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库
ForteScarlet4 小时前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
老赵的博客5 小时前
c++ QT之动态库加载问题
c++·qt
(Charon)6 小时前
【C++】定时器进阶:使用最小堆管理定时任务
c++·算法