nas可以做网站服务器吗,鲜花网网站开发的目标,wordpress archive插件,网页免费视频教程前言 最近接了一个外包#xff0c;发现了esp32连接小程序会有很多bug#xff0c;所以接下来会慢慢更新解决方案#xff0c;还是需要多接触项目才能进步呀兄弟们#xff01; 附上uuid的生成链接#xff1a; 
// See the following for generating UUIDs:
// https://www.uu…前言 最近接了一个外包发现了esp32连接小程序会有很多bug所以接下来会慢慢更新解决方案还是需要多接触项目才能进步呀兄弟们 附上uuid的生成链接 
// See the following for generating UUIDs:
// https://www.uuidgenerator.net/ 
问题 这里借用一下别人博客遇到的问题。 后面重新开看流程时发现使用 wx.getBLEDeviceCharacteristics的时候有出现了三个特征值以至于报错博主问题原链接 
我们可以看到微信小程序维护的也....现在2024年了这个bug还没修好..... 
链接 解决办法 
问题发现 
解决办法只能从esp32代码来入手首先来看看原本的蓝牙连接代码,我们可以看到首先在开头就写了四个uuid特征码来进行蓝牙初始化创建、发送、接收这就是导致问题出现的关键 #define SERVICE_UUID        1596c77c-cf40-4137-9957-d24916f8e50b   //你可以通过上面的网址去生成UUID
#define CHARACTERISTIC_UUID 1596c77c-cf40-4137-9957-d24916f8e50b
#define CHARACTERISTIC_UUID_RX 1596c77c-cf40-4137-9957-d24916f8e50b
#define CHARACTERISTIC_UUID_TX 1596c77c-cf40-4137-9957-d24916f8e50bvoid setup() {chipId  String((uint32_t)ESP.getEfuseMac(), HEX);chipId.toUpperCase();
//  chipid ESP.getEfuseMac();
//  Serial.printf(Chip id: %s\n, chipid.c_str());Serial.println(chipId:chipId);Serial.println();Serial.printf(Chip id: %s\n, chipId.c_str());// Create the BLE DeviceBLEDevice::init(xhn_Service);// Create the BLE ServerpServer  BLEDevice::createServer();pServer-setCallbacks(new MyServerCallbacks());//随机生成的uuid放入BLEService *pService  pServer-createService(SERVICE_UUID);// Create a BLE CharacteristicpTxCharacteristic  pService-createCharacteristic(CHARACTERISTIC_UUID_TX,  BLECharacteristic::PROPERTY_NOTIFY);pTxCharacteristic-addDescriptor(new BLE2902());BLECharacteristic * pRxCharacteristic  pService-createCharacteristic(CHARACTERISTIC_UUID_RX,                                  uuid_RX,                                                   BLECharacteristic::PROPERTY_WRITE);pRxCharacteristic-setCallbacks(new MyCallbacks());// Start the servicepService-start();// Start advertisingpServer-getAdvertising()-start();Serial.println(Waiting a client connection to notify...);
}String readString;void loop() {if (deviceConnected) {//        pTxCharacteristic-setValue(txValue, 1);//        pTxCharacteristic-notify();//        txValue;//    delay(10); // bluetooth stack will go into congestion, if too many packets are sent}while (Serial.available()  0) {if (deviceConnected) {delay(3);readString  Serial.read();pTxCharacteristic-setValue(chipId.c_str());
//      pTxCharacteristic-setValue((uint32_t)ESP.getEfuseMac());pTxCharacteristic-notify();Serial.println(chipId);}}// disconnectingif (!deviceConnected  oldDeviceConnected) {delay(500); // give the bluetooth stack the chance to get things readypServer-startAdvertising(); // restart advertisingSerial.println(start advertising);oldDeviceConnected  deviceConnected;}// connectingif (deviceConnected  !oldDeviceConnected) {// do stuff here on connectingoldDeviceConnected  deviceConnected;}
} 
问题解决 
因为我们初始化接收、发送时传递的都是同一个uuid所以导致特征码重复而报错所以我们就可以在初始化的时候使用一个uuid在发送或接收使用uuid时切换另一个因为获取uuid的目的是为了让小程序绑定设备码所以在初始化的时候我们就可以绑定成功从而uuid的作用就不重要了。 
这边以修改接收的uuid为例其实修改一行就解决问题了或者你将发送的UUID的修改成别的uuid也可以只要你在小程序绑定号设备号就行因为设备号是不会改变的。 #define SERVICE_UUID        1596c77c-cf40-4137-9957-d24916f8e50b   //你可以通过上面的网址去生成UUID
#define CHARACTERISTIC_UUID 1596c77c-cf40-4137-9957-d24916f8e50b
#define CHARACTERISTIC_UUID_RX 2abe697b-cad9-409b-802e-624646c3e69c
#define CHARACTERISTIC_UUID_TX 1596c77c-cf40-4137-9957-d24916f8e50bvoid setup() {chipId  String((uint32_t)ESP.getEfuseMac(), HEX);chipId.toUpperCase();
//  chipid ESP.getEfuseMac();
//  Serial.printf(Chip id: %s\n, chipid.c_str());Serial.println(chipId:chipId);Serial.println();Serial.printf(Chip id: %s\n, chipId.c_str());// Create the BLE DeviceBLEDevice::init(xhn_Service);// Create the BLE ServerpServer  BLEDevice::createServer();pServer-setCallbacks(new MyServerCallbacks());//随机生成的uuid放入BLEService *pService  pServer-createService(SERVICE_UUID);// Create a BLE CharacteristicpTxCharacteristic  pService-createCharacteristic(CHARACTERISTIC_UUID_TX,  BLECharacteristic::PROPERTY_NOTIFY);pTxCharacteristic-addDescriptor(new BLE2902());BLECharacteristic * pRxCharacteristic  pService-createCharacteristic(CHARACTERISTIC_UUID_RX,                                                                                   BLECharacteristic::PROPERTY_WRITE);pRxCharacteristic-setCallbacks(new MyCallbacks());// Start the servicepService-start();// Start advertisingpServer-getAdvertising()-start();Serial.println(Waiting a client connection to notify...);
}String readString;void loop() {if (deviceConnected) {//        pTxCharacteristic-setValue(txValue, 1);//        pTxCharacteristic-notify();//        txValue;//    delay(10); // bluetooth stack will go into congestion, if too many packets are sent}while (Serial.available()  0) {if (deviceConnected) {delay(3);readString  Serial.read();pTxCharacteristic-setValue(chipId.c_str());
//      pTxCharacteristic-setValue((uint32_t)ESP.getEfuseMac());pTxCharacteristic-notify();Serial.println(chipId);}}// disconnectingif (!deviceConnected  oldDeviceConnected) {delay(500); // give the bluetooth stack the chance to get things readypServer-startAdvertising(); // restart advertisingSerial.println(start advertising);oldDeviceConnected  deviceConnected;}// connectingif (deviceConnected  !oldDeviceConnected) {// do stuff here on connectingoldDeviceConnected  deviceConnected;}
}