Das Beispiel auf der anderen Antwort funktioniert bei mir nicht, es stoppt beim Scannen ...
Der nächste Link funktioniert für C-Sprache, hat aber einen Fehler beim Umwandeln der Bytes, die die Informationen über das RSS-Signal enthalten.https://github.com/glock45/intel-edison-playground/blob/master/scan.c
diese Zeile 121:
printf("%s - RSSI %d\n", addr, (**char**)info->data[info->length]);
sollte sein:
printf("%s - RSSI %d\n", addr, (**int8_t**)info->data[info->length]);
Ich habe diese gefunden, indem ich in bluez-version/monitor/*.c
geschaut habe , wo sich das btmon-Programm befindet. Sie können die Datentypen und Strukturen sehen, hcidump.c
ist sehr nützlich und packets.c
, und main.c
auch, aber es gibt viel über die HCI-Sockets zu lernen
Die BLE-Programmierung mit BlueZ auf Galileo oder Edison ähnelt jeder anderen x86-Plattform.
Edison (und Galileo) werden normalerweise mit vorinstallierten BlueZ-Bibliotheken geliefert. Sie müssen sie nur mit Ihrem C-Code verknüpfen und ähnlich wie bei anderen x86-Plattformen programmieren.
Ein vollständiges C-Code-Beispiel für einen Bluetooth-Scan mit BlueZ finden Sie unter diesem Link.
Bitte sehen Sie sich dieses Beispiel für einen BLE-Scan an
Und die HCI-API hier.