VisualStudio2010のC++でGPSからGGAセンテンスを読み取り時刻と経度・緯度を表示するプログラムを書いています。しかし、正常にビルドされるものの、画面に正しく表示されません。以下にコードを記すのでどこが悪いのかご指摘いただきたく思います。コードの中身は下記のリンクにあるzipファイルからお願いします。
さらにgoogleマップへの表示方法もご教授いただきたく思います。
https://skydrive.live.com/redir?resid=9A0EE6F5F2 …
No.3ベストアンサー
- 回答日時:
1行読み込めたら、解析処理に放り込む…って感じでしょうか。
BOOL TransGGA(unsigned char *Recv)
{
BOOLl Result = FALSE;
if(Recv && strncmp(Recv, "$GPGGA,", strlen("$GPGGA,")) == 0) {
unsigned char SumCalc;
unsigned char *SumPt;
for(SumPt = Recv, SumCalc = *SumPt;*SumPt && *SumPt != (unsigned char)'*';SumPt++, SumCalc += *SumPt);
if(*SumPt && SumCalc == (unsigned char)strtol(SumPt, NULL, 16)) {
/* strtok()などで','で区切って解析。 */
/* 正しく解析できたらResult = TRUE; */
}
}
return Result;
}
とりあえず、こんなトコですかねぇ……。
動作は未確認。というかGPSのデータ送信してくれる機器無いですし。
# GPS内蔵機器はいくつかありますがWindowsにシリアル接続でデータ渡せないし。
先頭の特定文字があるかどうかを判定して、チェックサムの算出&判定してます。
その後の','で区切って…ってのはCSV解析とかでよく出てくる例ですから、
検索するとそれらしいモノは見つかるでしょう。
トークン区切りできたら、$GPGGA formatの仕様に沿って変換したりとか……。
# strtok()だと、元の文字列破壊したかと思いますので、その辺りはよろしく処理してください。
No.2
- 回答日時:
>ちなみにTransGGA()でのフォーマット解析処理はどのようにするとよいでしょうか?
まあ、いろいろな方法がありますが……
私なら、とりあえず1行読み込んでから、','で区切って、最初のフィールドが
"$GPGGA"か判定、その後は','で区切りながら各フィールドを取得していく……でしょうね。
まぁ先にchecksumの確認するかも知れませんけど。
# checksumの算出方法調べる必要はあるかも知れませんけどねぇ……。
# 行の先頭から'*'の位置までの合計(下位8Bit)…かな?
回答ありがとうございます。
色々試しているのですがなぜかうまくいかないんですよね・・・
なにか具体的なコードかなにかありますでしょうか?
No.1
- 回答日時:
ざっとしか見ていませんが……
>どこが悪いのかご指摘いただきたく思います。
ReadFile()の戻り値を確認していないようですが……
読み込み失敗とか考慮していますか?
1バイト読み込む度に、その後のstrcmp()など実行していますが、
コストが掛かりすぎる。とは思いませんか?
1行読み込みしてから処理するようにした方がいいかと思いますが……。
TransGGA()でのGPGGA formatの解析処理が…正しくない様に見えます。
http://ssro.ee.uec.ac.jp/ssro/uchuu-tsuushin/gps …
1行取得完了後に、それぞれのフィールドを分解して解析すべきかと。
早速の回答ありがごうとざいます。初心者なもので読み込み失敗などはまったく考慮していないです・・・・
ちなみにTransGGA()でのフォーマット解析処理はどのようにするとよいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- HTML・CSS HTMLの条件によって表示方向が切り替わる実装のコードを教えて下さい。 (コードは下記リンクを参照) 1 2022/09/25 14:35
- JavaScript 【GAS】WEBアプリでハイパーリンクを挿入したい 1 2023/03/12 19:20
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- Visual Basic(VBA) リストボックスに表示されたファイルを削除したい 1 2023/04/19 12:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
もしかして
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
Do~Loopした回数をカウントしたい
-
switch の範囲指定
-
VBAでセルに値が入力されるまで...
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
リョウ・・・量?料?
-
Loadイベント中にほかのイベン...
-
findは動くがfindnextがマクロ...
-
自分の不注意で仕事で乗り合い...
-
VBの質問#if 0 then ってどう...
-
EXCEL VBA マクロ 実行する度に...
-
[ホルマール」って何ですか
-
VBA SaveChanges 上書きされない
-
vba 空のデータをSplitする時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
switch の範囲指定
-
DoEventsがやはり分からない
-
VBの質問#if 0 then ってどう...
-
UMLでの例外処理
-
Do~Loopした回数をカウントしたい
-
VB.NET Excelを読み込んでDataT...
-
月度は何て読みますか?
-
findは動くがfindnextがマクロ...
-
リョウ・・・量?料?
-
iD
-
VBA SaveChanges 上書きされない
-
Select Case文でこのようなこと...
-
Loadイベント中にほかのイベン...
-
セルの値が0はクリアするマクロ
おすすめ情報