メッセージ形式は
!AIVDM,2,1,,B,177KQJ5000G?tO`K>RA1wUbN0TKH,0*5C
2 番目のフィールド (この場合は2
) は AIS メッセージのパーツの数を指定し、3 番目のフィールド (この場合は1
) はパーツまたはフラグメントのシーケンスを示します。
メッセージが順番に到着しない場合、メッセージ フラグメントをリンクするフェイル セーフな方法はありますか? [複数のフラグメントがランダムな順序で到着する可能性があることを理解しています。]
メッセージ形式は
!AIVDM,2,1,,B,177KQJ5000G?tO`K>RA1wUbN0TKH,0*5C
2 番目のフィールド (この場合は2
) は AIS メッセージのパーツの数を指定し、3 番目のフィールド (この場合は1
) はパーツまたはフラグメントのシーケンスを示します。
メッセージが順番に到着しない場合、メッセージ フラグメントをリンクするフェイル セーフな方法はありますか? [複数のフラグメントがランダムな順序で到着する可能性があることを理解しています。]
メッセージ部分は順序に従わなければなりません。それらが連続していない場合は、メッセージを考慮に入れるべきではありません。IEC 61162
標準であるドキュメントは、メッセージNMEA
を含む文の構造を定義AIS
し、マルチパート メッセージは順番に配置する必要があると述べています。ランダムな順序でメッセージに直面している場合、メーカーはIEC 61162
標準で定義されたルールに従わなければならないため、ハードウェア障害です。
AIS ペイロードは NMEA メッセージ フォーマット内にカプセル化されます -- NMEA はそれらをブラック ボックスとしてのみ認識します -- したがって、NMEA パーサーがエンコードされた AIS コンテンツに敏感であるとは期待しないでください。
絶望的な場合は、各 AIS ペイロード メッセージ タイプの予想される長さでマルチパート メッセージを照合することもできますが、次の問題が発生します。
実際にできる最善の方法は、2 つのメッセージの NMEA メッセージ タイプが異なる場合 (たとえば、1 つのメッセージがAIVDM
で、もう 1 つのメッセージがSAVDM
)、マルチパート メッセージがインターリーブされて到着すると想定することです。これは、私が書いeach_complete_message
た NMEA 解析ライブラリで採用されているアプローチです。
さらに進んで、メッセージ部分の総数を使用してメッセージを区別することもできますが、実際には、3 つの部分からなるメッセージは非常にまれなようです。
いいえ、フラグメントをリンクする確実な方法はありません。