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
  • 可靠传输的基本概念

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

    1 概述 前面一篇文章介绍了我们常用的ISP和ICP编程 除了这两种编程方式最为常见的还有一种叫IAP 下面聊一聊IAP的一些细节 IAP In applicating Programing 翻译过来就是在应用编程 即我们常说的在程序运行过
  • 一、利用AT指令配置esp8266——esp8266WIFI模块初探&STM32串口通信再探

    文章目录 一 esp8266初探 1 esp8266简介 2 esp8266使用方式 什么是AT指令 通过何种方式发送AT指令 二 STM32串口通信再探 1 printf 函数与串口中断函数 2 例子 小试牛刀 3 例子 再进一步 三 局
  • 组态王和plc之间如何建立通讯?

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

    一 实验条件 环境 win10专业版 keil uv5 串口调试助手 stm32f1系列单片机 as32lora模块 这里是泽耀科技的as32 ttl 100 二 实现功能 1 使用定时器将底层数据通过as32每隔1秒向上层串口发送一段数据
  • 西门子PLC各类通信协议差异对比

    西门子PLC有4大类 几十个型号类型 PLC不同所支持的通讯协议也不相同 S7 200系列支持的协议有 PPI MPI PROFIBUS 以太网 S7协议 AS INTERFACE USS MODBUS 自由口 S7 300 400系列支持
  • STM32F1应用DMA——串口收发不定长数据

    STM32F1应用DMA 串口收发不定长数据 使用STM32自带DMA传输数据 可以减轻CPU负担 只需设置一些参数即可发送想要发送的数据 以下是STM32F1系列芯片测试过的部分代码 可实现DMA串口收发数据 下图来自STM32官网的手册
  • 蓝桥杯单片机学习过程记录(二十八)第五届国赛串口通信相关代码补充

    蓝桥杯单片机学习过程记录 二十八 第五届国赛串口通信相关代码补充 UART串口通信 第五届国赛uart串口内容相关补充 设置数组存储输入输入字符 并与设定的密码相判断 include
  • ESP-NOW无线通信

    本文由铁熊与默联合创作 在学习 Arduino 开发的过程中 无线通讯是我们学习道路上一道必过的坎 无线通讯摆脱了线材的束缚 使用更加灵活且通讯距离根据不同无线模块可达几十米甚至是数公里 常见的无线通讯方式有蓝牙 WiFi LoRa NB
  • CSerialPort教程4.3.x (1) - CSerialPort项目简介

    CSerialPort教程4 3 x 1 CSerialPort项目简介 前言 CSerialPort项目是一个基于C C 的轻量级开源跨平台串口类库 可以轻松实现跨平台多操作系统的串口读写 同时还支持C Java Python Node
  • C#串口通讯中 16进制与字符串、字节数组之间的转换

    1 c 中如何将十进制数的字符串转化成十六进制数的字符串 十进制转二进制 Console WriteLine 十进制166的二进制表示 Convert ToString 166 2 十进制转八进制 Console WriteLine 十进制
  • 关于STM32串口接收中断中只能接收一个字节()

    最近调试STM32的串口接收时发现例程中只能接收一个字节 例程如下 1 初始化串口1 2 void uart init u32 bound 3 GPIO端口设置 4 GPIO InitTypeDef GPIO InitStructure 5
  • QT开发之串口通信(四)

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

    串口数据出现分包如何正确完整接收 提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 设计思路 二 代码参考 总结 前言 串口通信在QT上位机以及单片机或者安卓串口等使用情况下 经常容易出现一包数据分成几包
  • 什么是节点光端机?总线型光端机有哪些优势?

    节点式光端机又称总线型光端机 其准确的定义是采用单 双纤链路式组网形式的图像传输系统 也被称为链路式光端机 那么 节点式光端机具体是什么呢 总线型光端机又有哪些优势呢 接下来我们就跟随飞畅科技的小编一起来详细了解下吧 什么是节点光端机 节点
  • LInux下串口编程详解细节

    LInux下串口设置详解 日期 2011 04 01 来源 Linux社区 作者 huang879135 字体 大 中 小 串口的设置主要是设置struct termios结构体的各个成员值 include
  • 小记stm32实现串口接收的四种方法(hal库)

    开发环境 STM32CUBMX 正点原子STM32F407ZGT6探索者开发板 MDK ARM 5 31 第一种方式 直接接收 配置外部时钟源 2 配置时钟树 3 配置串口一 生产代码后进入工程 重定向printf到串口1 建议在usart
  • Python:简易的串口收发程序

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

    时钟抖动通常分为时间间隔误差 Time Interval Error 简称TIE 又叫相位抖动 周期抖动 Period Jitter 和相邻周期抖动 cycle to cycle jitter 三种抖动 TIE又称为phase jitter

随机推荐