【C/C++】轻量级跨平台 开源串口库 CSerialPort
文章目录
- 1、简介
- 2、支持的平台
- 3、已经支持的功能
- 4、Linux下使用
- 5、使用vcpkg安装CSerialPort
- 6、交叉编译
- 7、效果图
- 8、基于CSerialPort的应用
- 8.1、CommMaster通信大师
- 8.2、CommLite串口调试器
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
相关文章:
【C/C++】轻量级跨平台 开源串口库 CSerialPort
文章目录 1、简介2、支持的平台3、已经支持的功能4、Linux下使用5、使用vcpkg安装CSerialPort6、交叉编译7、效果图8、基于CSerialPort的应用8.1、CommMaster通信大师8.2、CommLite串口调试器 1、简介 Qt 的QSerialPort 已经是跨平台的解决方案,但Qt开发后端需要 Q…...
大创项目推荐 深度学习图像修复算法 - opencv python 机器视觉
文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步:将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…...
嵌入式系统复习--基于ARM的嵌入式程序设计
文章目录 上一篇编译环境ADS编译环境下的伪操作GNU编译环境下的伪操作ARM汇编语言的伪指令 汇编语言程序设计相关运算操作符汇编语言格式汇编语言程序重点C语言的一些技巧 下一篇 上一篇 嵌入式系统复习–Thumb指令集 编译环境 ADS/SDT IDE开发环境:它由ARM公司开…...
【C++入门到精通】异常 | 异常的使用 | 自定义异常体系 [ C++入门 ]
阅读导航 引言一、C异常的概念二、异常的使用1. 异常的抛出和捕获(1)throw(2)try-catch(3)catch(. . .)(4)异常的抛出和匹配原则(5)在函数调用链中异常栈展开…...
NX二次开发 Block UI 指定方位控件的应用
一、概述 NX二次开发中一般都是多个控件的组合,这里我首先对指定方位控件进行说明并结合选择对象控件,具体如下图所示。 二、实现功能获取方位其在选择面上原点的目标 2.1 在initialize_cb()函数中进行初始化,实现对象选择过滤面 //过滤平…...
2024年【R2移动式压力容器充装】模拟考试及R2移动式压力容器充装实操考试视频
题库来源:安全生产模拟考试一点通公众号小程序 2024年【R2移动式压力容器充装】模拟考试及R2移动式压力容器充装实操考试视频,包含R2移动式压力容器充装模拟考试答案和解析及R2移动式压力容器充装实操考试视频练习。安全生产模拟考试一点通结合国家R2移…...
数仓工具—Hive进阶之StorageHandler(23)
Storage Handler 引入Storage Handler,Hive用户使用SQL的方式读写外部数据源, 例如ElasticSearch、 Kafka、HBase等数据源的查询对非专业开发是有一定门槛的,借助Storage Handler,他们有了一种方便快捷的手段查询数据,Storage Handler作为Hive的存储插件,我们需要的时候直…...
科技创新创业
科技创新创业是一个涉及多个方面的过程,主要包括以下几个方面: 创意产生:创业的起始点通常是一个新的创意或想法,这可能是一个新的产品、服务或技术的概念。这个创意需要独特且具有商业潜力。市场调研:一旦有了创意&a…...
高校电力能耗监测精细化管理系统,提升能源利用效率的利器
电力是高校不可离开的重要能源,为学校相关管理人员提供在线用能查询统计等服务。通过对学校照明用电、空调用电等数据的采集、监控、分析,为学校电能管理制定合理的能源政策提供参考。同时,也可以培养学生的节能意识,学校后勤电力…...
Java_Swing程序设计
swing组件允许编程人员在跨平台时指定统一的外观和风格。 Swing组件通常被称为轻量级组件, JFrame在程序中的语法格式: JFrame jfnew JFrame(title); Container containerjf.getContentPane(); jf:JFrame类的对象 container:Container类的对象。 J…...
ZeroBind:DTI零样本预测器
现有的药物-靶点相互作用(DTI)预测方法通常无法很好地推广到新的(unseen)蛋白质和药物。 在这项研究中,作者提出了一种具有子图匹配功能的蛋白质特异性元学习框架 ZeroBind,用于根据其结构预测蛋白质-药物相…...
Win10子系统Ubuntu实战(一)
在 Windows 10 中安装 Ubuntu 子系统(Windows Subsystem for Linux,简称 WSL)有几个主要的用途和好处:Linux 环境的支持、跨平台开发、命令行工具、测试和验证、教育用途。总体而言,WSL 提供了一种将 Windows 和 Linux…...
[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-2(3) 质量刚体的在坐标系下运动
本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…...
云计算历年题整理
目录 第一大题 第一大题HA计算 给出计算连接到EC2节点的EBS的高可用性(HA)的数学公式,如场景中所述;计算EC2节点上的EBS的高可用性(HA);场景中80%的AWS EC2节点用于并行处理,总共有100个虚拟中央处理单元(vCPUs)用于处理数据&a…...
2401vim,vim重要修改更新大全
原文 2023 更好的UTF-16支持 添加strutf16len()和utf16idx(),并在byteidx(),byteidxcomp()和charidx()中添加utf16标志,在内置.txt文档中. 添加crypymethod xchacha20v2 与xchacha20基本相同,但更能抵御libsodium的变化. 2022 添加"smoothscroll" 用鼠标滚动…...
安卓多用户管理之Userinfo
目录 前言Userinfo----用户信息1.1 属性1.2 构造器1.3 信息的判断及获取方法1.3.1 获取默认用户类型1.3.2 基础信息判断 1.4 序列化部分 总结 前言 UserManagerService内部类UserData中有一个Userinfo类型的info参数,在UserData中并未有所体现,但在后续…...
JavaScript-流程控制-笔记
1.流程语句的分类 顺序结构 分支结构 循环结构 2.if语句 1)if结构 if( 条件 ){ // 条件成立执行的代码 } 2)if else 结构 if( 条件 ){ // 条件成立执行的代码 }else{ // 条件不成…...
springboot + vue3实现增删改查分页操作
springboot vue3实现增删改查分页操作 环境最终实现效果实现功能主要框架代码实现数据库后端前端 注意事项 环境 jdk17 vue3 最终实现效果 实现功能 添加用户,禁用,启用,删除,编辑,分页查询 主要框架 后端 spri…...
leetcode01-重复的子字符串
题目链接:459. 重复的子字符串 - 力扣(LeetCode) 一般思路: 如果存在k是S的字串,记k的长度为s,S的长度为n,则一定有n是s的倍数,且满足对于j∈[s,n],一定存在s[j]s[j-s]; …...
目标检测数据集 - 夜间行人检测数据集下载「包含VOC、COCO、YOLO三种格式」
数据集介绍:夜间、低光行人检测数据集,真实场景高质量图片数据,涉及场景丰富,比如夜间街景行人、夜间道路行人、夜间遮挡行人、夜间严重遮挡行人数据;适用实际项目应用:公共场所监控场景下夜间行人检测项目…...
AI智能体规划框架skill-daydreaming:让AI像人一样思考与执行复杂任务
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫“skill-daydreaming”,作者是regiep4。光看这个名字,你可能觉得有点玄乎——“技能白日梦”?这到底是干嘛的?作为一个在AI和自动化工具领域折腾了十多年…...
基于本地LLM与Whisper的沉浸式语音编程环境搭建指南
1. 项目概述:当语音输入遇上沉浸式编程 最近在GitHub上看到一个挺有意思的项目,叫 voice-typing-vibe-coding 。光看名字,你可能会觉得这又是一个语音转代码的工具,但实际体验下来,我发现它的核心远不止“打字”那么…...
NotebookLM企业许可陷阱全解析,合同里没写的5个自动续费条款正在吞噬你的IT预算
更多请点击: https://intelliparadigm.com 第一章:NotebookLM定价性价比分析 NotebookLM 是 Google 推出的面向研究与知识整合的 AI 笔记工具,其核心价值在于对用户上传文档(PDF、TXT 等)进行语义理解并生成上下文精准…...
抠图opencv有现成的开源DNN库
OpenCV 本身并没有像“专门用于抠图(图像分割/抠前景)”的 DNN 模型库,但它可以直接使用一些流行的 语义分割/实例分割 模型来完成抠图。这里我给你梳理一下思路和方案:1️⃣ OpenCV DNN 支持的分割模型OpenCV 的 dnn 模块可以加载…...
MAC地址失效下基于射频指纹的WiFi设备识别技术
1. 项目概述:当MAC地址失效时如何识别设备在当今的智慧城市和物联网环境中,WiFi设备识别技术面临着前所未有的挑战。传统依赖MAC地址的识别方法正逐渐失效——现代移动设备普遍采用MAC地址随机化技术,每次发送探测请求时都会生成虚拟MAC地址。…...
数字孪生在智慧建筑中的应用案例
1. 香港 The Henderson(超高层甲级写字楼) 亮点:7D BIM 数字孪生全生命周期平台,首个 “设计 运行” 双标识智慧建筑。 做法:全楼 1:1 BIM 建模,接入 26,000 实时数据点(机电、能耗、环境、安…...
3步解锁自动化:Elsevier Tracker智能追踪工具完全指南
3步解锁自动化:Elsevier Tracker智能追踪工具完全指南 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 在科研投稿的漫长等待中,每一次手动刷新Elsevier投稿系统都像是在黑暗中摸索。Elsevier…...
深度学习优化算法(二)—— SGD + Momentum + Nesterov(三十四)
1. 定位导航 第 33 篇讲了为什么训练困难(病态、鞍点、梯度爆炸)。本篇正式介绍解决方案的第一波——三个经典优化算法: 算法 关键思想 年代 SGD 随机梯度估计 + 学习率衰减 1951(Robbins-Monro) Momentum 累积梯度方向加速 1964(Polyak) Nesterov 先"前瞻"再…...
JS如何获取元素高度
在前端开发中,获取元素高度是最基础也是最常用的操作之一。本文将详细介绍 原生JavaScript 和 jQuery 中获取元素高度的各种方法,帮你彻底搞懂它们的区别! 📖 目录 原生JavaScript获取高度jQuery获取高度各方法对比实际应用场景常…...
Windows风扇控制终极指南:如何用Fan Control免费软件实现智能散热管理
Windows风扇控制终极指南:如何用Fan Control免费软件实现智能散热管理 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Git…...
