C言語・・・勉強の日が浅いのでかなり手こずった(笑)
ここまで出来れば後は同様の処理なのでなんとか形になると思う。
アセンブラの時はGT-720Fの文字列をキャラクタ液晶にそのまま表示しただけでしたが・・・
※;液晶に数値を表示する時もテーブルを参照して数字文字に置き換えなければならない
画像はアセンブラの時のもの
C言語では文字列を配列に格納する。クセがあって手こずりましたが、アセンブラと似たプロセスで1文字づつ処理して何とか出来ました。
メモ;配列はテーブルと同様にエンドポイントを0で識別している。設定配列数をオーバーすると変なアドレスにジャンプして動作がおかしくなるのはアセンブラと同じ。
もしかしたら、もっとスマートな手法があるかもしれませんが(笑)
また、C言語なら文字列を数値、それも浮動小数点実数に変換できる関数がありますから下記のようなことも出来ます♪
NMEA-0183では緯度(経度も同様)が3537.4560と出力される。
これは35度37.4560分の意味である。
度に換算すると35+37.4560/60=35.6242となる。変数は浮動小数点実数に変換されていますので球面三角法の公式を使って2地点の最短距離を算出したりも出来ちゃうと思う(笑)
メモリが許せばですが(笑)
文字列の数値変換
idol = atof(idodo) + atof(idohn)/60; //数値変換
lcd_cmd(0x94); //3行目
printf(lcd_data,"=%2.4fdeg",idol);
getc()関数で1文字受信したら直ちにパソコンに送信する簡単な関数を作ったので同時にこんなことが出来ます。
unsigned char getc_p()
{
// char data1;
data1=getc();
printf("%C",data1);
return data1;
}
これを見る限りでは測位状態だと3回に1回、GPGSVセンテンスが出力されている?
それともプログラムの影響かな(笑)
最近のコメント