当前位置: 首页 > news >正文

基于CY8CKIT-149 BLE HID设备实现及PC控制功能开发(BLE HID+CapSense)

目录

  • 项目介绍
  • 硬件介绍
  • 项目设计
    • 开发环境
    • 总体流程图
      • BLE HID
      • 触摸按键与滑条
  • 功能展示
  • 项目总结

👉 【Funpack4-1】基于CY8CKIT-149 BLE HID设备实现及PC控制功能开发
👉 Github: EmbeddedCamerata/CY8CKIT-149_ble_hid_keyboard

项目介绍

基于英飞凌 CY8CKIT-149 开发板,通过 BLE HID 实现了一个蓝牙键盘设备,可通过蓝牙与 PC 连接,通过板载的触摸按键与滑条实现对 PC 音量、亮度、翻页控制:触摸按键 BTN0/1 控制亮度+/-、BTN2 音量+;触摸滑条左/右滑动控制上/下翻页。

硬件介绍

CY8CKIT-149 是 PSoC™ 4100S Plus 原型开发套件,用户能够通过该款板卡来评估 PSoC™ 4100S Plus 器件。 PSoC™ 4100S Plus 器件是英飞凌的 PSoC™ 4,具有一个 Arm Cortex-M0+ 内核和高达 128KB 闪存、16KB SRAM、9 个可编程模拟块、13 个可编程数字块以及 54 个通用 I/O,包括 24 个智能 I/O。

它还采用英飞凌第四代低功耗 CAPSENSE™ 解决方案,超可靠的低功耗电容式感应解决方案,可在嘈杂环境和液体中“正常工作”。 该套件使您能够使用两块电容式电路板快速评估和开发 CAPSENSE™,其中一块具有三个电容式按钮,另一块具有一个六段电容式滑块,这两块电路板都能够对按钮进行自电容式感应和互电容式感应。

开发板

项目设计

开发环境

本项目需要为 MCU 与 蓝牙模组两个模块编程。由于要用到板卡上较老的蓝牙模块,用英飞凌的 ModusToolbox 无法对其进行编程,因此只能使用老的 PSoC Creator 开发。

总体流程图

总体流程图
MCU 与蓝牙模块通过 EZI2C 通信,MCU 作为从设备,通过在循环中解码滑条的手势、扫描触摸按键,将信息保存在 buffer 中。使用现成的示例程序,蓝牙模组将作为 BLE HID 键盘设备连接 PC,通过读取相应 I2C buffer,获取触摸按键与滑条手势的按下信息,通过预先设定的 PC 亮度、音量、上下翻页的快捷键编码为 HID 报告发送至 PC。

BLE HID

参考 CYBLE-022001-00 的 BLE HID Keyboard 示例,在硬件模块中添加 I2CHW 用于读取按键信息寄存器,读取的从设备地址为 0x08,引脚设置如下:

PIN功能
P5[1]SCL
P5[0]SDA

BLE HID 硬件模块
该示例已经实现了一个 BLE HID 键盘设备(其余无关模块可根据需求移除)。在初始化阶段,使用库函数初始化 I2C 设备,并在主循环中读取寄存器并根据对应信息发送对应的操作的 HID 报告即可。读取的 I2C 寄存器 0 位为滑条手势信息,0x54/0x5c 表示左/右滑动(从设备约定),第 2 位 uint8 BIT 0/1/2 分别代表触摸按键 0/1/2 是否按下。

#define SLIDER_GESTURE_INDEX        (0u)
#define BUTTON_COUNT_INDEX          (1u)
#define BUTTON_STATUS_INDEX1        (2u)
#define BUTTON_STATUS_INDEX2        (3u)
#define SLIDER_FLICK_RIGHT          (0x54u)
#define SLIDER_FLICK_LEFT           (0x5Cu)
/* I2C buffer for storing the data read from I2C slave device */
uint8 i2cBuffer[] = {0, 0, 0, 0};int main()
{CyGlobalIntEnable;  .../* Begin I2C master component operation */I2CHW_Start();...while(1) {           /* CyBle_ProcessEvents() allows BLE stack to process pending events */CyBle_ProcessEvents();/* To achieve low power in the device */LowPowerImplementation();if((CyBle_GetState() == CYBLE_STATE_CONNECTED) && (suspend != CYBLE_HIDS_CP_SUSPEND)){            ...if((CyBle_GetBleSsState() == CYBLE_BLESS_STATE_ECO_STABLE) &&(keyboardSimulation == ENABLED)){/*Check for CapSense data change and report to BLE central device*/HandleCapSense();}...

其中,HandleCapSense() 实现对寄存器读取、发送 HID 设备报告:

void HandleCapSense(void)
{static uint8 sliderGesture = 0;static uint8 buttonValue = 0; static uint8 prevButtonStat = 0;/* Read entire data buffer from the slave device */I2CHW_I2CMasterReadBuf(I2C_SLAVE_ADDRESS, i2cBuffer, I2C_BUF_SIZE, I2CHW_I2C_MODE_COMPLETE_XFER);    while (0u == (I2CHW_I2CMasterStatus() & I2CHW_I2C_MSTAT_RD_CMPLT)){CyBle_ProcessEvents();}sliderGesture = i2cBuffer[SLIDER_GESTURE_INDEX];DBG_PRINTF("Slider moved: %u \r\n", sliderGesture);if(sliderGesture == SLIDER_FLICK_LEFT){SendPageCtrl(1u); // page up}else if(sliderGesture == SLIDER_FLICK_RIGHT){SendPageCtrl(0u); // page down}buttonValue = i2cBuffer[BUTTON_STATUS_INDEX1];if(prevButtonStat != buttonValue){DBG_PRINTF("Button moved: %u -> %u\r\n", prevButtonStat, buttonValue);prevButtonStat = buttonValue;if(buttonValue & 0x01)  // btn0{SendLightCtrl(1u);  // light brighter}if(buttonValue & 0x02)  // btn1{SendLightCtrl(0u);  // light lower}if(buttonValue & 0x04)  // btn2{SendSoundCtrl(1u);  // sound higher}}
}

在示例中,参考 hids.c 中定义的 SimulateKeyboard() 即可实现发送一次 HID 设备报告的功能。PC 快捷键对应的功能如下,根据这些键位即可实现上述代码中的 SendPageCtrl()SendLightCtrl()SendSoundCtrl()

快捷键功能
F2音量-
F3音量+
F5亮度-
F6亮度+
Page Up向上翻页
Page Down向下翻页

触摸按键与滑条

参考 PSoC 4100S Plus CapSense 与 蓝牙模块 CapSense Linear Slider and Buttons 的 MCU 端示例程序,在硬件模块中添加 EZI2C 模块作为从设备,地址设置为 0x08(与主设备读取的地址保持一致)。几个 LED 灯用于指示触摸按键按下与滑动动作。在 CapSense 模块中,设置三个按键与滑条,BTN0/1/2_Tx 均设置为 BTN0_Tx;在“Gesture”栏中打开“One-finger Flick”以检测滑条左右滑动手势,其余设置保持默认即可。

CapSense 硬件模块
引脚设置如下:

PIN设置
初始化阶段,额外初始化 EZI2C 需写入的 buffer:

#define GESTURE_TIMEOUT             (180u)
uint8 i2cBuffer[] = {0,3,0,0};int main(void)
{.../* Set up communication data buffer with CapSense slider centroid position and button status to be exposed to EZ-BLE Module on CY8CKIT-149 PSoC 4100S Plus Prototyping Kit */EZI2C_EzI2CSetBuffer1(sizeof(i2cBuffer), sizeof(i2cBuffer), i2cBuffer);CapSense_ScanAllWidgets();...

在主循环中,检测滑条手势与触摸按键,并保存至 buffer 中:

for(;;)
{ /* Checks to make sure that the scan is done before processing data */if(CapSense_NOT_BUSY == CapSense_IsBusy()){  .../* Stores the current detected gesture */detectedGesture = CapSense_DecodeWidgetGestures(CapSense_LINEARSLIDER0_WDGT_ID);/* Turns a specific LED on or off depending on the gesture */if((detectedGesture == CapSense_ONE_FINGER_FLICK_RIGHT) || (detectedGesture == CapSense_ONE_FINGER_FLICK_LEFT)){gestureDetected = 1;cnt = 0;i2cBuffer[SLIDER_GESTURE_INDEX] = (uint8) detectedGesture;...}if(gestureDetected == 1){if(cnt >= GESTURE_TIMEOUT){gestureDetected = 0;cnt = 0;i2cBuffer[SLIDER_GESTURE_INDEX] = (uint8) CapSense_NO_GESTURE;}cnt++;}/* Calculate the button status mask and update the I2C bufferbit0= BTN0 status, bit1 = BTN1 status, bit2 = BTN2 status */for(widgetID = 0; widgetID < TOTAL_CAPSENSE_BUTTONS; widgetID++){if(CapSense_IsWidgetActive(widgetID)){SET_BIT(buttonStatus, widgetID);}else{CLEAR_BIT(buttonStatus, widgetID);}}                     i2cBuffer[BUTTON_STATUS_INDEX1] = buttonStatus;...}
}

当读到一次左/右滑动手势后,BLE HID 会发送对应快捷键。若在手指离开后的下次键盘扫描后未复位为“无动作”,则 BLE HID 端仍会解码为左/右滑动,这导致操作会变为“左左左左左右右右右右左左左……”,显然是不合理的。因此,需在识别到左/右滑动后随即将 buffer 对应位复位为“无动作”。但是,由于 MCU 侧无法知道何时 BLE HID 读取到此次的动作,且 I2C 速率只有400k,若立刻复位,可能会导致 BLE HID 无法读取到有效动作。

一种解决方法是在 BLE HID 端读取到一次有效动作后复位对应 buffer,但这样依然要求 MCU 需要适时地为 buffer 复位“无动作”,难以控制。另一种方案是仅在 MCU 侧让有效的左右滑动动作持续一段时间后再复位“无动作”,这样虽会导致左右滑动动作被连续多次识别,且左、右滑动动作的切换存在间隔,但可确保 BLE HID 准确识别到动作。用一计数器记录有效手势的持续时间,当达到 GESTURE_TIMEOUT 后复位,持续时间可根据实际效果调整。

功能展示

下载程序后连接 PC,可以发现 PC 识别该 BLE HID 键盘设备。按下触摸按键 BTN0/1/2,分别控制音量+、亮度-/+,且对应 LED 灯亮一下;左/右滑动滑条(从滑条中间向两边,向 USB 端口侧滑动为左划),对应侧 LED 翻转,分别控制上/下翻页。

BLE HID 设备
👉 详细展示参见:B站:基于CY8CKIT-149 BLE HID设备实现及PC控制功能开发

项目总结

本次项目基于 CY8CKIT-149 实现了 BLE HID 键盘设备的模拟,并且通过触摸按键与滑条实现了按下操作、左右滑动手势识别,将动作信息通过 I2C 传输至 BLE 模块,并生成 HID 报告对 PC 执行相应快捷键按下操作。

相关文章:

基于CY8CKIT-149 BLE HID设备实现及PC控制功能开发(BLE HID+CapSense)

目录 项目介绍硬件介绍项目设计开发环境总体流程图BLE HID触摸按键与滑条 功能展示项目总结 &#x1f449; 【Funpack4-1】基于CY8CKIT-149 BLE HID设备实现及PC控制功能开发 &#x1f449; Github: EmbeddedCamerata/CY8CKIT-149_ble_hid_keyboard 项目介绍 基于英飞凌 CY8CK…...

工业级 激光测距 飞行时间法TOF 相位法 多频调制的本质!

激光测距仪中使用的相位法飞行时间&#xff08;Phase-based Time-of-Flight, ToF&#xff09;是一种通过测量调制光信号的相位差来计算距离的高精度方法。以下是详细解释&#xff1a; 一、核心原理&#xff1a;用“波的延迟”测距离 想象你向一堵墙拍手&#xff0c;通过回声的…...

014-STM32单片机实现矩阵薄膜键盘设计

1.功能说明 本设计主要是利用STM32驱动矩阵薄膜键盘&#xff0c;当按下按键后OLED显示屏上会对应显示当前的按键键值&#xff0c;可以将此设计扩展做成电子秤、超市收银机、计算器等需要多个按键操作的单片机应用。 2.硬件接线 模块管脚STM32单片机管脚矩阵键盘行1PA0矩阵键盘…...

flowable expression和json字符串中的双引号内容

前言 最近做项目&#xff0c;发现了一批特殊的数据&#xff0c;即特殊字符"&#xff0c;本身输入双引号也不是什么特殊的字符&#xff0c;毕竟在存储时就是正常字符&#xff0c;只不过在编码的时候需要转义&#xff0c;转义符是\&#xff0c;然而转义符\也是特殊字符&…...

关于Internet Download Manager(IDM)强制下载合并相关二次开发

目录 前言 强制下载视频 强制合并 迁移下载列表 免责声明 附录 前言 那个下载工具IDM不说了&#xff0c;确实有很多便捷的功能&#xff0c;不过也有一些限制 常见的包括但不限于&#xff1a; 1.无法下载有版权保护的视频&#xff08;不管真假&#xff09; 2.有时候下载…...

在Vue3 + Vite 项目中使用 Tailwind CSS 4.0

文章目录 首先是我的package.json根据官网步骤VS Code安装插件验证是否引入成功参考资料 首先是我的package.json {"name": "aplumweb","private": true,"version": "0.0.0","type": "module","s…...

Notepad++消除生成bak文件

设置(T) ⇒ 首选项... ⇒ 备份 ⇒ 勾选 "禁用" 勾选禁用 就不会再生成bak文件了 notepad怎么修改字符集编码格式为gbk 如图所示...

[mmdetection]fast-rcnn模型训练自己的数据集的详细教程

本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练&#xff0c;数据集是自制图像数据。废话不多说&#xff0c;下面进入训练步骤教程。 注&#xff1a;本人使用linux服务器进行展示&#xff0c;Windows环境大差不差。另外&#xff0…...

汽车自动驾驶AI

汽车自动驾驶AI是当前汽车技术领域的前沿方向&#xff0c;以下是关于汽车自动驾驶AI的详细介绍&#xff1a; 技术原理 感知系统&#xff1a;自动驾驶汽车通过多种传感器&#xff08;如激光雷达、摄像头、雷达、超声波传感器等&#xff09;收集周围环境的信息。AI算法对这些传感…...

信息学奥赛一本通 2101:【23CSPJ普及组】旅游巴士(bus) | 洛谷 P9751 [CSP-J 2023] 旅游巴士

【题目链接】 ybt 2101&#xff1a;【23CSPJ普及组】旅游巴士(bus) 洛谷 P9751 [CSP-J 2023] 旅游巴士 【题目考点】 1. 图论&#xff1a;求最短路Dijkstra, SPFA 2. 动态规划 3. 二分答案 4. 图论&#xff1a;广搜BFS 【解题思路】 解法1&#xff1a;Dijkstra堆优化 …...

Day25 洛谷 提高- 1007

零基础洛谷刷题记录 Day01 2024.11.18 Day02 2024.11.25 Day03 2024.11.26 Day04 2024.11.28 Day05 2024.11.29 Day06 2024 12.02 Day07 2024.12.03 Day08 2024 12 05 Day09 2024.12.07 Day10 2024.12.09 Day11 2024.12.10 Day12 2024.12.12 Day13 2024.12.16 Day14 2024.12.1…...

minikube 的 Kubernetes 入门教程--Ollama

让我们在本地 Kubernetes 中部署 Ollama&#xff08;llama3.2&#xff09; Ollama 安装方式有多样&#xff0c;是可选的&#xff0c;因为有minikube环境&#xff0c;我在 Kubernetes 中Deployment它。调用Ollama镜像&#xff0c;也可以用 Ollama CLI 去运行&#xff08;run&am…...

【字节青训营-7】:初探 Kitex 字节微服务框架(使用ETCD进行服务注册与发现)

本文目录 一、Kitex概述二、第一个Kitex应用三、IDL四、服务注册与发现 一、Kitex概述 长话短说&#xff0c;就是字节跳动内部的 Golang 微服务 RPC 框架&#xff0c;具有高性能、强可扩展的特点&#xff0c;在字节内部已广泛使用。 如果对微服务性能有要求&#xff0c;又希望…...

Docker技术相关学习三

一、Docker镜像仓库管理 1.docker仓库&#xff1a;用于存储和分发docker镜像的集中式存储库&#xff0c;开发者可以将自己创建的镜像推送到仓库中也可以从仓库中拉取所需要的镜像。 2.docker仓库&#xff1a; 公有仓库&#xff08;docker hub&#xff09;&#xff1a;任何人都可…...

浏览器查询所有的存储信息,以及清除的语法

要在浏览器的控制台中查看所有的存储&#xff08;例如 localStorage、sessionStorage 和 cookies&#xff09;&#xff0c;你可以使用浏览器开发者工具的 "Application" 标签页。以下是操作步骤&#xff1a; 1. 打开开发者工具 在 Chrome 或 Edge 浏览器中&#xf…...

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来&#xff0c;生成式 AI 安全市场正迅速发展。据 IDC 预测&#xff0c;到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元&#xff0c;年复合增长率超过 30%…...

mysql 学习8 函数,字符串函数,数值函数,日期函数,流程函数

函数 一 字符串函数 二 数值函数 三 日期函数 四 流程函数...

WSL2中安装的ubuntu搭建tftp服务器uboot通过tftp下载

Windows中安装wsl2&#xff0c;wsl2里安装ubuntu。 1. Wsl启动后 1&#xff09;Windows下ip ipconfig 以太网适配器 vEthernet (WSL (Hyper-V firewall)): 连接特定的 DNS 后缀 . . . . . . . : IPv4 地址 . . . . . . . . . . . . : 172.19.32.1 子网掩码 . . . . . . . .…...

7.2.背包DP

背包DP 在C中&#xff0c;背包动态规划&#xff08;Knapsack DP&#xff09; 是解决资源分配类问题的核心算法范式&#xff0c;尤其在处理物品选择与容量限制的组合优化问题时表现优异。以下是针对不同背包类型的详细解析与代码实现&#xff1a; 一、背包DP问题分类 类型特点…...

芝法酱学习笔记(2.6)——flink-cdc监听mysql binlog并同步数据至elastic-search和更新redis缓存

一、需求背景 在有的项目中&#xff0c;尤其是进销存类的saas软件&#xff0c;一开始为了快速把产品做出来&#xff0c;并没有考虑缓存问题。而这类软件&#xff0c;有着复杂的业务逻辑。如果想在原先的代码中&#xff0c;添加redis缓存&#xff0c;改动面将非常大&#xff0c…...

pandas习题 071:字典元素列表构造 DataFrame

(编码题)以下有一个列表嵌套字典 data,列表中的每个字典 fields 中的列表为每行数据的值,另有一个 col 为列名,利用这两个数据构造一个 DataFrame。 data = [{fields: [2024-10-07T21:22:01, USER-A, 21, 0,...

FFmpeg rtmp推流直播

文章目录 rtmp协议RTMP协议组成RTMP的握手过程RTMP流的创建RTMP消息格式Chunking(Message 分块) rtmp服务器搭建Nginx服务器配置Nginx服务器 librtmp库编译推流 rtmp协议 RTMP&#xff08;Real Time Messaging Protocol&#xff09;是由Adobe公司基于Flash Player播放器对应的…...

北京门头沟区房屋轮廓shp的arcgis数据建筑物轮廓无偏移坐标测评

在IT行业中&#xff0c;地理信息系统&#xff08;GIS&#xff09;是用于处理、分析和展示地理空间数据的重要工具&#xff0c;而ArcGIS则是GIS领域中的一款知名软件。本文将详细解析标题和描述中提及的知识点&#xff0c;并结合“门头沟区建筑物数据”这一标签&#xff0c;深入…...

Verilog基础(一):基础元素

verilog基础 我先说&#xff0c;看了肯定会忘&#xff0c;但是重要的是这个过程&#xff0c;我们知道了概念&#xff0c;知道了以后在哪里查询。语法都是术&#xff0c;通用的概念是术。所以如果你有相关的软件编程经验&#xff0c;那么其实开启这个学习之旅&#xff0c;你会感…...

Games104——游戏引擎Gameplay玩法系统:基础AI

这里写目录标题 寻路/导航系统NavigationWalkable AreaWaypoint NetworkGridNavigation Mesh&#xff08;寻路网格&#xff09;Sparse Voxel Octree Path FindingDijkstra Algorithm迪杰斯特拉算法A Star&#xff08;A*算法&#xff09; Path Smoothing Steering系统Crowd Simu…...

vue生命周期及其作用

vue生命周期及其作用 1. 生命周期总览 2. beforeCreate 我们在new Vue()时&#xff0c;初始化一个Vue空的实例对象&#xff0c;此时对象身上只有默认的声明周期函数和事件&#xff0c;此时data,methods都未被初始化 3. created 此时&#xff0c;已经完成数据观测&#xff0…...

数据分析师使用Kutools for Excel 插件

数据分析师使用Kutools for Excel 插件 Kutools for Excel 是一款功能强大的 Excel 插件&#xff0c;旨在提高 Excel 用户的工作效率&#xff0c;简化复杂的操作。它提供了超过 300 个增强功能&#xff0c;帮助用户快速完成数据管理、格式化、排序、分析等任务&#xff0c;特别…...

毫秒级响应的VoIP中的系统组合推荐

在高并发、低延迟、毫秒级响应的 VoIP 场景中&#xff0c;选择合适的操作系统组合至关重要。以下是针对 Ubuntu linux-lowlatency、CentOS Stream kernel-rt 和 Debian 自定义 PREEMPT_RT 的详细对比及推荐&#xff1a; 1. 系统组合对比 特性Ubuntu linux-lowlatencyCentO…...

unordered_map/set的哈希封装

【C笔记】unordered_map/set的哈希封装 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】unordered_map/set的哈希封装前言一. 源码及框架分析二.迭代器三.operator[]四.使用哈希表封装unordered_map/set后言 前言 哈…...

表格标签的使用

一.表格标签 1.1表格标签的作用 用来显示和展示数据&#xff0c;不是用来布局页面的。 1.2表格的基本语法 <table> //用于定义表格标签 <tr> // table row 用于定义表格中的行&#xff0c;必须嵌套在<table> </table>标签中 <td>单元格内的文…...

python算法和数据结构刷题[5]:动态规划

动态规划&#xff08;Dynamic Programming, DP&#xff09;是一种算法思想&#xff0c;用于解决具有最优子结构的问题。它通过将大问题分解为小问题&#xff0c;并找到这些小问题的最优解&#xff0c;从而得到整个问题的最优解。动态规划与分治法相似&#xff0c;但区别在于动态…...

【cocos creator】【模拟经营】餐厅经营demo

下载&#xff1a;【cocos creator】模拟经营餐厅经营...

编程AI深度实战:给vim装上AI

系列文章&#xff1a; 编程AI深度实战&#xff1a;私有模型deep seek r1&#xff0c;必会ollama-CSDN博客 编程AI深度实战&#xff1a;自己的AI&#xff0c;必会LangChain-CSDN博客 编程AI深度实战&#xff1a;给vim装上AI-CSDN博客 编程AI深度实战&#xff1a;火的编程AI&…...

信息学奥赛一本通 2088:【22CSPJ普及组】逻辑表达式(expr) | 洛谷 P8815 [CSP-J 2022] 逻辑表达式

【题目链接】 ybt 2088&#xff1a;【22CSPJ普及组】逻辑表达式(expr) 洛谷 P8815 [CSP-J 2022] 逻辑表达式 【题目考点】 1. 表达式树&#xff1a;中缀表达式建树 可以看该问题信息学奥赛一本通 1356&#xff1a;计算(calc) 了解中缀表达式建树过程。 【解题思路】 解法…...

Linux系统管理

文章目录 一、进程与服务二、systemctl基本语法操作 三、系统运行级别Linux进程运行级别查看当前运行级别修改当前运行级别 四、关机重启命令 一、进程与服务 守护进程与服务是一个东西。 二、systemctl 基本语法 systemctl start|stop|restart|status 服务名查看服务的方法…...

CTFSHOW-WEB入门-命令执行71-77

题目&#xff1a;web 71 题目&#xff1a;解题思路&#xff1a;分析可知highlight_file() 函数被禁了&#xff0c;先想办法看看根目录&#xff1a;cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇&#xff1a;&#xff08;全是&#xff1f;&#xff09;这种情况我也…...

[MRCTF2020]Ez_bypass1(md5绕过)

[MRCTF2020]Ez_bypass1(md5绕过) ​​ 这道题就是要绕过md5强类型比较&#xff0c;但是本身又不相等&#xff1a; md5无法处理数组&#xff0c;如果传入的是数组进行md5加密&#xff0c;会直接放回NULL&#xff0c;两个NuLL相比较会等于true&#xff1b; 所以?id[]1&gg…...

PPT演示设置:插入音频同步切换播放时长计算

PPT中插入音频&同步切换&放时长计算 一、 插入音频及音频设置二、设置页面切换和音频同步三、播放时长计算四、使用宏设置设置页面切换和音频同步一、 插入音频及音频设置 1.插入音频:点击菜单栏插入-音频-选择PC上的音频(已存在的音频)或者录制音频(现场录制) …...

Modbus Slave RTU 在 AVP28335(兼容德州仪器TMS 320 28335) 上实现含源码及注释。

今天先把题目先给出来&#xff0c; 在近两天会把源码 &#xff08;含详细注释 &#xff09;及部署、测试结果给出来&#xff0c; 希望能给大家帮助。&#xff08;原来这个程序在CSDN中&#xff0c;有小伙伴已经写了一些&#xff0c;但是发现里面埋了很多坑&#xff0c;例如&…...

git-secret 使用教程

以下是一份详细的 git-secret 使用教程&#xff0c;包含常见场景的 Bash 代码示例&#xff1a; 1. 安装 git-secret # Ubuntu/Debian sudo apt-get install git-secret# macOS (Homebrew) brew install git-secret# 其他 Linux (Snap) sudo snap install git-secret# 验证安装…...

防火墙安全策略

目录 一.拓扑及需求 二.需求分析 三.配置详细信息 防火墙&#xff1a; OA server&#xff1a; Web Server&#xff1a; PC1&#xff1a; ​编辑PC2&#xff1a; PC3&#xff1a; 配置安全区域&#xff1a; 交换机&#xff1a; 四.需求实现以及测试&#xff1a; 1.…...

蓝桥杯python基础算法(2-2)——基础算法(D)——进制转换*

目录 五、进制转换 十进制转任意进制&#xff0c;任意进制转十进制 例题 P1230 进制转换 作业 P2095 进制转化 作业 P2489 进制 五、进制转换 十进制转任意进制&#xff0c;任意进制转十进制 int_to_char "0123456789ABCDEF" def Ten_to_K(k, x):answer "…...

VSCode源码分析参考资料

VSCode Architecture Analysis - Electron Project Cross-Platform Best Practices 中文版 VSCode 架构分析 - Electron 项目跨平台最佳实践 Sihan Li博客上的vscode源码分析系列&#xff1a;分析了微服务架构、事件体系、资源管理、配置系统等 文召博客上的vscode 源码解析…...

深入理解 Rust 模块中的路径与公开性:绝对路径、相对路径和 `pub` 的应用

1. 路径的两种形式&#xff1a;绝对路径与相对路径 在 Rust 中&#xff0c;路径类似于文件系统中的目录路径&#xff0c;用来告诉编译器去哪里查找某个项。路径主要有两种形式&#xff1a; 绝对路径 绝对路径从 crate 的根开始。对于当前 crate 的代码&#xff0c;绝对路径以关…...

DeepSeek R1 大模型本地部署指南

以下是部署DeepSeek R1大模型的详细Markdown指南&#xff0c;可直接保存为.md文件并分享&#xff1a; # DeepSeek R1 大模型本地部署指南**适用系统**&#xff1a;Windows 10/11 & Linux (Ubuntu 20.04)---## 目录 1. [硬件要求](#硬件要求) 2. [准备工作](#准备工作) 3. […...

从Proxmox VE开始:安装与配置指南

前言 Proxmox Virtual Environment (Proxmox VE) 是一个开源的虚拟化平台&#xff0c;基于Debian Linux&#xff0c;支持KVM虚拟机和LXC容器。它提供了一个强大的Web管理界面&#xff0c;方便用户管理虚拟机、存储、网络等资源。Proxmox VE广泛应用于企业级虚拟化、云计算和开…...

Docker 安装详细教程(适用于CentOS 7 系统)

目录 步骤如下&#xff1a; 1. 卸载旧版 Docker 2. 配置 Docker 的 YUM 仓库 3. 安装 Docker 4. 启动 Docker 并验证安装 5. 配置 Docker 镜像加速 总结 前言 Docker 分为 CE 和 EE 两大版本。CE即社区版&#xff08;免费&#xff0c;支持周期7个月&#xff09;&#xf…...

前端 | 浅拷贝深拷贝

在前端开发中&#xff0c;我们经常需要复制对象或数组&#xff0c;但不同的复制方式可能会影响数据的完整性和应用的稳定性。本文将深入探讨浅拷贝&#xff08;Shallow Copy&#xff09;和深拷贝&#xff08;Deep Copy&#xff09;的区别、实现方式及适用场景。 1. 浅拷贝 1.…...

巧用 Cursor+Coze,轻松简化小程序开发

一、为啥要用 Cursor+Coze 简化小程序开发 家人们,如今小程序简直火出圈啦!不管你是电商从业者,还是服务行业的工作者,又或是自媒体运营者,拥有一个小程序,就相当于给业务插上了腾飞的翅膀,能带来更多的流量和机会。但是,小程序开发的过程,那可真是充满了挑战。从最开…...

Spring Boot常用注解深度解析:从入门到精通

今天&#xff0c;这篇文章带你将深入理解Spring Boot中30常用注解&#xff0c;通过代码示例和关系图&#xff0c;帮助你彻底掌握Spring核心注解的使用场景和内在联系。 一、启动类与核心注解 1.1 SpringBootApplication 组合注解&#xff1a; SpringBootApplication Confi…...