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

news/2024/7/10 18:45:01 标签: c语言, c++, 开源

文章目录

  • 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.niftyadmin.cn/n/5304731.html

相关文章

PHP 基础编程 2

文章目录 时间函数dategetdatetime 使用数组实现登录注册和修改密码简单数组增加元素方法修改元素方法删除元素方法 具体实现方法数组序列化数组写入文件判断元素是否在关联数组中(登录功能实现)实现注册功能实现修改admin用户密码功能 时间函数 时区&am…

Kotlin/JS工程构建及编译运行到浏览器

概述 Kotlin/JS 提供了转换 Kotlin 代码、Kotlin 标准库的能力,并且兼容 JavaScript 的任何依赖项。Kotlin/JS 的当前实现以 ES5 为目标。 使用 Kotlin/JS 的推荐方法是通过 kotlin.multiplatform Gradle 插件。它提供了一种集中且便捷的方式来设置与控制以 JavaS…

大语言模型占显存的计算和优化

可以优化的地方: per_device_train_batch_size(相当于batch size,越小显存占的越小) gradient_accumulation_steps(per_device_train_batch_size*gradient_accumulation_steps计算梯度的数据数) gradien…

Java八股文面试全套真题【含答案】- SpringCloud Alibaba篇

以下是关于Java八股文面试全套真题- SpringCloud Alibaba篇 1.Spring Cloud Alibaba与Spring Cloud有什么区别? Spring Cloud Alibaba是Spring Cloud的衍生版本,它是由Alibaba开发和维护的,相比于Spring Cloud,它在一些方面进行了…

MacOS - 苹果电脑程序还能正常启动,但图标消失不见了~

问题描述 网上有一些解决方案说是 killall Finder 命令,重置 Docker 等等,但是发现还是不行,于是必杀技…… 解决方案 方案一、删除该 App,重装即可方案二、如果懒得重装,可以在 Finder 中找到对应的应用程序&#xf…

C++基础语法——基本知识、数据类型、运算符及程序流程结构

本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: >第1阶段-C基础入门 ---------第2阶段实战-通讯…

实现JavaScript中的数组排序功能

一、引言 在JavaScript中,数组是一种常用的数据结构,而排序是处理数组的常见任务。对于JavaScript中的数组排序,我们可以通过多种方式来实现。本篇博客将详细介绍如何使用JavaScript实现数组排序功能,并分享一些感悟。 二、实现…

Jenkins集成部署java项目

文章目录 Jenkins简介安装 Jenkins简介 Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。 官网 安装 在官网下载windows版本的Jenkins 但是我点击这里浏览器没有反应&#xff0…