NMEAプロトコルを使用したGNEA受信機データエミュレーター

はじめに



NMEAプロトコルを使用してGNSSデータを使用してアプリケーションをテストする必要がありました。 それは、彼が飛行機を操縦するためのドラフトプログラムに取り組んでいたという事実に関連しており、空中でテストするのは当然のことですが、地上のGNSS受信機で車を運転するのはあまり便利ではないので、仮想パラレルポートで移動していると思われる機器からのNMEAプロトコルデータが必要でした。 最初は別のソフトウェアを探していましたが、適切なものを見つけると思いましたが、それらのほとんどは有料であり、データエミュレーション制御はあまり便利ではありませんが、NMEA標準のほとんどすべてのパラメーターをエミュレートします。 しかし、原則として、座標、速度をエミュレートするシンプルなものが必要であり、かなり便利で論理的な制御が必要でした。 そのため、C#でこの種のアプリケーションを作成する必要がありました。

ちょこ



NMEA(「National Marine Electronics Association」)-正式名称は「NMEA 0183」-船舶(通常は航法)機器同士の通信用のテキストプロトコルです。
データはオファーの形式で送信されます。 提案の形式は次のとおりです。
$ AAAAA [、<data>] * hh 、ここで:
$-文の始まりの記号(コード24h);
AAAAA-プロポーザルの5文字のアドレス(名前)。
[、<data>]-コンマで区切られたデータフィールドのリスト(2hコード);
*-チェックサムのサイン(コード2Ah);
hhはチェックサムです。

例文:
GGA-GPS位置データ
観測に関連する時間位置とデータ。
$ GPGGA、hhmmss.sss、llll.ll、a、yyyy.yy、a、x、xx、xx、xx、xx、M、xx、M、xx、xxx * hh

4行をエミュレートする必要がありました。

エミュレーションは次の順序で編成されます。

Fly_nmea + Androidセンサー

より便利なテストのために、Androidセンサーからのデータの受信も調整しました(傾斜角)。 Android over UDPは、次のタイプの2行を送信します。

エミュレーションアプリケーションでは、それらを受け入れ、傾斜角に基づいてパラメーターを変更します。

エミュレーションアプリケーションでは、プログラムインターフェイスを介して制御からAndroidセンサーに切り替えることができます。

Fly_nmeaを接続する

COMポートをエミュレートするには、Virtual Serial Ports Emulatorも役立ちます。たとえば、2つの仮想COMポートの接続を設定する必要があります。たとえば、COM1 <-> COM6、Fly_nmeaはデータをCOM6に送信し、COM1にNMEAプロトコルを使用するプログラムがそれを取得します。

おわりに


一般に、私はそのようなソフトウェアを探すのにより多くの時間を費やしました、そして私が完全に満足するだろうと気づかなかったので、私はより速くそれを書きました。 私が取り組んでいたプロジェクトに加えて、エミュレータをNMEAプロトコルを理解するプログラム(2GisやSAS planetなど)に接続することも非常に成功しました。




FlyNMEAとAndroidセンサー(UDP経由でセンサーからデータを送信するプロジェクト)
ポートエミュレーションのVSPEはこちら

upd:エミュレートされたデータ周波数5 Hz

Source: https://habr.com/ru/post/J129316/


All Articles