CSerialPort教程4.3.x (7) - CSerialPort在vcpkg中的使用

2023-11-04

CSerialPort教程4.3.x (7) - CSerialPort在vcpkg中的使用

前言

CSerialPort项目是一个基于C/C++的轻量级开源跨平台串口类库,可以轻松实现跨平台多操作系统的串口读写,同时还支持C#, Java, Python, Node.js等。

CSerialPort项目的开源协议自 V3.0.0.171216 版本后采用GNU Lesser General Public License v3.0

为了让开发者更好的使用CSerialPort进行开发,特编写基于4.3.x版本的CSerialPort教程系列。

CSerialPort项目地址:

本文将介绍如何使用vcpkg依赖包管理工具安装和管理CSerialPort。

1. vcpkg安装CSerialPort

1.1 安装vcpkg

详见 https://github.com/microsoft/vcpkg

1.2 vcpkg安装默认版本CSerialPort

vcpkg安装语法

vcpkg install [packagesname]:triplet

CSerialPort 典型架构安装示例

# x86-windows
vcpkg install cserialport

# x64-windows
vcpkg install cserialport:x64-windows

# x64-windows-static
vcpkg install cserialport:x64-windows-static

# x64-linux
vcpkg install cserialport:x64-linux

# x64-osx
vcpkg install cserialport:x64-osx

vcpkg查看架构

$ vcpkg help triplet
Available architecture triplets
VCPKG built-in triplets:
  arm-uwp
  arm64-windows
  x64-linux
  x64-osx
  x64-uwp
  x64-windows-static
  x64-windows
  x86-windows

VCPKG community triplets:
  ...

1.3 vcpkg安装github最新版本的CSerialPort

安装windows x64的github最新版本的CSerialPort

# x64-windows
vcpkg install cserialport:x64-windows --head

1.4 vcpkg安装指定版本的CSerialPort

修改vcpkg\ports\cserialport\portfile.cmake文件,vcpkg_from_github中修改REFSHA512为指定版本的数据。
REF为github的commit id, SHA512为其对应的*.tar.gz文件的SHA512 hash值。

如以CSerialPort v4.2.0为例

  • 找到所需版本的commit id或 tag
$ git log
...
commit 26271e67340bae0ccbd2169bda8032673b329313 (tag: v4.2.0)
...
  • 下载并计算该版本*.tar.gz文件的SHA512 hash值
# 通过commit id切换到指定版本
$ wget https://github.com/itas109/CSerialPort/archive/26271e67340bae0ccbd2169bda8032673b329313.tar.gz
# 通过tag切换到指定版本
$ wget https://github.com/itas109/CSerialPort/archive/v4.2.0.tar.gz

# 通过cmake计算SHA512 hash值
$  cmake -E sha512sum 26271e67340bae0ccbd2169bda8032673b329313.tar.gz
58ad41287ba070e1f29936325ba52969fa0b81ac31fcfc4806904c194b8c5ea3bc05ad0ae2fa2a6a9ac00a479739ea6a9559cfae62cd94b41d3c64d79db34130 26271e67340bae0ccbd2169bda8032673b329313.tar.gz

# 通过vcpkg计算SHA512 hash值
$ vcpkg hash v4.2.0.tar.gz
d2220e232b2b870b2692b8724ebeb0804cc3eac4e181ad7181ce0a8afc595cea8633c70c8369639b952d986f525a25e20f14f9fd7e5498b7d0f54392e22a7858 

注意:也可以使用vcpkg安装CSerialPort报错时计算的hash值

[DEBUG] Downloading https://github.com/itas109/CSerialPort/archive/26271e67340bae0ccbd2169bda8032673b329313.tar.gz
Error: Failed to download from mirror set:
File does not have the expected hash:
             url : [ https://github.com/itas109/CSerialPort/archive/26271e67340bae0ccbd2169bda8032673b329313.tar.gz ]
       File path : [ E:\Git\vcpkg\downloads\itas109-CSerialPort-26271e67340bae0ccbd2169bda8032673b329313.tar.gz.17928.part ]
   Expected hash : [ 4e0b6d5d07ac9f213762a8bf6a90a109ec134b04a8645dc5fc0b89c69a798c857924ee37f13f421b421148bc39bf1ed4f37361e5d1d9f7f51e0faf01757b3927 ]
     Actual hash : [ 58ad41287ba070e1f29936325ba52969fa0b81ac31fcfc4806904c194b8c5ea3bc05ad0ae2fa2a6a9ac00a479739ea6a9559cfae62cd94b41d3c64d79db34130 ]
  • 修改vcpkg_from_github中修改REFSHA512

commit id方式

vcpkg_from_github(
    OUT_SOURCE_PATH SOURCE_PATH
    REPO itas109/CSerialPort
    REF 26271e67340bae0ccbd2169bda8032673b329313
    SHA512 d2220e232b2b870b2692b8724ebeb0804cc3eac4e181ad7181ce0a8afc595cea8633c70c8369639b952d986f525a25e20f14f9fd7e5498b7d0f54392e22a7858
    HEAD_REF master
)

tag方式

vcpkg_from_github(
    OUT_SOURCE_PATH SOURCE_PATH
    REPO itas109/CSerialPort
    REF v4.2.0
    SHA512 58ad41287ba070e1f29936325ba52969fa0b81ac31fcfc4806904c194b8c5ea3bc05ad0ae2fa2a6a9ac00a479739ea6a9559cfae62cd94b41d3c64d79db34130
    HEAD_REF master
)

2. 使用vcpkg安装的CSerialPort

2.1 visual studio非cmake项目

管理员权限 运行

vcpkg integrate install

安装成功后,vs的非cmake项目对于所有已安装的库可直接使用 #include 包含所需头文件且无需额外配置。

2.2 cmake项目

$ cmake -B [build directory] -S . "-DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake"
$ cmake --build [build directory]

set(CMAKE_TOOLCHAIN_FILE "D:/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")

通过find_package查找使用CSerialPort

find_package(CSerialPort QUIET)
if (CSerialPort_FOUND)
  include_directories(${CSerialPort_INCLUDE_DIR})
  target_link_libraries (${PROJECT_NAME} ${CSerialPort_LIBRARY})
endif()

2.3 直接拷贝vcpkg编译好的库到项目目录

debug版本的bin和lib到debug目录下拷贝

release版本的bin和lib在根目录(vcpkg/installed/x64-windows)拷贝

注意:
vcpkg可以导出已经编译的库

# x64-windows
$ vcpkg export cserialport:x64-windows --zip

License

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎


Reference:

  1. https://github.com/itas109/CSerialPort
  2. https://gitee.com/itas109/CSerialPort
  3. https://blog.csdn.net/itas109
  4. https://github.com/microsoft/vcpkg
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSerialPort教程4.3.x (7) - CSerialPort在vcpkg中的使用 的相关文章

  • STC15F2K60S2单片机的串口通信程序及相关知识

    一 STC15F2K60S2单片机简介 中国深圳宏晶STC系列单片机是2005年推出中国本土的第一款具有全球竞争力的 且与MCS 51兼容的STC系列单片机 它完全兼容51单片机 是新一代增强型单片机 速度快 抗干扰性强 加密性强 带ADC
  • 基于FPGA的串口通讯设计与实现

    繁體 基于FPGA的串口通讯设计与实现 日期 2012 03 26 来源 作者 字体 大 中 小 随着多微机系统的应用和微机网络的发展 通信功能越来起重要 串行通信是在一根传输线上一位一位传送信息 这根线既作数据线又作联络线 串行通信作为一
  • 可靠传输的基本概念

    可靠传输的基本概念 使用差错检错技术 接受方的数据链路层就可以检测出真在传输过程中是否出现误码 这取决于数据链路层向上层提供的服务类型 不可靠传输 仅仅丢弃有误码的帧 其他的什么也不做 可靠传输 想方法实现发送端发送什么 接收端就收到什么
  • 组态王和plc之间如何建立通讯?

    这两者之间可以有很多种通讯方式 比如 PROFIBUS MPI 以太网 DDE OPC MODBUS 自由口等 主要还是要看你的PLC选型 以及组网方式 现在最常见 也最常用的大概要数RS485 MODBUS协议下的无线通讯方式了 我们假定
  • 基于stm32f1的lora开发基础通信实验

    一 实验条件 环境 win10专业版 keil uv5 串口调试助手 stm32f1系列单片机 as32lora模块 这里是泽耀科技的as32 ttl 100 二 实现功能 1 使用定时器将底层数据通过as32每隔1秒向上层串口发送一段数据
  • 魔方机器人之下位机编程-----两种串口通信方式的比较

    由于上位机软件的串口通信部分和魔方复原算法部分已经完成 接下来的一步就是如何将魔方复原的具体步骤 字符串的形式 通过串口发送给单片机MC9S12XS128单片机了 调试的过程中 采用了两种串口通信的方式 一种是查询的方式 另一种是中断的方式
  • USB转RS485串口电路设计

    USB转串口芯片的串口信号一般为 TTL CMOS电平 在实现半双工 RS485 串口时需要外接485电平转换芯片 设计中需要有信号来控制 485 转接芯片的发送和接收使能端 建议选择自带485控制引脚的转接芯片 如 CH340 CH342
  • QT开发之串口通信(四)

    VS2015 QtPackage版本1 3 11插件 QT5 13 1 最近使用串口遇到一些问题 1 问题 在上述编译环境下发生数据会出现发送一次数据后无法重复发送数据 返回值也没有问题 查询得知 QByteArray SendBytes
  • 串口接收数据分包问题处理(QT上位机/单片机等)

    串口数据出现分包如何正确完整接收 提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 设计思路 二 代码参考 总结 前言 串口通信在QT上位机以及单片机或者安卓串口等使用情况下 经常容易出现一包数据分成几包
  • 获取windows中活跃的Com口

    获取windows中活跃的Com口 记录于2021年11月9日 今天对我来说是个很特殊的一天 母胎SOLO二十一周年 无奈 Orz 闲暇之余写下此文章 记录一下我的日常 文章目录 获取windows中活跃的Com口 前言 一 如何寻找活跃C
  • STM32F031串口(RS485)中断+DMA发送(预备知识)

    STM32F031串口 RS485 中断 DMA发送 前言 GPIO移植过程 与F1系列的一些区别 串口 DMA 前言 最近在搞STM32F031的项目 F0系列与常用的F1系列有一定区别 在开发过程中遇到一些问题 而且花了好长花间在搜寻解
  • 九.ARM裸机学习之串口通信详解1(串口通信接口及原理框图详解)

    一 串口通信的基本概念及原理理解 2017 11 12 22 52 1 同步通信和异步通信 异步通信 指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程 为使双方的收发协调 要求发送和接收设备的时钟尽可能一致 即发送方和接收方没有
  • CSerialPort教程4.3.x (6) - CSerialPort作为第三方库的使用

    CSerialPort教程4 3 x 6 CSerialPort作为第三方库的使用 环境 系统 windows 10 CentOS 7 cmake 3 22 1 前言 CSerialPort项目是一个基于C C 的轻量级开源跨平台串口类库
  • QT Modbus RTU调试助手(包含算法实现CRC MODBUS16校验)

    QT Modbus RTU调试助手 在类构造函数中将UI初始化和串口对象定义以及查找串口 串口设置 串口接受 QT延时函数 CRC校验 发送串口数据函数 总结 在类构造函数中将UI初始化和串口对象定义以及查找串口 foreach const
  • 串口收发最高位为0

    串口收发最高位为0 昨天在现场 读取电表度数的时候发现一个问题 读取字节最高位不管多少全部为0 搞的我相当郁闷 最后没有办法 只好人工给他置1 今天到了公司打开 linux 程序设计 翻到终端这一章 152页 赫然写着几个大字 ISTRIP
  • FPGA笔记8——串口通信(回环实验)

    目录 串口通信原理 串行通信基础知识 处理器与外部设备通信的两种方式 串行通信的通信方式 串行通信的传输方向 常见的串行通信接口 异步串口通信UART基础知识 数据格式 传输速率 接口标准 RS232接口 串口通信实验RS 232 实验任务
  • Linux系统下使用socat将串口映射到TCP服务器端口

    首先需要安装socat 安装方法即是 apt get install socat 或 yum install socat 然后使用以下命令进行映射 socat TCP LISTEN 8899 fork reuseaddr FILE dev
  • 串口通信——接收串口数据并处理(C语言)

    本文主要内容包含 1 接收串口数据程序的编程逻辑示意图 2 接收串口数据程序要用到的通用函数模块 可直接引用 无需更改 3 接收串口数据程序的示例 1 接收串口数据程序的编程逻辑示意图 2 与串口有关的函数模块及数组 可直接引用到自己的程序
  • STM32串口中断接收方式详细比较

    本例程通过PC机的串口调试助手将数据发送至STM32 接收数据后将所接收的数据又发送至PC机 具体下面详谈 实例一 void USART1 IRQHandler u8 GetData u8 BackData if USART GetITSt
  • Python:简易的串口收发程序

    Python 简易的串口收发程序 更新历史 20201204 首次发布 最近需要搞一个基于Python的串口程序 要求 能够将字符串形式的十六进制数 例如 12 34 CD EF 转化成对应的二进制数据后发送给一个串口设备 能够从串口设备接

随机推荐