【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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/334394.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java泛型:灵活多变的类型参数化工具

👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、泛型1、什么是泛型2、泛型的语法 二、泛型类的使用1、泛型类的语法2、泛型如何编译的2.1、擦除机制2.2、为什么不能实例化泛…

低代码开发平台在工业领域的应用场景

随着科技的不断发展,低代码开发平台在工业场景中的应用越来越广泛。低代码开发平台通过提供可视化的界面和预构建的模块,使得开发人员能够快速地构建应用程序,而不需要编写大量的代码。这种技术的应用,不仅可以提高开发效率&#…

7+单细胞+空转+实验验证,如何根据内容开展相关经验给你启发

导语 今天给同学们分享一篇生信文章“CD8 tissue-resident memory T cells induce oral lichen planus erosion via cytokine network”,这篇文章发表在Elife期刊上,影响因子为7.7。 结果解读: 单细胞RNA测序揭示了具有不同临床亚型的OLP的细…

oracle11范围表空间实例

1.表分区:范围分区,散列分区,列表分区,组合分区,inetrval分区 范围分区:商品零售表,按照销售日期所在的季度创建4个分区 --先建立表空间:临时表空间是不可以存放数据的,…

网络原理OSI

目录 一、应用层 1、功能 2、协议的分类 二、UDP原理(传输层) 1、协议端格式 2、格式解释 三、TCP原理(传输层) 1、协议端格式 2、长度 3、可靠传输 (1)确认应答 (2)超时…

Java方法用法及解析

在 Java 中,方法(Method)是用于执行特定任务的代码块。它是一个函数,用于封装一段可重复执行的代码,并可以被其他代码调用。方法定义了一系列操作的步骤,并提供了一种结构化和可复用的方式来组织和执行这些…

docker jenkins NB: JAVA_HOME should point to a JDK not a JRE

jenkins java编译错误: 3.5.4/conf/settings.xml The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE Build step ‘Invoke top-level Maven t…

【Qt打包】Qt打包生成可安装exe文件

第三方打包 gitee 项目地址:https://gitee.com/hudejie/universal-software-installation-package 纯净包备份(v0.1):https://download.csdn.net/download/weixin_45863921/88720027 1 项目介绍 作者项目介绍: 基于NS…

球形体积雾

前言 本Blog的体积雾散射算法借鉴自Miles Macklin Simulation and computer graphics,如需原文参照,可转至链接。 球形体积雾 球形体积雾,即通过一个球体,配备一个雾效Shader,从而模拟出球状雾效。 主要包括&#…

Pycharm中如何配置python环境(conda)

首先在pycharm中点击 "File" > "Settings" 再次点击如下操作: 点击Python Interpreter的最右侧按钮,点击Show All... 找到python文件 最后点击OK

SQL基础知识1

一、基本知识 1、定义 2、语句结构 二、库和表的操作 1、创建、删除库 方法一 在navicat的查询中写 方法二 用mysql命令窗口写 1、用管理员身份运行MySQL的窗口 2、先看一下已经存在的数据库 3、新建数据库 2、导入表 方法一 用dos命令窗口,管理员身份运行…

系列十二、数组

一、数组 1.1、概述 数组是指可以同时存放固定长度的同一类型的数据。 1.2、数组的声明 数组的声明有三种方式,具体如下: 1.2.1、方式一 /*** 声明数组的第一种方式* cityArray:数组名,注意:不包括[]*/ Test public void d…