2008年04月07日
備忘録です。
今回の苦労内容と忘れないためのメモです。
読んでも・・・相当意味不明な内容です(笑)
まず、知らなかったことなのですがWindowsMobile機の標準時計にはmsecの概念が無いことです。
SYSTEMTIMEを使用してもWindowsMobile機ではmillisecondsに”0”が入ってしまいます。
なのでwMillisecondsでどんなに頑張ってmsecを取得しようとしても”0”です(笑)
これでは1秒間に何点も計測するGPSでは使い物になりません。
1秒間の間に同じ数字が羅列されても困ってしまいますから・・・。
そこでTickCountを使用します。
これを使用することにより、システム起動時からの時間をmsec単位で取得することができます。
じゃあ一体これをどうやって使っていくか・・・。
結局、計測してからのスタート時間をmsec単位で表示することにしました。
次に壁は・・・チェックボックスの状態取得にファイルの書き込み。
これに関してはVBではやったことがあるので何とか・・・クリア。
んでもって最大の難関だったのが・・・GPSGetPosition(); API呼んで、
GPS_POSITION 構造体の経度や緯度は本にも載っているので直ぐにわかるが、他の情報を見るためには何をすればいい?
検索しても日本語が見つからない。
使っている人って少ないのかな・・・
んでもってやっと見つけたのが、以下の文章。
この構造体には他の関連情報よう針路、速度、サテライトでし、場所情報を取得に使用しますと緯度、経度など、場所情報が含まれています。
この構造体で表されるデータを取得するには呼び出します GPSGetPosition.
構文
typedef struct _GPS_POSITION {
DWORD dwVersion;
DWORD dwSize;
DWORD dwValidFields;
DWORD dwFlags;
SYSTEMTIME stUTCTime;
double dblLatitude;
double dblLongitude;
float flSpeed;
float flHeading;
double dblMagneticVariation;
float flAltitudeWRTSeaLevel;
float flAltitudeWRTEllipsoid;
GPS_FIX_QUALITY FixQuality;
GPS_FIX_TYPE FixType;
GPS_FIX_SELECTION SelectionType;
float flPositionDilutionOfPrecision;
float flHorizontalDilutionOfPrecision;
float flVerticalDilutionOfPrecision;
DWORD dwSatelliteCount;
DWORD [GPS_MAX_SATELLITES] rgdwSatellitesUsedPRNs;
DWORD dwSatellitesInView;
DWORD [GPS_MAX_SATELLITES] rgdwSatellitesInViewPRNs;
DWORD [GPS_MAX_SATELLITES] rgdwSatellitesInViewElevation;
DWORD [GPS_MAX_SATELLITES] rgdwSatellitesInViewAzimuth;
DWORD [GPS_MAX_SATELLITES] rgdwSatellitesInViewSignalToNoiseRatio;
} GPS_POSITION, *PGPS_POSITION;
メンバ
dwVersion
アプリケーションによって予想 GPS 中間ドライバのバージョンです。 構造体を渡す前に設定する必要があります。 GPSGetPosition. GPS_VERSION_1 する必要があります。
dwSize
バイト単位で、構造体のサイズ。 構造体を渡す前に設定する必要があります。 GPSGetPosition.
dwValidFields
構造体のこのインスタンス内の有効なフィールド。 このフィールドはいくつの組み合わせ GPS_VALID_ フラグ、または 0 がないフィールドが有効な場合。 有効なフィールド、古い場所データできます、GPS ハードウェア異なります (dwMaximumAge のパラメータによって制御します GPSGetPosition 呼び出す)、および、現在のサテライト信号、特に。
dwFlags
呼び出しで取得データの状態に関する情報 GPSGetPosition. このフィールドは組み合わせです。 GPS_DATA_FLAGS_ フラグ。
stUTCTime
GPS サテライトで提供される情報に従って協定時刻 (UTC)。
dblLatitude
緯度、度で。 北緯度正の数値を示します。
dblLongitude
経度、度で。 東経度正の数値を示します。
flSpeed
速度をノット (海里)。
flHeading
度で見出し。 0 の針路北は true です。
dblMagneticVariation
磁気バリエーション、違いをある true 北に方位と、方位に磁気コンパスの表示。 東正の数値を示します。
flAltitudeWRTSeaLevel
海面高度に関して、m で高度。
flAltitudeWRTEllipsoid
高度で、WGS84 ellipsoid に関して、m。 詳細について使用して、GPS と、WGS84 ellipsoid の参照してくださいこの NMEA Web site.
FixQuality
GPS の無効、1 つです修正プログラムの品質、通常の GPS または差分 GPS (DGPS)。 このフィールドで、値の 1 つ格納、 GPS_FIX_QUALITY 列挙体。
FixType
GPS の型解決、2-D (緯度および経度、3 つのサテライトからのみ) または 3-D (緯度、経度、および高度から 4 つ以上のサテライト)。 このフィールドで、値の 1 つ格納、 GPS_FIX_TYPE 列挙体。
SelectionType
かどうかまたは 2-D 3D モードが自動または手動で選択されます。 このフィールドで、値の 1 つ格納、 GPS_FIX_SELECTION 列挙体。
flPositionDilutionOfPrecision
度を全体的な位置を受ける dilution (PDOP) 位置の位置。 PDOP は、GPS 修正プログラムを提供するサテライトの場所をよって発生します。 低い数値をより正確な位置を示します。 1.0 の値を最小限の dilution (最も高い精度) 示し 50.0 の値は、ほとんどの dilution (最も低い精度) を示します。
flHorizontalDilutionOfPrecision
度を水平方向の位置 (緯度および経度) を受ける水平位置 (HDOP) の dilution。 HDOP は、GPS 修正プログラムを提供するサテライトの場所をよって発生します。 低い数値をより正確な位置を示します。 1.0 の値を最小限の dilution (最も高い精度) 示し 50.0 の値は、ほとんどの dilution (最も低い精度) を示します。
flVerticalDilutionOfPrecision
度を縦方向の位置 (高度) を受ける垂直位置 (VDOP) の dilution。 VDOP は、GPS 修正プログラムを提供するサテライトの場所をよって発生します。 低い数値をより正確な位置を示します。 1.0 の値を最小限の dilution (最も高い精度) 示し 50.0 の値は、ほとんどの dilution (最も低い精度) を示します。
dwSatelliteCount
位置を取得するために使用サテライトの数です。
rgdwSatellitesUsedPRNs
PRN (擬似ランダム ノイズ) の位置を取得するために使用、サテライト番号。
dwSatellitesInView
ハードウェア GPS の表示でサテライトの数です。 この値を 0 から範囲します。 GPS_MAX_SATELLITES.
rgdwSatellitesInViewPRNs
PRN (擬似ランダム ノイズ) ハードウェア GPS の表示で、サテライトの番号。
rgdwSatellitesInViewElevation
昇格、ハードウェア GPS の表示で、サテライトの度で。
rgdwSatellitesInViewAzimuth
azimuth、ハードウェア GPS の表示で、サテライトの度で。
rgdwSatellitesInViewSignalToNoiseRatio
ハードウェア GPS の表示で、サテライトのノイズ比率に信号。 大きい信号強度が高い数値示します。
解説
この構造体のフィールドの大部分は、NMEA で定義されているフィールドから変換します。 詳細についての性質、フィールドの追加説明など、標準 NMEA 参照してください。
だそうだ。
まぁ、サンデープログラマにはちょっと難しいです(笑)
ブログ一覧 |
自作GPSデータロガー | 日記
Posted at
2008/04/07 22:36:34
タグ
今、あなたにおすすめ