2017-06-08 1 views
0

In BlueZ tools/btgatt-client.c
このファイルを使用してデバイスに接続し、データを読み込みました。対話型コマンドプロンプトを無効にしたいとします。mainloop_add_fd()in BlueZ

私は接続できますが、データレジスタを取得するには0x00xxを通知します。cmdウィンドウで入力する必要があります。prompt_read_cbが呼び出されます。どうすれば自動化できますか? prompt_read_cbは、cmdウィンドウのイベントが発生するのを常に待ちます。

if (mainloop_add_fd(fileno(stdin),EPOLLIN | EPOLLRDHUP | EPOLLHUP | 
EPOLLERR,prompt_read_cb, cli, NULL) < 0)` 
{ 
    fprintf(stderr, "Failed to initialize console\n"); 
    return EXIT_FAILURE; 
} 
+2

ようこそStackOverflow。 [ツアー]を取ってください。 よくある質問stackoverflow.com/help/how-to-ask、 [mcve]を作成してください。 特に、フレーズ、インターフュージョン、マークダウンの書式設定に関するヒントを参照して、読みやすくしてください。 – Yunnosch

+0

[MCVE](https://stackoverflow.com/help/mcve) –

答えて

0

私はヘッドレスHRM受信機で同じことをしようとしています。私はready_cb()関数で単にデバイスへの接続を要求するようにbtgatt-client.cの多くをアンコードしました。&はデバイスに通知を登録してから、notify_cb()を修正して、データ(本質的に共有メモリにプッシュ)。

これは、シェルから実行されている標準入力要求がなくても正常に動作しますが、systemdから実行すると、mainloop_add_fd()の呼び出しによってエラーが返され、プログラムは終了します。私はオープンしたファイルを送信しても、ヌルであるか、ヌルファイル記述子を送信して、mainloopを終了させたという、コールをコメントアウトしようとしました。

しかし、単にstdinでmainloop_add_fd()を呼び出し、systemdから実行したときにエラーを無視すると、プロセスは続行され、動作するように見えます。私はprompt_read_cp()もノーオペレーションにしました。それが必要であれば、まだ掘り下げていません。 HTH。

関連する問題