qgmap alpha2 リリース

お知らせ:新しいバージョンが出ています。最新バージョンはダウンロードページ

qgmap の alpha2 版をリリースしました。

修正点は1点だけ。

  • 縮尺選択のスライダを実装

これだけですが、見た目はグッと Google Maps に近づきました。見た目は重要ですねぇあっかんべー

本物はスライダが左側にあるのですが、右利きの私がスタイラスで操作するには、スライダが右側の方が使いやすかったので、右側に配置しました。GM_Liteも右側にスライダがあるのはそういう理由なのでしょうか?

qgmap 0.0-alpha2 スクリーンショット
スクリーンショット (右端にスライダを追加しました)

何気にウリの1つの拡大補完もアピールしてます。笑う

今回はソースも公開します。C++初心者ということと、動くことを優先して可読性は無視しているので、とても読めたもんじゃないです。照れる

今はまだ恥ずかしいソースですが、経験とともに徐々によくなっていけばいいなと。

ライセンスはGPLです。

次はスクロール時の引っかかり改善 or 拡大処理の高速化かなぁ。

qgmap とりあえず公開

お知らせ:新しいバージョンが出ています。最新バージョンはダウンロードページ

風邪をひいてしまってしばらく進捗が止まってましたが、 qgmap がとりあえず最低限動くようになったのでα版として公開します。

動作には別途、実用工房さんの GM_Lite で切り出した地図データが必要です。

 動作確認は SL-C1000 で行っていますが、おそらく VGAザウルスであれば動くのではないかと思います。

上のリンクから、ipk ファイルをダウンロードし、ザウルスへインストールします。本体、SDカードのどちらにもインストールできます。

インストールするとアプリケーションタブに下のようなアイコンが追加されます。

 qgmapアイコン

qgmapを起動すると、以下のような画面になります。

qgmap初期起動時の画面

初回起動時は、地図データのパスが設定されていないため、地図が表示されません。

設定するには、画面左上のアイコンをクリックし、

メニュー

「Map Path」 を選択します。

すると、画像のパスを設定するダイアログが表示されますので、GM_Liteで切り出したデータの imgsディレクトリの場所を入力します。

 

パス設定ダイアログ

スクリーンショットをみて気づいたんですが、OKが2つありますねあっかんべーダサッ!

今の所は、パスは手打ちで入力になっています。いずれ「参照」ボタンをつけてGUIでディレクトリを選択できるようにする予定です。

地図表示

 OKを押すと地図が表示されます。

タッチパネル操作で上下左右にスクロールします。

キーバインドは以下のようになっています。

  • 「I」、「O」キー ・・・ ズームイン、ズームアウト
  • カーソルキー ・・・ 上下左右にスクロール
  • 「SHIFT」+カーソルキー ・・・ 大きくスクロール

特徴としては、下の2つくらいでしょうか。

  • GM_Lite on Opera よりは早い(?)
  • 指定縮尺の地図がない場合は、広域の地図を拡大して使用。(最大16倍まで) 

欠点や、制限事項は以下のとおりです。

  • 拡大処理が遅い。(スクロール時に引っかかる)
  • 拡大地図の右端、下端がおかしい。(Qt-2.3.2のバグか?)
    上のスクリーンショットでも変な線が入っているのはそのせいです。
  • GM_Lite on Operaに比べて機能が少ない
  • インプットスタイルとビュースタイルの切り替えに未対応
    起動後に切り替えると表示がおかしくなります。

今後は以下のような開発をしていく予定です。(上位のほうが優先)

  • スクロール時の引っ掛かりをなくす
    → スレッド化して、地図画像の読み出しや拡大が終わり次第随時表示するように変更する。
  • 拡大処理のバグ対応
    → Qtの拡大処理が遅いということもあり、自前で拡大処理を書いてしまおうかな。
  • ズームレベルのスライダ実装
  • 縮尺画像の表示
  • PHS、GPS連動
    → GM_Liteと同じく、/tmpに緯度・経度のファイルを書いておき、それを読み出す。
  • 住所検索
    → GM_Lite相当にしたいな

こんな感じでしょうか。ゆっくり地道に改造していきます。

ソースは近いうちに公開する予定です。

qgmap 開発メモ – 設定ファイルとかスレッドとか

あ、ザウルスでGoogleMapですが、勝手に qgmap と名付けました。とりあえず。

一応地図は表示できるようになったものの、地図データのパスを指定したり、パスを設定ファイルに保存したりしなくちゃいけない。

zaurus 内を覗いてみると、~/Settings に設定ファイルが集まっているようだ。設定ファイルのフォーマットは Windows の INI ファイルみたいに、

[セクション名]
アイテム名 = 設定値

といったフォーマットになってる。これって各アプリ自前でパースしてんのかな?? 結構手間だなぁ。

なんて思いながらググっていると、Configというクラスを使えば簡単に読み書きできることが分かった。(→参考ページ

なるほど、簡単にアクセスできるクラスがあるんだね。ちなみに、Qt3 では QSettings というクラスでできるようだ。これらを#ifdef で切り替えれば x86 でも zaurus でも動くように作れそう。

あと Qtopia-1.6 のリファレンス も発見。zaurus では Qtopia-1.5 らしいけど、Trolltechのページには1.5は見つからなかった。まぁこれで十分。

軽くクラス一覧を見てみると、QThread が無いらしい。これもググってみると、zaurus では QThread は使えないので pthread を使えと書いてある。(→参考ページ)

地図スクロール時の引っかかるような感じは、地図画像の読み込&拡大処理が終わるまで表示が待たされるために起こるので、これらの処理を別スレッドで動かそうかと思ってたんだけどなぁ。ちょっと面倒らしい。シングルスレッドでできる方法も考えてみるか。

PCのライン入力でオシロスコープもどき

PICで赤外線リモコンの続きです。

以前、パソコンのライン入力・マイク入力でオシロスコープもどきをやってる人がいると聞いたことがあったのを思い出してググってみました。

確かに、それっぽいことを書いてる人はいるものの、回路図とか詳しい情報は見つけられず。

マイク端子はプラグインパワーなので、自前の信号を入力するのはちょっと面倒そう。というか、電源ラインを変化させるってどうやるんだ?? 流れる電流を変化させればいいのかな??

マイク入力はよくわからないので、ライン入力で試すことにした。が、ライン入力ってどれくらいのレベルを入れればいいの?? 

Wikipediaのページによると、民生機では-10dBV程度らしい。-10dBVって?? dBVでぐぐると、

dBV = 20log10(V)

らしいので、計算すると0.316V。安全に見積もって50mV程度入力すればいいか。

赤外線リモコン受信モジュール CRVP1738
手持ちのパーツに赤外線受光モジュール CRVP1738 があったので、これで受信した信号を分圧してPCに取り込んでみる。

このモジュールは 7,8 年位前に学習リモコンを作ろうとして秋月で買った物で、もちろん、開封されたことすらない。あっかんべー

このモジュールは、38kHzのキャリアを復調してTTLレベルで 0, 1 を負論理で出力してくれる。これを100kΩと1kΩで分圧。出力インピーダンスが100kΩと大きいので、実際は5V出力が1/200程度になり、25mVくらいが入力される計算。

パソコンの方では、ハンディ・オシロスコープという、音声入力を2chオシロスコープとして使うためのそのものズバリのフリーソフトがあったのでこれを使ってみた。

リモコン波形
ハンディ・オシロスコープでキャプチャした波形

使い方に癖があるものの、手軽に波形が取れるのは便利。数kHz程度までの低周波信号ならこれで十分だな。いいこと知った笑顔

負論理出力なので、反転した波形なのに注意。実際は、リモコンのボタンを押すと同じ波形が2回送信される模様。この画像はその1つ目の波形。

NECフォーマットより、リーダのON期間が短いみたい。解析してみたところ、

リーダ(ON 4.5ms, OFF 4.5ms)、カスタムコード(8bit)、カスタムコード反転(8bit)、データ1(8bit)、データ1反転(8bit)、データ2(8bit)、データ2反転(8bit)、ストップビット

というフォーマットになっているようだ。カスタムコードは 0xB2 固定となっている。

いくつかのパターンを調べてみたが、とりあえず電源OFFは、データ1=0x7B, データ2=0xE0 らしい。

今日はここまで。

PICで赤外線リモコン

osziFOX
必要に駆られてPICで赤外線リモコンを作成することにしました。

FUTABAさんのページで赤外線リモコンの基礎をお勉強。フムフム。1がONで0がOFFみたいな単純な物ではないのね。しかも38kHzで点滅か。結構面倒そう・・。

とりあえず、コピーしたいリモコンを分解して、赤外線LEDの両端の電圧をへなちょこオシロosziFoxで観測。リーダ辺りのフォーマットはNECフォーマットに似ていそう。

でも、さすがにへなちょこosziFoxでは128サンプルしか取れないので、信号全体を観測することは不可能。 全体で200ms近くの信号のようでした。

話は脱線して、osziFoxですが、昔秋月で9000円くらいで売っていた超簡易ペン型オシロスコープです。今では販売されてないようです。というか、Witting Technologies社のHPすら見つからず・・・。倒産してしまったのでしょうか・・・?

リモコンフォーマットをググってみると、学習リモコンの制作系のページをいくつか発見。私は東芝のエアコンの制御をしたいのですが、さすがに東芝エアコンそのものずばりのフォーマットは見つけられませんでした。

こういうときにオシロとかロジアナとかが欲しくなるなぁ。 高いし置く場所無いから買えないけど・・。