Bluetoothのrfcommソケットからデータを受信するためのソケットを作成しました。
ワンピースで受け取った場合のパッケージには10個の番号がありますが、別々のパーツを受け取ることもあります。それは私がデータを取得するために選択した頻度に依存します。たとえば、私が選択した場合、1000Hz
私はすべての情報を取得します。私はaを使用してQTimer
おり、間隔1000 ms / 1000 Hzがintに等しいため、intを取得しますが、これは問題ありません。ただし、除算がintでない場合は、除算が QTimer
丸められ、非同期化されたときにすべてのパッケージを取得するために関数が時間内に再起動されません。
私はこれを使います、
sock = socket (AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
numb = read (sock, buf, 10);
numbが10に等しい場合、パッケージはOKだったので、処理します。そうでない場合は、部品のみを受け取りました。その後、その部分は失われます。
バッファがすでに読み取られているのではなく、バッファがいっぱいかどうかだけを確認する方法はありますか?つまり、状態が完全に読み取られた場合、そうでない場合は、次の反復に任せます。
私はこの問題の専門家ではありませんが、旗はMSG_EOR
私を助けてくれますか?私のデータはパッケージに入っています。
に変更read
する必要がありrecv
ますか?recv
パラメータとしてソケットを取得します。
どんな助けでも大歓迎です。