
最初に実行したときには正常に動作する C プログラム (BLUEZ C API) がありますが、Ctrl+を押してC停止してから再度実行すると、BLE デバイス (スキャン機能) が見つかりません。Linux を再起動すると、再び動作します。私のプログラムは while(1) ループでデバイス情報 (製造元データを含む) をスキャンして印刷し、次の呼び出しを行います。
stop_hci_scan(current_hci_state);
error_check_and_exit(current_hci_state);
close_hci_device(current_hci_state);
ループの外側です。
プログラムしなければならないハングアップした場合などに自動的に再起動できるように、Linux サービスに追加する予定なので、このイベント ( Ctrl+ ) まで生き残ります。C
つまり、プログラムを 2 回目に起動する前に (再起動を避けるために) 何らかのクリーニングを実行する必要があるということですね?
しかし何?
答え1
(コマンドラインで)以下を使用できます:
sudo hciconfig hci0 reset
C の同等のものはわかりません...