ESP32ボードにより、BLEタグの検知するプログラムを
サイトからコピーさせていただき修正して使用しようと
しておりますが、添付ファイルのようにMACアドレスは
正常に表示されますが、BLE名称は何も表示されません
本来ならば、「FSCBP103」と表示して欲しいところなんですが
プログラムをどのように変更すれば宜しいでしょうか
ちなみに、ESP32のスッケチ例の中のBLE_scanを
実行させると正常に「FSCBP103」と表示しているのですが
その表示している画面を下記に追加しました。
<使用したプログラム>
#include <BLEDevice.h>
//FSC-BP103
#define DEF_BLE_ADDR "dc:0d:30:::dd"
BLEScan* g_pBLEScan;
void setup() {
Serial1.begin(115200, SERIAL_8N1, 26, 27); //RX--26,TX--27
Serial.begin(115200); // ログ出力準備
pinMode(5, OUTPUT);//5番ピンを出力に設定
BLEDevice::init(""); // BLEデバイス初期化 g_pBLEScan = BLEDevice::getScan(); // Scanオブジェクト取得 g_pBLEScan->setActiveScan(false); // パッシブスキャンに設定
}
void loop() {
char buf[1024];
sprintf(buf, "");
BLEScanResults res = g_pBLEScan->start(1); // スキャン時間1秒
int nCnt = res.getCount();
if (nCnt > 30) { // 上限30件まで検出
nCnt = 30;
}
// 検出したBLE件数分ループ
for (int i = 0; i < nCnt; i++) {
BLEAdvertisedDevice bledev = res.getDevice(i);
BLEAddress ble_addr = bledev.getAddress(); // BLEのMACアドレス取得
std::string ble_name = bledev.getName(); // BLEの名称取得
// MACアドレスが一致している場合
if( DEF_BLE_ADDR == ble_addr.toString() ){
// ログ出力
digitalWrite(5, HIGH);//5番ピンの出力をHIGH(5V)に設定
delay(10);//10msec待機(1秒待機)
sprintf(buf, "name=[%s]; addr=[%s]", ble_name.c_str(), ble_addr.toString().c_str());
Serial.println(buf);
Serial1.print(ble_addr.toString().c_str());
break;
}
}
digitalWrite(5, LOW);//5番ピンの出力をLOW(0V)に設定 delay(40); // 0.1秒wait
やりたい事は、型名「FSCBP103」でコンペアして
一致すれば、そのMACアドレスをシリアル送信しようとして
その為には、型名を読めるかのテストをしておりました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/16 02:55 編集
2021/10/22 01:38 編集
2021/11/05 04:34