0

Bluetooth SPP を使用してターゲットに接続するサードパーティの Android アプリケーションがあります。アプリケーションは JSON データを送信しますが、送信されたデータ バイト数は不明です。また、ターゲットで受信したデータに一貫性がありません (チャンクの場合もあります)。送信されたデータの終わりを検出するための行末がありません。

シリアル ポート経由でデータを読み取るために、コードでスレッドを実行しています。

int fd = open(rfcommDevice, O_RDWR | O_NOCTTY | O_SYNC);

void readData(int fd)
{
   while (1)
   {
      nbytes = read(fd, buf, buflen);
      if (nbytes < 0)
      {
         break;
      }
      else if (nbytes > 0)
      {
            showCompleteData();
      }
      else
      {
         close(fd);
         break;
      }
   }
}

現在、showCompleteData() は最初にデータを解析し、不完全な場合は失敗します。データはチャンクで受信されるため、完全なデータを蓄積してから showCompleteData() を呼び出す方法を理解できません。

また、ブロッキング呼び出しであるため、read() は 0 を返しません。

提案してください。

4

0 に答える 0