久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1475|回復: 2
打印 上一主題 下一主題
收起左側

菜鳥問題:ESP32S藍牙為什么發送同一個值?TX傳的是不同值啊

[復制鏈接]
回帖獎勵 1 黑幣 回復本帖可獲得 1 黑幣獎勵! 每人限 1 次(中獎概率 50%)
跳轉到指定樓層
樓主
問題是這樣的,先上圖:
手機端接收的,發現接收的notify都是同一個值:00 01 01 00 C0 C8 FD 3F 54 C0 FD.....3F 00 00 00 00

切回utf-8,就變成亂碼了,變成這樣:


由于我是菜鳥,只懂arduino軟編程,C語言也只是略懂

藍牙代碼是用ESP32 example文件改來的,分析了很久沒分析出什么,只好向高手求助了

以下是代碼:
  1. #include <BLEDevice.h>
  2. #include <BLEServer.h>
  3. #include <BLEUtils.h>
  4. #include <BLE2902.h>
  5. BLEServer *pServer = NULL;
  6. BLECharacteristic *pTxCharacteristic;
  7. bool deviceConnected = false;
  8. bool oldDeviceConnected = false;
  9. uint8_t txValue = 0;

  10. // See the following for generating UUIDs:

  11. #define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID
  12. #define CHARACTERISTIC_UUID_RX "f78ebbff-c8b7-4107-93de-889a6a06d408"
  13. #define CHARACTERISTIC_UUID_TX "ca73b3ba-39f6-4ab3-91ae-186dc9577d99"

  14. class MyServerCallbacks : public BLEServerCallbacks
  15. {
  16.   void onConnect(BLEServer *pServer)
  17.   {
  18.     deviceConnected = true;
  19.   };

  20.   void onDisconnect(BLEServer *pServer)
  21.   {
  22.     deviceConnected = false;
  23.   }
  24. };

  25. class MyCallbacks : public BLECharacteristicCallbacks
  26. {
  27.   void onWrite(BLECharacteristic *pCharacteristic)
  28.   {
  29.     std::string rxValue = pCharacteristic->getValue();

  30.     if (rxValue.length() > 0)
  31.     {
  32.       Serial2.println("*********");
  33.       Serial2.print("Received Value: ");
  34.       for (int i = 0; i < rxValue.length(); i++)
  35.         Serial2.print(rxValue[i);

  36.       Serial2.println();
  37.       Serial2.println("*********");
  38.     }
  39.   }
  40. };
  41. void setup()
  42. {
  43.   Serial1.begin(250000, SERIAL_8N1, 3, 1);
  44.   Serial2.begin(250000, SERIAL_8N1, 16, 17);

  45.   // Create the BLE Device
  46.   BLEDevice::init("UART Service");

  47.   // Create the BLE Server
  48.   pServer = BLEDevice::createServer();
  49.   pServer->setCallbacks(new MyServerCallbacks());

  50.   // Create the BLE Service
  51.   BLEService *pService = pServer->createService(SERVICE_UUID);

  52.   // Create a BLE Characteristic
  53.   pTxCharacteristic = pService->createCharacteristic(
  54.       CHARACTERISTIC_UUID_TX,
  55.       BLECharacteristic::PROPERTY_NOTIFY);

  56.   pTxCharacteristic->addDescriptor(new BLE2902());

  57.   BLECharacteristic *pRxCharacteristic = pService->createCharacteristic(
  58.       CHARACTERISTIC_UUID_RX,
  59.       BLECharacteristic::PROPERTY_WRITE);

  60.   pRxCharacteristic->setCallbacks(new MyCallbacks());

  61.   // Start the service
  62.   pService->start();

  63.   // Start advertising
  64.   pServer->getAdvertising()->start();

  65.   Serial2.println("\nSet Serial1 ok!");
  66.   Serial2.println("Waiting a client connection to notify...");
  67. }

  68. void loop()
  69. {
  70.   if (deviceConnected)
  71.   {
  72.     // long time=millis();
  73.     // for(int i=0;i<1000;){
  74.     if (Serial1.available() > 0)
  75.     {
  76.       // int x=0;
  77.       // if(char(Serial1.peek())=='s'){i++;}
  78.       //   if(Serial1.peek()!='\n'){x++;}else{x=0;}


  79.       //tx傳值,通過藍牙notify不間斷發送通知
  80.       Serial2.print(char(Serial1.peek()));
  81.       pTxCharacteristic->setValue(&txValue, Serial1.read());
  82.       pTxCharacteristic->notify();
  83.       // if(x>10){
  84.       //   Serial2.println();
  85.       //   Serial2.println("Error!!!");
  86.       //   delay(10000000000);
  87.       // }
  88.       delay(10);
  89.     }
  90.     // // }
  91.     //   float a=1000/((millis()-time)/1000);
  92.     //   Serial2.printf("Frequency domain:%f /n",a);
  93.     //   delay(1000000);
  94.   }
  95.   // disconnecting
  96.   if (!deviceConnected && oldDeviceConnected)
  97.   {
  98.     delay(500);                  // 讓藍牙堆棧有機會做好準備
  99.     pServer->startAdvertising(); // 重啟廣播
  100.     Serial2.println("start advertising");
  101.     oldDeviceConnected = deviceConnected;
  102.   }
  103.   // connecting
  104.   if (deviceConnected && !oldDeviceConnected)
  105.   {
  106.     // do stuff here on connecting在連接上做點事情
  107.     oldDeviceConnected = deviceConnected;
  108.     Serial2.println("start advertising");
  109.   }
  110. }
復制代碼



理想的藍牙情況是這樣的,把其它微控制器傳上來的值(sEMG和6個數值)通過UART發送到ESP32,ESP32再把UART緩沖區的單個字符一個個的當通知信息發出去:


請問咋解決啊,為啥藍牙接收同一個值,還是亂碼(;′д`)ゞ

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:301191 發表于 2022-3-19 16:51 | 只看該作者
頂一下
回復

使用道具 舉報

板凳
ID:752974 發表于 2022-3-21 08:52 | 只看該作者
注意字符與HEX的轉換。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久亚洲 | 欧美性一区二区三区 | 日本电影韩国电影免费观看 | 亚洲精品免费视频 | 伊人伊成久久人综合网站 | 久久国色 | 亚洲欧美在线观看视频 | 日韩三级在线观看 | 久久久久国产一区二区三区四区 | 99伊人| 国产美女在线观看 | 蜜桃一区二区三区 | 99精品欧美一区二区三区综合在线 | 国产精品美女www爽爽爽 | 91色视频在线观看 | 午夜视频一区 | 午夜精品一区二区三区三上悠亚 | 亚洲精品不卡 | 久久国产精彩视频 | 久久国产欧美日韩精品 | 欧美精品在线一区 | h视频免费在线观看 | 日韩在线精品 | 五月花丁香婷婷 | 亚洲精品久久久久中文字幕二区 | 免费国产视频在线观看 | 黄色一级网 | 亚洲免费视频网站 | 91精品国产美女在线观看 | 黄色大片在线免费观看 | 成人一区二区三区视频 | 黄色毛片在线播放 | 欧美成人精品激情在线观看 | 综合久久99 | 久久久久国产一区二区三区四区 | 亚洲人在线| 亚州综合一区 | 中文字幕在线播放第一页 | 日本人和亚洲人zjzjhd | 曰批视频在线观看 | 日韩不卡一区二区 |