qgmap 0.1.2 をリリースします。→ダウンロードページへ
最近は GW-CF54G のドライバをいじっていたりしたので、また間が開いてしまいました ^^;
今回の変更点は以下のとおりです。
- PHS位置取得機能
- フリーハンド範囲指定機能でメモリ不足になる問題を修正
(bxk07344 様ご報告ありがとうございます) - 緯度経度指定ジャンプ機能のバグを修正
(みじま様ご報告ありがとうございます) - 描画処理の見直し (若干高速化された?)
今回の目玉機能は PHS 位置取得機能です。
bitWarp を含む、WILLCOM のインフラを使った PHS カードで位置情報を取得します。
ちなみに、bitWarp等に契約していなくてもカードさえあれば位置情報は取得できます(たぶん)。
ダイアルするわけではないので通信料金もかかりません(たぶん)。
PHSカードがスロットに挿してある状態で「P」キーを押すと近くのPHSアンテナの位置情報を取得し、その位置へスクロールします。アンテナの位置を示しますので、現在位置と大きく異なる可能性があります。参考程度に考えてください。
バグフィックスとしましては、bxk07344様にご報告いただいたメモリ不足の問題と、みじま様にご報告頂いた緯度経度していジャンプ機能の計算ミスを修正しています。
また、画面描画処理(paintEvent)を、必要な部分のみ行うように修正しました。
これにより、若干スクロールが高速になっています。
マーカをOFFにすると、特に高速化を実感できると思います。
今回も苦手なダイアログ (PHS位置取得時の進捗ダイアログ) を実装しています。
前回 tera 様に教えていただいたため、widget の配置はすんなりいったのですが、ダイアログの「OK」ボタンを消す方法が分からず、上記のスクリーンショットの通り、OKボタンが表示されたままです ^^;
ちなみに、PHS位置取得機能のATコマンドや pppd, chat コマンドの使い方は tera 様の gm_lite の phs_zau のコマンドラインをそのままパクってます ^^;
早々の対応ありがとうございます。
無事広い範囲のスクリプトを作成することができました。
で、目玉の「PHS位置取得機能 」ですが、早速試してみました。
コレいいです。
GPSだと接続するのにいろいろと手続きがいるんですが、PHS(Bitwarp)なら外出するときはほとんど挿した状態にしています。
便利な機能ありがとうございます。
さっそく問題の修正を確認頂きありがとうございます。
メモリ不足問題のおかげで、メモリ周りを見直すいい機会になりました。
ありがとうございました!
GPS はまだちゃんと使ったことないので分からないですが、
BitWarp は、外でネットに繋げるために基本的に持ち歩いているので
気軽におおよその位置を調べるには手軽で便利ですよね。
私も今日会社帰りに位置情報を取得しながら帰ってみたのですが、
思っていたよりも精度よく位置が検索できたので結構使えそうです ^^
bucchiさん、Version Upご苦労様です。
さっそく0.1.2を使わせて頂いています。
> bitWarp等に契約していなくてもカードさえあれば位置情報は取得できます(たぶん)
契約が切れたbitWarpカードを挿してみたのですが、カードが挿されてないよ、的なメッセージが出て情報取得は出来ませんでした。残念!
とは言っても本命はGPSですので、そちらをお待ちしてます。
今さらながらの要望なのですが、ダブルタップした位置にマップ移動する機能が欲しいです。gm_liteにもこの機能有りましたし、ドラッグよりも楽なのでついダブルタップしちゃいます。
P.S.
住所検索ですが、gm_lite.htmlの中から”k”キー機能だけを取り出してCtrl-V用に使おうと試しています。現状ではPC用ブラウザでは動作するものの、肝心のZaurus用Operaでは上手く動作せず、まだ試行錯誤中です。
契約切れのカードでダメでしたか。
契約切れてもカードに何かする訳じゃないので使えると思ったんですが・・・。
もしや、シリアルカード以外ははじくチェックが悪さしているのかも??
私は SII の MC-C450 というカードで確認したのですが、sugarware 様は
どのカードを使われていますか?
できれば cardctl ident を実行した結果も教えていただけると、対応できるかもしれません。
住所検索に関してですが、なるほど、その機能だけ GM_Lite を使うのですね。
最近のブラウザでは JavaScript からクリップボードも操作できたと思うので、
確かにそれなら便利そうです。
私も gm_lite.html をいじったことがあるのですが、Opera 7 は
結構実行できない JavaScript があった気がするので、
使える命令だけでうまく動作するようにするのが大変かもしれません。
その時に Opera 7 でもちゃんと動作する gm_lite.html を作った tera 様はすごい!!
と感服しました。
私のPHSカードもbucchiさんと同じMC-C450でした。
So-netからただで貰いさらに2ヶ月無料で使えた在庫処分カードです(^^;
qgmapで”p”キーを押すと以下の順にダイアログが開きます。
(1) カードの有効化
(2) レジュームに失敗しました
一応 cardctl identの結果も上げておきます。
Socket 0:
product info: “SII”, “PHS MC-C450”
manfid: 0xc01e, 0x0000
function: 2 (serial)
Socket 1:
no product info available
参考になれば良いのですが…
住所検索ですが、Opera7ではクリップボードへの書き込みが出来ないようなので、経度緯度を新たにテキスト出力し、それをマニュアルでCtrl-Cでコピーする事になりそうです。ちょっと面倒ですが、簡易手段なのでこれでもOKかな。
同じカードですか・・・。
それならなおさら動きそうなんですけどねぇ。
それでは、コマンドラインで resume してから試していただけますか?
$ cardctl resume 0
を実行してカードの LED が点灯しているのを確認してから qgmap 上で P キーを押してみてください。
それでダメだとちょっと分からないですね。。。
yosi 様も契約切れの PHS カードが使えているようですし、
「のぼぶろぐ」の bxk07344 様も契約切れの PHS カードで契約中のアカウントで接続で来ているようですので、
やはり契約切れカードでも使えそうなのですけどね・・。
(参考) http://bxk07344.blog.so-net.ne.jp/2008-10-16
お教え頂いた cardctl resume 0 を実行したところ、一瞬点灯して消えていたLEDが点灯するようになりました。
“P”を押すとGet Location from PHSダイアログが出て、”位置情報取得中・・・”の表示と共にプログレスバーが動きます。
ところが、プログレスバーが91%のあたりで”カードの無効化”と表示されてダイアログが閉じ、直後に”位置情報の取得に失敗しました”との表示のErrorダイアログが開きます。
何度も繰り返してみたのですが毎回上記の動作でした。
通信そのものは出来ている様なのですが、最終的に何かしら失敗しているみたいです。
PHSアンテナから位置情報の取得ができていなそうな雰囲気ですね。。
通信内容を確認してみたいので、お手数ですが、以下のコマンドを実行してみていただけますか?
1. root権限に
$ su –
2. カードを resume
# cardctl resume 0
LED が点灯するまで1,2秒待つ
3. 位置情報を取得
# pppd ttyS3 connect ‘chat -s -v -t 10 ABORT ERROR “” AT@LBC1 OK AT@LBC? OK’
ただ、1回目はほぼ間違いなく取得できないので、Ctrl+C 連打して一度止めたあと、もう一度実行してみてください。
うまくいくとこんな感じの出力が出力されます
send (AT@LBC1^M)
expect (OK)
AT@LBC1^M^M
OK
— got it
send (AT@LBC?^M)
expect (OK)
^M
AT@LBC?^M^M
XXXXXXX^M
N35:XX:XX^M
E139:XX:XX^M
^M
OK
— got it
どうでしょうか・・・。
私の結果は以下の様になりました。
abort on (ERROR)
send (AT@LBC1^M)
expect (OK)
AT@LBC1^M^M
OK
— got it
send (AT@LBC?^M)
expect (OK)
^M
AT@LBC?^M^M
XXXXXXX^M
NXX:XX:XX^M
EXXX:XX:XX^M
^M
OK
— got it
Serial connection established.
Using interface ppp1
Connect: ppp1 <--> /dev/ttyS3
LCP: timeout sending Config-Requests
Connection terminated.
Receive serial link is not 8-bit clean:
problem: all had bit 7 set to 0
位置情報そのものは得られているようですね。
最初の1行と最後の7行がエラーメッセージっぽいですが、私には理解不能でした。
宜しくお願いします。
なんとなく分かったような・・・・。
とにかく、位置情報が取得できているといるということは、
対応可能なはずですので、ちょっと調べてみます。
あと、位置情報に関する部分はこちらで伏せ字に変更させていただきました。
私も何も考えずにコピペしていたのですが、ちょっと不安になったので ^^;
> なんとなく分かったような・・・・。
私のログ情報がお役に立てたようで良かったです。
私のZaurus環境と上手く動作している人のZaurus環境になんらかの違いがあるんですかね。
> こちらで伏せ字に変更させていただきました
私もちょっと悩んだのですが、最寄のPHSアンテナの位置と言うことなので、まあいいかとそのまま載せちゃってました。
でもまあ、公開する必要の無い情報は公開しない方が書手も読手も安心ですね。
通りすがりのものです。
契約切れbitWarpカード(MC-C550)正常動作を確認しております。報告まで。
あ、いつも大変便利に利用させていただいてます。>作者様
はじめまして。
qgmap お使い頂きありがとうございます。
やはり契約切れでも使えましたか!
契約してなくても簡易 GPS がわりになるってなかなか便利ですよね。
契約切れカードと、MC-C550 の両方の動作報告ありがとうございます!
これからも qgmap をよろしくお願いします・・
qgmap使かわせて頂いてます、ありがとうございます
PHSによる位置検出が便利ですね。
ただあまり精度が良くないので
多重サンプリングにて精度を上げて使っています
遅いですけど(^^;
GPSカードとか使えるようになるといいなぁ:-)
51c51
< int i; --- > int i,j;
55a56
> double sumlat=0,sumlon=0;
62a64,66
>
> for(j = 0; j < 4; j++){ >
81d84
< printf("%lf %lfn",lat.toDouble(&state),lon.toDouble(&state)); 84a88,93 > if(ret)
> pos.setPos(lat+QString(“,”)+lon, false);
>
> printf(“sum=%f %fn”,pos.getLat(),pos.getLon());
> sumlat+=pos.getLat();
> sumlon+=pos.getLon();
96c105,109
< progress.hide(); --- > }
> sumlat=sumlat/4;
> sumlon=sumlon/4;
> printf(“sum=%f %fn”,sumlat,sumlon);
> pos.setLatLon(sumlat,sumlon,1);
98,99c111
< if(ret) < pos.setPos(lat+QString(",")+lon, false); --- > progress.hide();
tattsuu様
なるほど。多重サンプリングですか、興味深いです!
なんとなくイメージで、一番近いアンテナのみが毎回測定されるものだと思っていました。
パッチありがとうございました!私もちょっと試してみます。
GPS はいずれ使えるようにする予定です。ただ、最近は時間があまりとれないので、気長にお待ちいただけるとありがたいです。
接続する時によっては毎回同じところに繋がったり
ばらばらになったりします。
基地局が空いたり埋まったりしているのかな?
間隔を空けるとまた違うのかな?
自分ところは田舎なんで都会だとまた違うかも。
GPS気長にまってますね(^^
オフトピに返信になりますが、件名は私も悩みます。
毎回「ありがとうございます」じゃ能がないし・・・。
PHS は接続のたびにアンテナが変わるんですね。
明日あたりウロウロしながら試してみます ←かなり怪しい人・・ ^^;
qgmap便利に使ってます、ありがとうございます
ただGoogleMapから落とせなくなってますけど orz
それはさておき一点要望を
zaurusの液晶の特性のせいか白飛びで細い道路が見えにくいです
描画時とかに補正できないでしょうか?
初めまして、青嵐様
Google側の対応で現状の gm_lite では制限されてしまうようですね。
tera 様は対応できそうだとお話しされていたので、近いうちに対応版が公開されると思います。
白飛びについては確かにちょっと見づらいですねぇ。。
色補正はできないことはないのですが、たぶん結構重くなってしまうのではないかと思います。
ちょっと試してみて、実用的な速度が出るようでしたら実装しますね。
スピードによっては実装見送りになるかもしれないので、ご了承を・・・。
ご意見ありがとうございました。
これからもよろしくお願いします!
ダウンロードした画像を予め補正しておく方法もあります。
この方法であれば、表示時に余分な処理を行わなくて済むのとzega等からMapを使用する際も対応出来ます。
変換には時間がかかりますが、イメージ化する場合には合わせてガンマ値補正してしまうのがお勧めです。
補正方法ですが、
CygwinにImageMagickをインストールし、以下のようなシェルスクリプトを実行すればnewディレクトリ以下に補正されたイメージファイルが作成出来ます。
———-
#!/bin/bash
find imgs -type f -size +1c > imgslist.txt
while read LINE
do
[ -d “$(dirname “new/$LINE”)” ] || mkdir -p “$(dirname “new/$LINE”)”
convert -quality 100 -depth 8 -gamma 0.35 +repage $LINE new/$LINE
done < imgslist.txt rm imgslist.txt ---------- 補正するガンマ値については"-gamma 0.35"の値を調整してください。(昼間、最大輝度で表示したときに確認出来る程度にしてあります)
mumumu 様、はじめまして。
なるほど。画像を先に処理してしまうということですね。
分かってしまえば簡単なことですが、qgmap 側で何とかすることしか頭に無かったので、私にはその発想はありませんでした (^^;
前処理してしまえば表示時のオーバーヘッドもかからないし、とてもグッドアイデアですね。
一応、試しに qgmap での処理もやるだけやってみますが、重くなりそうなら mumumu 様の方法で本対処にしましょう。