
Ich habe ein C-Programm, das beim ersten Ausführen gut funktioniert (BLUEZ C API), aber wenn ich Ctrl+ drücke C, um es zu stoppen, und es dann erneut ausführe, findet es kein BLE-Gerät (Scanfunktion). Wenn ich Linux neu starte, funktioniert es wieder. Mein Programm befindet sich in einer while(1)-Schleife, scannt und druckt Geräteinformationen (einschließlich Herstellerdaten) und ruft auf:
stop_hci_scan(current_hci_state);
error_check_and_exit(current_hci_state);
close_hci_device(current_hci_state);
sind außerhalb der Schleife.
Das Programmmussdieses Ereignis überleben ( Ctrl+ C), da ich vorhabe, es in einen Linux-Dienst einzubinden, um einen automatischen Neustart zu ermöglichen, falls es hängt oder so etwas.
Also scheint es, dass ich vor dem zweiten Start des Programms eine Bereinigung durchführen muss (um einen Neustart zu vermeiden), richtig?
Aber was?
Antwort1
Sie können (in der Befehlszeile) Folgendes verwenden:
sudo hciconfig hci0 reset
Ich kenne das C-Äquivalent nicht ...