基于 Arduino 编写 ESP32 BLE Server 例程
测试代码如下:
- 支持 BLE 连接
- 支持 BLE 数据传输
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>namespace BLEServerDemo {BLEServer *pServer = nullptr;
BLEService *pService = nullptr;
BLECharacteristic *pCharacteristic = nullptr;bool deviceConnected = false;class ServerCallbacks : public BLEServerCallbacks {void onConnect(BLEServer *pServer) {deviceConnected = true;Serial.println("BLE connected");}void onDisconnect(BLEServer *pServer) {deviceConnected = false;Serial.println("BLE disconnected");pServer->startAdvertising(); // Restart advertising after disconnection}
};class CharacteristicCallbacks : public BLECharacteristicCallbacks {void onWrite(BLECharacteristic *pCharacteristic) {std::string value = pCharacteristic->getValue();Serial.print("Received Value: ");for (int i = 0; i < value.length(); i++) {// Serial.print(value[i]);Serial.print(value[i],HEX);Serial.print(" ");}Serial.println();}
};void initBLE() {BLEDevice::init("MyESP32BLEServer");pServer = BLEDevice::createServer();pServer->setCallbacks(new ServerCallbacks());pService = pServer->createService(BLEUUID("0000fff0-0000-1000-8000-00805f9b34fb"));pCharacteristic = pService->createCharacteristic(BLEUUID("0000fff1-0000-1000-8000-00805f9b34fb"),BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE);pCharacteristic->setCallbacks(new CharacteristicCallbacks());pService->start();pServer->getAdvertising()->start();Serial.println("Waiting for client connection...");
}void handleBLE() {if (deviceConnected) {// Handle other tasks as needed}
}} // namespace BLEServerDemovoid setup() {Serial.begin(115200);BLEServerDemo::initBLE();
}void loop() {BLEServerDemo::handleBLE();
}
相关文章:
基于 Arduino 编写 ESP32 BLE Server 例程
测试代码如下: 支持 BLE 连接支持 BLE 数据传输 #include <BLEDevice.h> #include <BLEServer.h> #include <BLEUtils.h>namespace BLEServerDemo {BLEServer *pServer nullptr; BLEService *pService nullptr; BLECharacteristic *pCharacte…...
Mac环境变量配置
export HOMEBREW_NO_AUTO_UPDATEtrue关闭Homebrew自动更新,因为每次安装软件都要自动更新,特别慢export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home配置JAVA_HOMEexport ANDROID_HOME/Users/fanpaopao/Library/Android…...
使用FTP文件传输协议的潜在风险
数据(事实,数字,价值)是当今业务运行的核心要素。但是,如果数据没有得到有效的存储和传输,它们就会成为阻碍业务发展的障碍。如果企业不能及时地把数据送到合适的地方,就会造成严重的经济损失。…...
Jtti:windows虚拟内存最小值太低如何解决
当Windows虚拟内存的最小值设置过低时,可能会导致系统性能下降、应用程序崩溃甚至系统不稳定。解决方法包括: 调整虚拟内存设置: 可以通过以下步骤调整虚拟内存的设置: 右键点击“此电脑”或“计算机”,选择“属性”。…...
基于微服务+Java+Spring Cloud +Vue+UniApp +MySql实现的智慧工地云平台源码
基于微服务JavaSpring Cloud VueUniApp MySql开发的智慧工地云平台源码 智慧工地概念: 智慧工地就是互联网建筑工地,是将互联网的理念和技术引入建筑工地,然后以物联网、移动互联网技术为基础,充分应用BIM、大数据、人工智能、移…...
Unity框架学习--4 Mono管理器
作用:使不继承MonoBehaviour的类能够开启协程,并且可以使用FixedUpdate、Update、LateUpdate进行每帧更新。 原理: 1、在场景中创建一个继承MonoBehaviour的“执行者”脚本,这个脚本就专门用来开启协程和监听帧更新。 2、Mono管理…...
Unity zSpace 开发
文章目录 1.下载 zSpace 开发环境1.1 zCore Unity Package1.2 zView Unity Package 2. 导入工程3. 发布设置4.功能实现4.1 用触控笔来实现对模型的拖拽: 5. 后续更新 1.下载 zSpace 开发环境 官网地址 1.1 zCore Unity Package zSpace 开发核心必须 1.2 zView …...
SQL注入是什么?如何防范?
什么是SQL注入? SQL注入(SQLi)是一种注入攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施&#…...
Spring kafka源码分析——消息是如何消费的
文章目录 概要端点注册创建监听容器启动监听容器消息拉取与消费小结 概要 本文主要从Spring Kafka的源码来分析,消费端消费流程;从spring容器启动到消息被拉取下来,再到执行客户端自定义的消费逻辑,大致概括为以下4个部分&#x…...
汽车电子的发展对国产32位MCU的影响
32位MCU是目前产品市场的主流,尤其是在汽车电子发展起来后,32位MCU在市场的比重迅速增涨,国内32位MCU厂商抓住风口,推出一系列汽车电子芯片从而稳定国内市场。如芯海的CS32F030系列就是主要应用汽车电子市场的32位MCU。 根据市场…...
Vue 目录结构 vite 项目
Vue3 项目常用的目录结构和每个文件的作用【通过 vite 创建的项目】 vite目录结构: dist // 打包后生成的文件目录 node_modules // 环境依赖 public // 公共资源目录 favicon.ico …...
TB/TM-商品详情原数据(APP)
一、接口参数说明: item_get_app-获得TB/TMapp商品详情原数据,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_app 名称类型必须描述keyString是调用key&…...
小米发布会:雷军成长故事与创新壮举,AI大模型技术引领未来,雷军探索之路之从创业波折到小米AI领航,成就高端化传奇!
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
春秋云镜 CVE-2021-41947
春秋云镜 CVE-2021-41947 Subrion CMS v4.2.1 存在sql注入 靶标介绍 Subrion CMS v4.2.1 存在sql注入。 启动场景 漏洞利用 exp http://localhost/panel/visual-mode.json?getaccess&typeblocks UNION ALL SELECT username, password FROM sbr421_members -- -&o…...
面试题-React(一):React是什么?它的主要特点是什么?
探索React:前端开发中的重要角色与主要特点 引言: 在现代前端开发领域,React已经成为最受欢迎和广泛使用的JavaScript库之一。它由Facebook开发并于2013年首次发布。随着时间的推移,React在开发社区中获得了强大的支持和认可。本…...
算法笔试 java 输入输出练习
在线编程题刷题训练 所有答案 scancer函数的用法 输入输出总结top!!!! java如何调用函数(方法) java刷acm的各种输入输出 vscode配置java环境 子函数的调用,直接定义一个static子函数调用就…...
5.内置构造函数
在JavaScript中最主要的数据类型有6种: 1.基本数据类型: 字符串、数值、布尔、undefined、 null 2.引用类型:对象 但是,我们会发现有些特殊情况: //普通字符串 const str andy console.1og(str.length) // 4其实字符串、数值、布尔、等基本类型也都有…...
DG故障切换及DG Broker失效配置清理
DG故障切换及DG Broker失效配置清理 DG故障强制切主DG Broker原有配置清理 DG故障强制切主 主库发生故障无法在短时间内恢复时,需要执行主备切换。此时由于DG Broker无法连接到主库,故不能通过Broker切换,只能手动在备库进行切主。 --断开备…...
地毯(暴力+差分两种方法)
题目描述 在 nx n 的格子上有 m 个地毯。 给出这些地毯的信息,问每个点被多少个地毯覆盖。 输入格式 第一行,两个正整数 n,m。意义如题所述。 接下来 m 行,每行两个坐标 (x_1,y_1) 和 (x_2,y_2),代表一块地毯,左上…...
最新智能AI系统+ChatGPT源码搭建部署详细教程+知识库+附程序源码
近期有网友问宝塔如何搭建部署AI创作ChatGPT,小编这里写一个详细图文教程吧。 使用Nestjs和Vue3框架技术,持续集成AI能力到AIGC系统! 增加手机端签到功能、优化后台总计绘画数量逻辑!新增 MJ 官方图片重新生成指令功能同步官方 …...
浦语灵笔2.5-7B惊艳效果:思维导图→中心主题提取→子节点扩展生成
浦语灵笔2.5-7B惊艳效果:思维导图→中心主题提取→子节点扩展生成 1. 引言:当AI“看懂”你的思维导图 想象一下这个场景:你花了一下午时间,用思维导图软件整理了一个复杂的项目规划。导图里有中心主题、有层层分支、有各种图标和…...
华硕笔记本散热难题:3步用G-Helper解决风扇失控与性能调优
华硕笔记本散热难题:3步用G-Helper解决风扇失控与性能调优 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix…...
LFM2.5-1.2B-Thinking-GGUF入门必看:llama.cpp+GGUF轻量模型部署全流程
LFM2.5-1.2B-Thinking-GGUF入门必看:llama.cppGGUF轻量模型部署全流程 1. 模型与平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用GGUF格式,结合llama.cpp运行时,能…...
深入解析CAN(FD)转以太网:从协议到实践的全方位指南
1. CAN(FD)与以太网协议基础解析 第一次接触CAN(FD)转以太网设备时,我完全被各种专业术语搞晕了。后来在实际项目中摸爬滚打才发现,理解底层协议才是用好这类设备的关键。CAN(FD)本质上是CAN总线的升级版,就像单车道升级为双车道,…...
为什么传统功能测试向量生成流程越来越慢?从 WGL、JTAG 到可综合 Testbench 的工程拆解
作者:Darren H. Chen 方向:芯片测试自动化 / JTAG / ATE / 验证加速 / EDA工具开发摘要 在芯片功能测试与验证流程中,很多团队仍然沿用“testbench/testcase → 仿真波形 → WGL/STIL → ATE 或后续验证”的传统链路。这条流程在测试用例较少…...
SEO原创文章的发布频率应该如何确定
SEO原创文章的发布频率应该如何确定 在当今的互联网时代,搜索引擎优化(SEO)已经成为网站运营的关键环节之一。为了在百度上获得更好的排名,发布高质量的原创文章是必不可少的策略。如何确定SEO原创文章的发布频率,是许…...
掌握Makefile:从基础到高级的自动化构建指南,依托Java和百度地图实现长沙市热门道路与景点实时路况检索的实践探索。
make与Makefile基础概念 Make是Linux/Unix系统中用于自动化构建程序的工具,通过读取Makefile文件来执行编译、链接等操作。Makefile定义了项目文件的依赖关系及构建规则,避免重复编译未修改的源代码。 Makefile的核心由三部分组成: 目标(Targ…...
QT界面设计小技巧:用QListWidget+CheckBox打造可交互列表(避坑指南)
QT界面设计实战:QListWidget与CheckBox的高效交互方案 在桌面应用开发中,列表控件与复选框的组合堪称经典交互模式。这种设计不仅直观地呈现多项选择场景,还能有效提升用户操作效率。作为QT框架中的核心组件,QListWidget与QCheckB…...
Linux文件偏移量与lseek()系统调用详解
1. 文件读写位置基础概念在Linux系统中,每次打开一个文件时,内核都会维护一个称为"文件偏移量"的指针。这个指针决定了下一个read()或write()操作将从文件的哪个位置开始执行。理解这个机制对于进行精确的文件操作至关重要。文件偏移量从0开始…...
策略模式:灵活切换算法的艺术,C++多态。
策略模式概述 策略模式是一种行为设计模式,允许在运行时选择算法的行为。它将算法封装成独立的类,使得它们可以互相替换,而不会影响客户端代码。策略模式的核心思想是将算法的定义与使用分离,增强系统的灵活性和可扩展性。 策略模…...
