0

私はgpsトラッカーのnmea処理に取り組んでおり、この方法で値のリストとして処理しています

"""
information package exmaple
41719.285,A,1623.5136,S,07132.9184,W,017.8,203.5,040613,,,A*6B|1.6|2375|1010|0000,0000|02CC000A138E96D6|11|0029560C
"""
gprmc, hdop, altitude, state, ad, baseid, csq, journey = information.split('|')
ptime, gpsindicator, lttd, ns, lgtd, ew, speed, course, pdate, dd, checksum = gprmc.split(',')

次に、データ パッケージが大きくなることがありますが、適切な形式になっていることがあります。これは、一部の顧客が必要以上の余分なデータでデバイスを再構成し、プログラムをクラッシュさせるためです。そのため、コードがこれらのパッケージでクラッシュしない方法を探しています。ケース。

4

5 に答える 5

1

私はやや慣れているので、ちょっとした副次的な答えです...

Python を使用して効果的な GPS データ (特に NMEA 0183) を解析することに興味がある場合は、twisted.positioning に興味があるかもしれません。twisted に着陸しようとしているブランチです。 GPS デバイスからの有用なデータ。

または、同じ役割を果たすために gpsd に興味があるかもしれません。最終的に twisted.positioning は gpsd プロバイダーを取得するため、同じコードを記述して gpsd を介してデータを供給することができます。または、その気があれば、他の場所から測位データを取得することもできます。インターフェイスは非常に一般的です。

于 2013-06-13T19:03:55.470 に答える
1

簡単な修正:

"""
information package exmaple
41719.285,A,1623.5136,S,07132.9184,W,017.8,203.5,040613,,,A*6B|1.6|2375|1010|0000,0000|02CC000A138E96D6|11|0029560C
"""
# Unpack only the eight first values to the eight variables
gprmc, hdop, altitude, state, ad, baseid, csq, journey = information.split('|')[:8]
# Unpack only the eleven first values to the eleven variables
ptime, gpsindicator, lttd, ns, lgtd, ew, speed, course, pdate, dd, checksum = gprmc.split(',')[:11] 

もちろん、より良いアプローチは、情報の有効性とその数を事前に確認することです。

于 2013-06-13T15:27:55.907 に答える