私はJavaで小さなプログラムを作成しました。このプログラムは、シリアルポート(一部のテキストメッセージと一部のバイナリデータ、混合)から情報を読み取り、TCPソケットを介して送信します。
最初はデータをバッファに入れて、「/ n」が到着したときにすべてを送信しようとしましたが、バイナリデータはそのようには機能しません。
私の2番目の考えは、データを常にバイト単位で送信することでした。しかし、速度が遅くなりすぎて、スレッドを使用したとしても、送信中にデータが失われていると思います。
次のアイデアは、たとえば保存されている100バイトに達したときにデータを送信することですが、これはダーティな修正です。
私のシリアルデータはGPS受信機からのものであり、これらのデバイスは通常、毎秒多くのデータセンテンス(テキストとバイナリ)を送信します(または10、50、100Hzに構成可能、モデルによって異なります)。とにかく、データを受信する時間のギャップと、何も受信しない時間のかなり大きなギャップがあります。私のデータを取り除く最も素晴らしい方法は、そのギャップを検出し、ギャップが終了したときに新しいデータが到着する前に、保存されているすべてのデータを送信することだと思います。
この種のイベントをどのように検出できますか?
編集:私はRXTXパッケージを使用してシリアルポートを取り除き、Windows764ビットで作業しています