CSerialPort
January 3, 2026 · View on GitHub
CSerialPort是一个基于C++的轻量级开源跨平台串口类库,可以轻松实现跨平台多操作系统的串口读写及自定义协议解析,同时还支持C, C#, Java, Python, Node.js, Electron, Rust等。
Design Principles 设计原则
- 跨平台
- 简单易用
- 高效
- 自定义协议解析
Feature 特性
- 跨平台 windows linux macOS android freebsd
- 同步和异步模式读写
- 自定义协议解析 - IProtocolParser 和 CommNoGuiProtocol
- 串口热插拔通知 - CSerialPortHotPlugListener
- 第三方语言绑定 - C, C#, Java, Python, Node.js, Electron, Rust - 详见bindings
- 使用教程 - CSerialPort教程
- 全新的跨平台串口调试助手 - CommMaster通信大师
Todo List 待处理事项
Long-term Goal 长期目标
- 1.支持现代C++标准
- 2.支持字符间超时和自定义协议解析
- 3.支持原生同步、原生异步和可扩展异步模式
- 4.支持脚本引擎
Short-term Goal 短期目标
- 1.跨平台操作系统识别库
- 2.跨平台多线程类库
- 3.跨平台锁类库
- 4.跨平台高效定时器类库
- 5.跨平台线程池库
- 6.性能测试报告(吞吐量、时延、丢包率)
Latest version 最新版本
Version: 4.3.3.250923
by itas109 on 2025-09-23
Quick Start 快速开始
$ git clone --depth=1 https://github.com/itas109/CSerialPort.git
$ cd CSerialPort
$ mkdir bin && cd bin
$ cmake ..
$ cmake --build .
运行示例程序(如linux下串口环回测试)
CSerialPort/bin $ ./CSerialPortDemoNoGui
[INFO] CSerialPort - OS: Linux, ProductName: Ubuntu 22.04.2 LTS, Arch: x86_64, ProcessorNum: 4, Compiler: gcc(11.4.0), Bit: 64, C++: 201703L, Bindings: , Version: https://github.com/itas109/CSerialPort - v4.3.3.250923
Version: https://github.com/itas109/CSerialPort - v4.3.3.250923
AvailableFriendlyPorts:
1 - /dev/ttyCH341USB0 QinHeng CH340 serial converter 1a86:7523
2 - /dev/pts/0 0 pty terminal
Please Input The Index Of Port(1 - 2)
1
Port Name: /dev/ttyCH341USB0
[INFO] openPort - portName: /dev/ttyCH341USB0, baudRate: 9600, dataBit: 8, parity: 0, stopBit: 0, flowControl: 0, mode: async, readBufferSize:4096(4096), readIntervalTimeoutMS: 0, minByteReadNotify: 1, byteReadBufferFullNotify: 3276
[INFO] openPort - open /dev/ttyCH341USB0. code: 0, message: success
Open /dev/ttyCH341USB0 Success
Code: 0, Message: success
[INFO] writeData - write. len: 5, hex(top100): 3132333435
[INFO] writeData - write. len: 7, hex(top100): 69746173313039
[INFO] commThreadMonitor - write buffer(usedLen 12). len: 12, hex(top100): 313233343569746173313039
[INFO] commThreadMonitor - onReadEvent min read byte. portName: /dev/ttyCH341USB0, readLen: 12
[INFO] readData - read. len: 12, hex(top100): 313233343569746173313039
/dev/ttyCH341USB0 - Count: 1, Length: 12, Str: 12345itas109, Hex: 0x31 0x32 0x33 0x34 0x35 0x69 0x74 0x61 0x73 0x31 0x30 0x39
Install CSerialPort Using Vcpkg 使用vcpkg安装CSerialPort
您可以通过vcpkg依赖包管理工具下载和安装CSerialPort
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh
$ ./vcpkg install cserialport
Cross Compile 交叉编译
- arm on ubuntu 22.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 .
- arm on windows
$ cd CSerialPort
$ mkdir bin_arm && cd bin_arm
$ cmake .. -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain_arm_win32.cmake
$ cmake --build .
- aarch64 on ubuntu 22.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 .
- aarch64 on windows
$ cd CSerialPort
$ mkdir bin_aarch64 && cd bin_aarch64
$ cmake .. -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain_aarch64_win32.cmake
$ cmake --build .
- mips64el on ubuntu 22.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 22.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 .
- mingw64(windows posix thread) on ununtu 22.04
$ sudo apt-get install mingw-w64
$ cd CSerialPort
$ mkdir bin_mingw64 && cd bin_mingw64
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain_mingw64_linux.cmake
$ cmake --build .
Screenshot 截图
Gui 图形用户界面
示例路径: CSerialPort/examples/CommQT

示例路径: CSerialPort/examples/CommElectron

Web用户界面
示例路径: CSerialPort/examples/CommWeb

No Gui 无界面
示例路径: CSerialPort/examples/CommNoGui

Documents 文档
Contacting 联系方式
- Email : itas109@qq.com
- QQ群 : 129518033
Links 链接
CSerialPort-based Applications 基于CSerialPort的应用
1. CommMaster通信大师
- 支持windows/linux/macos/raspberrypi等等
- 支持自定义串口名称
- 支持自定义波特率
- 支持自定义语言
- 支持自定义主题
https://gitee.com/itas109/CommMaster

Donate 捐助
Other branches 其他分支
仅支持windows版本分支 : https://github.com/itas109/CSerialPort/tree/CSerialPort_win_3.0.3
License 开源协议
CSerialPort v3.0.0.171216 - v4.3.1.240204 授权许可为 LGPLv3
CSerialPort v4.3.2.250203 - 最新版授权许可为 LGPLv3 with LGPL-3.0-linking-exception