技术标签: Arduino ESP32 零基础入门实例教程 esp32蓝牙
BLEAssist
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
char BLEbuf[32] = {
0};
uint32_t cnt = 0;
#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
};
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
}
};
class MyCallbacks: public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic *pCharacteristic) {
std::string rxValue = pCharacteristic->getValue();
if (rxValue.length() > 0) {
Serial.print("------>Received Value: ");
for (int i = 0; i < rxValue.length(); i++) {
Serial.print(rxValue[i]);
}
Serial.println();
if (rxValue.find("A") != -1) {
Serial.print("Rx A!");
}
else if (rxValue.find("B") != -1) {
Serial.print("Rx B!");
}
Serial.println();
}
}
};
void setup() {
Serial.begin(115200);
// Create the BLE Device
BLEDevice::init("ESP32 BLE Test");
// 创建蓝牙服务器
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
// // 创建广播服务的UUID
BLEService *pService = pServer->createService(SERVICE_UUID);
创建广播服务的UUID
pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
pCharacteristic->addDescriptor(new BLE2902());
BLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
pCharacteristic->setCallbacks(new MyCallbacks());
// 开始蓝牙服务
pService->start();
// 开始广播
pServer->getAdvertising()->start();
Serial.println("Waiting a client connection to notify...");
}
void loop() {
if (deviceConnected) {
//设备连接后,每秒钟发送txValue。
memset(BLEbuf, 0, 32);
memcpy(BLEbuf, (char*)"Hello BLE APP!", 32);
pCharacteristic->setValue(BLEbuf);
pCharacteristic->notify(); // Send the value to the app!
Serial.print("*** Sent Value: ");
Serial.print(BLEbuf);
Serial.println(" ***");
}
delay(1000);
}
connect
进行连接写到Dijkstra,才突然发现系统分类里面没有合适的类分配给该文章,嗯,只能暂且放到开发技术类别里面吧,是的,敬爱的Dijkstra应该没有什么意见吧,正如在他的Turing Award Lecture的标题一样,the humble programmer,我们都是卑微的程序员,在这个社会中,或许卑微,但在我们这个行业里面,他如一颗璀璨的明星,永远激励着每一个程序员,下面是...
初创文旅企业员工手册 Leah Silber是Tilde(一家培训和咨询初创公司)的首席执行官和联合创始人,该公司专注于由校友和Ruby on Rails,jQuery和Ember等项目的现任领导人领导的开源。 Tilde还是Rails性能工具Skylight的支持者。 Leah告诉我, Tilde通过建立和维护他们热爱的充满活力的开源社区做出了贡献。 为此,需要花费大量时间和精力,那么她如...
LINQ to SQL使用教程前些时间用LINQ to SQL做了一些项目,现在打算总结一下,帮助新手快速入门,并写一些别的教程没提到的东西。一、LINQ to SQL和别的LINQ to XXX有什么关系?二、延迟执行(Deferred Loading)三、什么是LINQ to SQL?四,看看LINQ to SQL到底干了些啥?——创建自己的工具类五
完整错误信息错误 7 未能加载文件或程序集“System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 行 123,位置 5。 F:\CsProjects\CSharp实现SP...
Zabbix是一个高度集成的企业级开源网络监控解决方案,与Cacti、nagios类似,提供分布式监控以及集中的web管理界面。zabbix具备常见商业监控软件所具备的功能,例如主机性能监控,网络设备性能监控,数据库性能监控,ftp等通用协议的监控,能够灵活利用可定制警告机制,允许用户对事件发送基于E-mail的警告,保证相关人员可以快速解决。还能够利用存储数据提供杰出的报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控。Zabbix通过C/S模式采集数据通过B/S模式在web端展示和配置,通
查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找表按照操作方式来分有两大种:静态查找表和动态查找表。动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。1. 顺序查找/* 顺序查找,a为数组,n为要查找的数组元素个数,key为要查找的关键字*/int Sequential_Sear
关键词:STL标准模板库,容器STL概述STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用...
一、使用SUN公司在JDK6中提供的新包com.sun.net.httpserver JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,HttpSer...
<br />(摘自http://fky168.blog.163.com/blog/static/3786097200831033957620/)<br />一、Source Insight实用技巧:<br />Source Insight(下文的SI指的也是它)就是这样的一个东西:<br /> Windows下开发人员的至爱,功能强大,界面友好。支持语法高亮、符号跳转,还支持函数调用关系图显示。这是一个专业的编程环境,很多大公司都是使用它的。这个编辑器除支持完善的自定义功能外,几乎所有配置都能作个性化配置
OpenCascade:Topo类型转换TopoDS_Edge newEdge;if (oldShape.ShapeType()==TopAbs_EDGE) newEdge=TopoDS::Edge(oldShape);转载于:https://www.cnblogs.com/2018shawn/p/11052574.html...
(1)PBFT 最常用的BFT共识机制是实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance)。该算法是Miguel Castro和Barbara Liskov在1999年提出 来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由节点数的指 数级降低到节点数的平方级,使得拜占庭容错算法在实际系统应用中变得可行。 PBFT是针对状态...
目录1.集合大家族2.集合删除需要退位3.集合删除的底层源码解析4.链表删除的底层解析5.集合变量的三种场景6.list集合的特点7.链表判断从那边开始找值8.集合在强转调方法需要加括号才是一个强转体9.增强for循环修改的值是第三方地址1.集合大家族2.集合删除需要退位3.集合删除的底层源码解析4.链表删除的底层解析5.集合变量的三种场景6.list集合的特点7.链表判断从那边开始找值8.集合在强转调方法需