1

メッセージ形式は

!AIVDM,2,1,,B,177KQJ5000G?tO`K>RA1wUbN0TKH,0*5C

2 番目のフィールド (この場合は2) は AIS メッセージのパーツの数を指定し、3 番目のフィールド (この場合は1) はパーツまたはフラグメントのシーケンスを示します。

メッセージが順番に到着しない場合、メッセージ フラグメントをリンクするフェイル セーフな方法はありますか? [複数のフラグメントがランダムな順序で到着する可能性があることを理解しています。]

4

4 に答える 4

1

メッセージ部分は順序に従わなければなりません。それらが連続していない場合は、メッセージを考慮に入れるべきではありません。IEC 61162標準であるドキュメントは、メッセージNMEAを含む文の構造を定義AISし、マルチパート メッセージは順番に配置する必要があると述べています。ランダムな順序でメッセージに直面している場合、メーカーはIEC 61162標準で定義されたルールに従わなければならないため、ハードウェア障害です。

于 2016-02-10T11:17:34.097 に答える
1

AIS ペイロードは NMEA メッセージ フォーマット内にカプセル化されます -- NMEA はそれらをブラック ボックスとしてのみ認識します -- したがって、NMEA パーサーがエンコードされた AIS コンテンツに敏感であるとは期待しないでください。

絶望的な場合は、各 AIS ペイロード メッセージ タイプの予想される長さでマルチパート メッセージを照合することもできますが、次の問題が発生します。

  1. 一部のメッセージ タイプ (タイプ 8: バイナリ ブロードキャスト メッセージなど) は可変長です。
  2. 常に従うとは限らないバイト境界にメッセージを配置するための規則があるため、固定長のメッセージでさえ、異なる長さ (たとえば、タイプ 15) で受信できます。

実際にできる最善の方法は、2 つのメッセージの NMEA メッセージ タイプが異なる場合 (たとえば、1 つのメッセージがAIVDMで、もう 1 つのメッセージがSAVDM)、マルチパート メッセージがインターリーブされて到着すると想定することです。これは、私が書いeach_complete_messageた NMEA 解析ライブラリで採用されているアプローチです。

さらに進んで、メッセージ部分の総数を使用してメッセージを区別することもできますが、実際には、3 つの部分からなるメッセージは非常にまれなようです。

TL;DR

いいえ、フラグメントをリンクする確実な方法はありません。

于 2016-02-22T23:03:39.183 に答える