« April 2008 | Main | June 2008 »

2008.05.30

[N810]NOKIA N810でGPSロガーHOLUX m-241のログをBluetooth経由で取得!gpsbabel-1.3.5-beta20080514

gpsbabelのCVS先端だとHOLUX m-241に対応しているとのことだったので、NOKIA N810 (OS2008)向けにビルドしてdebパッケージを作ってみました。

R0012721_3

ダウンロード

「gpsbabel-1.3.5-beta20080514.deb」をダウンロード

インストール

例によって、Application managerからインストールするにはRed pill modeにする必要があります。

/usr/local/binにインストールされるので、PATHを通す必要があります。

使い方

NOKIA N810とHOLUX m-241との接続はBluetooth経由となります。 カーネルモジュールをインストールしたとしても、バスパワーの関係で、直接USBでつないでも認識しないと思います。

NOKIA N810とHOLUX m-241とのペアリングを済ませておく必要があります。

#!/bin/sh

#m-241
BTADDR=00:00:00:00:00:00

dbus-send --system --type=method_call --print-reply \
 --dest=com.nokia.btcond /com/nokia/btcond/request \
  com.nokia.btcond.request.rfcomm_bind string:$BTADDR string:SPP

その後に、上記のスクリプトのBTADDRをHOLUX m-241のアドレスに書き換え、実行し、/dev/rfcomm0にバインドします。(先客が居れば、/dev/rfcomm1〜にバインドされます)

バインドされたのが/dev/rfcomm0でなかったら、以下は実際にバインドされたものに読み替えてください。

ログをダウンロード

$ gpsbabel -t -w -i m241 -f /dev/rfcomm0 -o gpx -F out.gpx

ダウンロードした後にm-241からログを消す

$ gpsbabel -t -w -i m241,erase -f /dev/rfcomm0 -o gpx -F out.gpx

この例ではログを取得後にGPXフォーマットで書き出していますが、これをMemo Mapperで直接TrackやRouteとして読み込み、地図上にプロットすることができます。

おまけ: WBT-201の場合

WintecのWBT-201でも、ほぼ同様の手順でログの取得ができます。 オプションが少し変わるだけです。

$ gpsbabel -t -w -i wbt -f /dev/rfcomm0 -o gpx -F out.gpx

ダウンロードした後にWBT-201からログを消す

$ gpsbabel -t -w -i wbt,erase -f /dev/rfcomm0 -o gpx -F out.gpx

gpsbabelが対応している機種(m-241以外のMTK搭載機種、DG-100/BT-335等)なら、同じ手順でログの取得が可能だと思います。

GTK G-Rays 2がポートされているので(参考)、WBT-201の場合はログの取得のほか、設定変更が可能です。

Continue reading "[N810]NOKIA N810でGPSロガーHOLUX m-241のログをBluetooth経由で取得!gpsbabel-1.3.5-beta20080514" »

2008.05.29

[Windows Mobile]QuicTodayからTwitterに投稿する試み

QuicTodayからTwitterに投稿できたら便利だろうなと思い立ち、それを可能にするブリッジをPHPで書いてみました。

http://moyashi.0web.cjb.net/index.php

上記のURLにアクセスし、フォーム にTwitterのユーザ名とパスワードを入力。
「Create」ボタンを押すと投稿のためのURLが発行されますので、それをQuicTodayに登録します。

結果が分からず不安であれば、適当な文字を入れて試してみてください。

ログも何も取っていませんが、あなたの入力したユーザ名、パスワードを私が知る方法はいくらでもありますので、利用に当たっては他のAPI利用サイト同様、管理者たる私を信頼していただくほかありません。無保証です。

QuicTodayから投稿できるのは、63バイト+終端文字1バイトのようです。UTF-8ですので、1文字3バイト換算で21文字。2008年7月8日のバージョンアップで255文字に増えたそうです。制限を超えて投稿したところ、末尾が切れるのみならず、化けたことがありました。
W-ZERO3シリーズの縦位置でQuicTodayのテキストフィールドいっぱいいっぱいに「あ」を入力すると、ちょうど21文字(デフォルトの文字サイズ時)。
テキストフィールドからはみ出ない短いメッセージしか送れないと考えた方がいいでしょう。

また、QuicTodayの知られた不具合として、IE(Operaも?)が起動中だと、QuicTodayが無反応になるというものがあります。
このような状態になった場合、IEを終了させると復帰することが多いです。
PWRボタン(電話切)を押してもIEを終了しない設定にしていると、この罠にハマる可能性が高いです。
これも7月8日のバージョンアップで解消されたかもしれません。

QuicTodayへの登録方法

  • 前出のサイトで作ったURLをクリップボードにコピー
  • QuicTodayの入力テキストフィールドをアクティブに
  • ソフトキー2「設定」を押下
  • 「+」ボタンを押下
  • 「名称」欄には「Twitter」等と入力
  • 「URL」欄にコピーしたURLをペースト
  • 「文字コード」は「UTF-8」に
  • OKボタンを押下

使い方

  • QuicTodayの入力テキストフィールドをアクティブに
  • ソフトキー1「検索」を押下
  • 登録したTwitter用の項目を選択
  • QuicTodayの入力テキストフィールドにメッセージを入力
  • 決定キー押下

一度Twitter用の項目を選択したら、リセットするまでそのままです。

インプレッション

文字数制限がきつく、思ったほど便利でないです。
QuicTodayから投稿できるとしたらこんな感じか、という感慨には浸れます。

2008.05.25

[Chumby]Chumbyで日本語読み上げ音声時計(Japanese voice clock for Chumby)

Zaurus用にコンパイルしたCMU FliteChumbyで動いたので、時刻を読み上げる音声時計スクリプトを書いてみました。

CMU Fliteは英語しか読み上げできませんが、カビパン男と私さんの素晴らしい発音テーブルのおかげで、日本語読み上げもできるようになりました。

Chumbyではcronが最初から動いてますので、それに登録して動かします。

とりあえず、僕は壁掛け時計よろしく30分間隔で動かしています。

ダウンロード

「jvoiceclock-0.1.tar.gz」をダウンロード

「flite-1.3_arm-linux.tar.gz」をダウンロード

「sox-12.17.3_arm-linux.tar.gz」をダウンロード

インストール

前出の三つのファイルを解凍し、USBメモリのルートディレクトリにコピーします。

コピー先をいじる場合は、jvoiceclock.plの冒頭にあるConstantsを適宜いじってください。

USBメモリはVFATでしょうから実行権は関係無い(デフォルト777)と思いますが、特殊な環境の方はパーミッションに注意してください。

ChumbyにSSHでログインし、以下のようにcrontabを実行します。

# crontab -e

起動したviで、以下のようなエントリを加え、保存終了します。

*/30 * * * * /mnt/usb/jvoiceclock.pl

以降、30分ごとに時刻を読み上げてくれると思います。 最初はテストで以下のように登録して1分毎に読み上げさせてみるといいかもしれないですね。

*/1 * * * * /mnt/usb/jvoiceclock.pl

ソース

一応ソースを貼っておきます。

#!/usr/bin/env perl

# Title: Japanese voice clock for Chumby
# Version: 0.1
# Author: moyashi 
# License: Free

##### INSTALL

# Copy flite, sox, jvoiceclock.pl to USB Flash memory, like this:
#
# $ scp flite sox jvoiceclock.pl root@192.168.0.10:/mnt/usb
#
# Then, register to crontab (On Chumby):
#
# # crontab -e
#
# */30 * * * * /mnt/usb/jvoiceclock.pl
#

# You can get flite, sox (run on Chumby) from my site:
# http://moyashi.air-nifty.com/hitori/2008/05/chumbychumby_e1da.html

##### Constants

*FLITE_PROG = \"/mnt/usb/flite";
*SOX_PROG = \"/mnt/usb/sox";
*TMP_FILE = \"/tmp/speak$$.wav";

#####

&speak(&time_pho((localtime(time))[1, 2]));

sub speak {
    my($arg) = @_;
    $cmd1 = $FLITE_PROG." -t \"".$arg."\" -o ".$TMP_FILE;
    $cmd2 = $SOX_PROG." -r 4000 ".$TMP_FILE." -t ossdsp /dev/dsp";
    system($cmd1.";".$cmd2.";rm ".$TMP_FILE);
}

sub ampm_pho {
    my($hour) = (localtime(time))[2];
    if ((localtime(time))[2] > 12) {
        return "go go";
    } else {
        return "go zeh unn";
    }
}

sub time_pho {
    my($min, $hour) = @_;
    if ($hour > 12) { $hour = $hour - 12; };

    @min = split(/ */, sprintf("%02d", $min));

    $ampm_pho = &m_pho();

    @hour_arr = ("re ee", "ee chee", "ni", "sa unn",
        "yo", "go", "ro koo", "shi chee",
        "ha chee", "koo", "joo oo",
        "joo oo ee chee", "joo oo ni");

    @tenth_arr = ("", "joo oo", "ni joo oo", "sa unn joo oo",
        "yo unn joo oo", "go joo oo");

    @one_arr = ("", "ee chee", "ni", "sa unn",
        "yo unn", "go", "ro koo", "na na",
        "ha chee", "kyoo oo");

    $hour_pho = $hour_arr[sprintf("%d", $hour)]." ji";

    $fun_pho = $min ? " foo unn" : "";

    $min_pho = $tenth_arr[sprintf("%d", $min[0])]." ";
    $min_pho = $min_pho.$one_arr[sprintf("%d", $min[1])];
    $min_pho = $min_pho.$fun_pho;
    return $ampm_pho." ".$hour_pho." ".$min_pho." deh soo";
}

Continue reading "[Chumby]Chumbyで日本語読み上げ音声時計(Japanese voice clock for Chumby)" »

2008.05.24

[N810]sqlite3 for OS2008 (NOKIA N810)

If you find sqlite3 for OS2008 as a command line interface, You should try this.
It did install to /usr/local/bin.

sqlite3-3.4.1-1.deb

You have to change Application manager to "red pill mode" before you install.

To run this sqlite3 requires libreadline5.
It can be install from exon's repo.

http://apt.exon.name/

Add this repo to Application manager, and type at terminal:

$ sudo gainroot
# apt-get install libreadline5

[N810]NOKIA N810用カスタマイズ済のキーマップをインストールするパッケージ

よくNOKIA N810の環境構築をやり直すんですが、面倒なのでカスタマイズ済のキーマップをインストールするパッケージを作ってみました。すいませんが、無保証です。


「customized-keymap-n810-0.1.deb」をダウンロード

ただ、パッケージxkbdataと競合するのでインストールするには力技が必要。Maemo CJK Supportを先にインストールしておいた方がいいと思います。

ダウンロードしたパッケージは、以下のようにターミナルからルート権限でインストールする必要があります。

# dpkg --force-overwrite -i customized-keymap-n810-0.1.deb

パッケージをインストールすると「/usr/share/X11/xkb/symbols/nokia_vndr/rx-44」を置き換えます。同時に「/usr/share/X11/xkb/symbols/nokia_vndr/rx-44.org」としてオリジナルのバックアップを取ります。Ctrl+Eのグローバル検索のショートカットを無効にもします。

インストール後にControl panel のText input settingsを起動してOKを押せば反映されると思います。

アンインストールは普通のパッケージ同様Application managerからアンインストールでき、オリジナルに復帰します。

N810keybind

カスタマイズの詳細については以前書きました。

[N810]NOKIA N810のキーボードカスタマイズ

2008.05.20

[Windows Mobile]W-ZERO3で動く、ネットワークが使えるRuby1.8.6-p111登場!!!!

ちょっと前の話ですが、CeGCCでRuby1.8.6-p111をコンパイルした人が出現しました!!
そして、その成果を公開してくださってます。

Target-Earth dot Net: Ruby on Windows CE & Pocket PC

ページ一番下の「24th Feb 2008 - Ruby 1.8.6-p111 for WinCE/ARM」というリンクからダウンロードできます。

早速試したところ、uema2.さんのポートされたruby-mswinceでは使えなかったSocketが使えてます。
つまり、ネットワーク系の機能が使えるわけです。

ちなみに、パスのデリミタはスラッシュで表現します。
相対パスは対応してないかもしれません。

以下のスクリプトの動作を確認しました。


require "open-uri"
require "kconv"
f = File.open("/test.txt", "w")
open("http://www.google.co.jp/") do |s|
s.each do |line|
f.puts(line.toeuc)
end
end
f.close

RubyGemsも動いているようです。
これは一大事!!

リンク先のページでは、コンソールからの実行を前提としているようですが、僕は拡張子rbに関連付けました。

2008.05.16

[Palm]WristPDAのバッテリコンパートメントのクリアランスを計測

PD3048は入らんもんかと、WristPDAのバッテリコンパートメントのクリアランスを計測してみました。
5mm説というのがあって、それを検証してみようと思ったのでした。
5mmなら、PD3048が入ることになります。

粘土タイプの耳栓愛用者なので、常備してあるそれを詰めて一度蓋を閉め、取り出してノギスで計測。
確かに5mmありました。PD3032が公称3.2mm、実測でも上下の端子込みで3.2mmぐらいですから、入りそうですね。







WristPDAのフォーラムに、backplateを自作してコンパートメントを拡張し、大容量バッテリを搭載したmclien氏が1年ぶりに投稿していました。現在、以下の二つのバージョンを製作中とのこと。

  • 完成品: 650mAh (標準より2.5mm〜3mm厚い)
  • 製作中: 410mAh version (うまくいけば標準より0.5mmから1mm 厚い程度に収まりそう)

MLでは、

  • 650mAのバッテリとbackplateのセットで30ユーロ
  • 650mAのバッテリとbackplate、作業料込みで35ユーロ+送料(ベルトを外せば送料は大体4ユーロ)

とも書いてます。

ただ、フォーラムには気になることも書いてます。
「バッテリが死んだWristPDAを一つ持っているが、その基板上に、爆発したような部品を一つ見つけた。
充電時に供給した電流量が多かったのが原因ではないか、と推測できる。(PCのUSBポートからのものがそうだったか、あるいは外部電源からのものがそうだったかは明言できないが)」
「過充電について」というタイトルがついているので、この改造に関係したことのように取れますが、どういう因果関係で持ち出された話なのか読み取れません。
爆発したようなありさまの部品の写真を後でアップするとのことなので、ヲチしてようと思います。

2008.05.11

[N810]Advanced/W-ZERO3[es]をNOKIA N810のモデムとして認識させるKernel Module

以前、Advanced/W-ZERO3[es]を、NOKIA N810のモデムとして使う試みをしました。

[N810]NOKIA N810にAdvanced/W-ZERO3 [es]をモデムとして認識させられたけど……。

そのときは、「/dev/ttyUSB0」として認識させることができたものの、Hubを介さないとダメという結果になって、残念な思いをしました。
しかし、それはAdvanced/W-ZERO3[es]の「設定>パワー マネジメント>USB給電」を「給電する」に設定していたのが原因でした。「給電しない」にしておけば、Hubを介さずに認識しました! 何たるドジ!!

というわけで、下に掲載しているパッケージ「zero3module-1.0-1.deb」をインストールし、再起動をした後でNOKIA N810をUSB Hostモードにし、Advanced/W-ZERO3[es]をUSBケーブルでNOKIA N810に接続すれば、「/dev/ttyUSB0」として認識すると思います。

ただ、PPPの設定がうまくいかないので、どなたかに助けていただきたい次第。
それが、今回のエントリの目的です。

ダウンロード

「zero3module-1.0-1.deb」をダウンロード

「/dev/ttyUSB0」として認識させるまでの手順

こんなことを試せる環境があったり、試す必然性のある人は少ないと思いますが、前述の理由で関心を持つ人が増えてほしいので、「/dev/ttyUSB0」として認識させるまでの手順を書いておきます。

Advanced/W-ZERO3[es]側の設定

  • 「設定>パワー マネジメント>USB給電」を「給電しない」に設定
  • 「設定>接続>USB接続>」を「モデムとして使用する」に設定

NOKIA N810側の設定

ルート権限の取得

flasherでR&Dモードに切り替えるなどの方法でルート権限を取得していなければ、以下の手順を実行してください。

  • Repositories for Nokia〜」で紹介のあるリポジトリ「Eko One」の緑の矢印をタップ
  • ダイアログ「File download」が表示されるので、「Open」ボタンを押下
  • 「Application manager」が起動し、しばらくして「Add catalog」ダイアログが表示されるので、「OK」ボタンを押下
  • 「Refresh application list」ダイアログが表示されるので「OK」ボタンを押下
  • 「Application manager」の「Browse Installable applications」ボタンを押下すると「becomeroot」があるので、それをインストール
  • 以後、「X Terminal」で「sudo gainroot」とたたくとルート権限を得られます

Red Pill Modeの設定

「Application manager」は、デフォルトでは一部のパッケージしかインストールできない、制約のかかった状態になっています。

制限を緩めるために「Red Pill Mode」への切り替えをします。

なぜなら、僕の作ったパッケージは仕様を満たしておらず(!?)「Red Pill Mode」にしておかないとインストールできないからです。すいません、勉強不足です。

既に「Red Pill Mode」にしていれば、もちろんこの手順の実行は必要ありません。

  • 「Settings>Application manager」を起動
  • 「Application manager」のメニュー「Tools>Application catalog...」を選択
  • ダイアログ「Catalog」の「New」ボタンを押す
  • ダイアログ「New catalog」のフィールド「Web address」に「matrix」と入力し、「Cancel」ボタンを押す
  • 「Which pill?」というメッセージのダイアログが表示されるので「Red」ボタンを押す
  • ダイアログ「Catalog」の「Close」ボタンを押す

「zero3module-1.0-1.deb」のインストール

  • このエントリにある「zero3module-1.0-1.deb」をダウンロード
  • ランチャーの「Utilities>File manager」を起動
  • 「File manager」上でダウンロードした「zero3module-1.0-1.deb」をダブルタップ
  • インストールのプロセスに入り、いくつかダイアログが表示されるので、それらにはOKと答える

「usb-otg-plugin」のインストール

  • USB OTG pluginのプロジェクトページからパッケージをダウンロード(現時点では「usb-otg-plugin_0.0_armel.deb」)インストール「usb-otg-plugin」を
  • 「zero3module-1.0-1.deb」と同様に「File manager」からインストール

ケーブルの用意

接続方法

  • USB OTG pluginをインストール後、タスクバーに表示されるUSBアイコンをタップし、メニュー項目「USB UTG host mode」を選択、チェックマークが付いた状態にする
  • NOKIA N810→CA-101相当のケーブル→Aメス to Aメスのジェンダチェンジャ→A to mini Bケーブル→Advanced/W-ZERO3[es]といった具合に接続

結果の確認

「Utilities>X Terminal」、もしくは「Extras>X Terminal」を起動し(カスタマイズしてしまって、どっちだったか忘れてしまいました)、コマンドラインで以下をたたきます。

$ dmesg | grep ttyUSB0
[28859.671875] usb 1-1: PocketPC PDA converter now attached to ttyUSB0

上記のような行が見つかればOKです。
ちなみに、「|」はキーボードのカスタマイズをしていなければ、入力の方法が無いと思います。

minicomでATコマンドの応答まで見てみましょうか。

minicomは、「Repositories for Nokia〜」で紹介のあるリポジトリ「debfarm」にあります。先例にならって「Application Manager」の「Catalog」に登録し、インストールしてみてください。パッケージがリストに現れない場合は、「X Terminal」から以下のようにするとインストールできます。

$ sudo gainroot
# apt-get install minicom
# apt-get install ncurses-base

途中で「Install these packages without verification [y/N]」と聞かれますので、「y」と答えます。

「X Terminal」でminicomを起動します。
minicomを起動する前にメニュー「Tools>Settings...>Font settings」で、フォントサイズを10ptにします。また、ズームボタンで全画面に切り替えておきます。さもないと、画面が崩れます。

$ minicom -s

メニューが表示されるので、「Serial port setup」を選択し、「a」を押して「/dev/ttyUSB0」と入力し、Enterで確定。さらにEnterで「Serial port setup」を閉じる。
続いて「Modem and dialing」を選択。また「a」を押して「Init string」の編集に入り、デフォルトの初期化文字列を消して「ATZ^M」と入力、Enterを2回押して「Modem and dialing」を閉じ、「Save setup as dfl」、そして「Exit」を選択。
すると、「Initializing Modem」と表示され、Advanced/W-ZERO3[es]との通信が開始されます。
次の起動からは、-sオプション無しの「minicom」だけでOKです。

以下のようにタイプしてみます。

AT@LBC1 
OK 
AT@LBC? 
(郵便番号と緯度経度が返ってくる)

OK
AT@LBC2
OK
ATDT0570-570-081##64
CONNECT 300000

NO CARRIER

REASON:7000

さあ、ここまできたら、pppd/chatの設定ですが、これがよく分からないです。
ぜひ教えてください。

「/etc/ppp/peers/provider」を編集しながら関連ファイルを編集しつつ、/usr/bin/ponを実行して様子を見てみたのですが、「/var/log/ppp-connect-error」にエラーが記録されず、かといって何も起きずという状態になってしまい、糸口をつかめないでいます。

2008.05.10

[Windows Mobile]Advanced/W-ZERO3[es]でのBluetooth PAN接続/切断支援MortScript

先日、Advanced/W-ZERO3[es]によるBluetooth PANについてエントリしましたが、ワンアクションで接続、切断できるようにするため、久しぶりにMortScriptを書いてみました。

関連エントリ:[N810]NOKIA N810とAdvanced/W-ZERO3[es]でBluetooth PAN

Bluetooth PAN切断中にこのMortScriptを起動すると接続を、接続中に起動すると切断します。(たまに動作が変なことも?)

僕はSortInchKeyで、このスクリプトをSoftKey2のダブルクリックに設定しています。

動画編集の練習とYouTubeデビューをかねて、デモを作ってみました。

前半: トグル動作の説明
後半: Bluetooth PANの確立〜NOKIA N810でのブラウジングまでの一連の動作

前半、なぜか額縁になっちゃってます。なんでだろ……。

ダウンロード

自分でも使ってますが、無保証です。

ライセンスは……そんなもんはありません。自由にしてください。

「togglebtpan.mscr」をダウンロード

インストールと使い方

前回のエントリを参照の上Bluetooth PANを設定。MortScriptのPPC版をインストールします。個別にダウンロードするようにはなっておらず、zipの中にOS別に数種類入っています。

僕はページ下部のリンクTemporaryからたどってダウンロードできるV4.11b7を使っています。

あとはスクリプトをダウンロードして実行するだけですが、実行に手間をかけていては本末転倒ですので、最も効率的な実行方法を模索してください。

前述の通り、僕はSortInchKeyで、このスクリプトをSoftKey2のダブルクリックに設定しています。

画面の解像度等に依存するため、RealWVGA化や、フォントサイズの変更などをしていると動かないと思います。

ソースコード

サブルーチン「POff」の「PowerOff」はコメントアウトしていますが、外してもいいかも?

#
# Helper script for ICS via Bluetooth PAN
#
# Use MortScript V4.11b7
#

######### Global Variable definition #########

Global(AppName, AppPath, MannerMode)

AppName = "インターネット共有"

AppPath = "\Windows\IntShrUI.exe"

MannerMode = RegRead("HKCU",\
		"\Software\Sharp\PhoneStatus",\
		"Status3")

######### Entry Point #########

Call("Main")

######### Subroutine definition #########

# メイン
Sub Main
	# インターネット共有を起動し
	# 前面に出るまで待つ
	Call("Activate")

	# Bluetooth PANの項目が現れるまで
	# タイムラグがあるので待つ
	Sleep(1000)

	# 接続が無い状況を確認
	IF(WindowText(60, 120) eq "切断完了")
		# Bluetooth PANの存在を確認
		Call("BluetoothCheck")
		# 「接続」ボタンを押して、進捗確認
		# SoftKeyの文字はWindowText()で
		# 読み取れないようなので、みなし
		Call("POn")
	Else
		# 接続中であることが想定されるので
		# 「切断」ボタンを押して、進捗確認へ
		# SoftKeyの文字はWindowText()で
		# 読み取れないようなので、みなし
		Call("POff")
	EndIF
EndSub

# インターネット共有の起動と起動チェック
Sub Activate
	# インターネット共有の起動
	Run(AppPath)
	# インターネット共有が前面になるのを待つ
	WaitForActive(AppName, 4)

	# 起動に失敗しているようなら終了
	If(NOT wndExists(AppName))
		Call("ErrorSound")
		Message(AppName & "が^CR^^LF^起動できないようです")
		Exit
	EndIf
EndSub

# Bluetooh PANの有無のチェック
Sub BluetoothCheck
	btstatus = RegRead("HKLM",\
		"\System\State\Hardware",\
		"Bluetooth")

	Switch(btstatus)
		Case(0, 8)
			Call("ErrorSound")
			Message("Bluetoothが^CR^^LF^使用不能です")
			Exit
	EndSwitch

	# Bluetooth PANが無ければ
	IF(WindowText(60, 240) eq "USB")
		# リストボックスの下の項目を選択してみる
		MouseClick(AppName, 60, 240)
		SendSpecial("Down")
		SendSpecial("CR")
		Sleep(100)
		# それでもBluetooth PANでなければ終了
		IF(WindowText(60, 240) eq "Bluetooth PAN")
			# nop
		Else
			Call("ErrorSound")
			Message("Bluetooth PANが^CR^^LF^見つからないようです")
			Exit
		EndIf
	EndIf
EndSub

# 「接続」ボタン押しと、その後の処理
Sub POn
	Call("WSIMCheck")
	SendSpecial("LeftSoft")
	# W-SIMの接続が確立するまで待つ
	# 20秒でタイムアウト
	Repeat(20)
		status = RegRead("HKLM",\
			"\System\State\Connections\Modem",\
			"Count")
		If(status = 0)
			Sleep(1000)
		EndIF
	EndRepeat

	If(status = True)
		# 接続が確立したら
		ToggleDisplay(off)
		If(NOT MannerMode)
			PlaySound("\Windows\Alarm3.wav")
		EndIf
		Call("RepeatVibrate", 1)
	Else
		# 接続が確立しなかったら
			Call("ErrorSound")
		Call("RepeatVibrate", 2)
	EndIf
EndSub

# 「切断」ボタン押しと、その後の処理
Sub POff
	SendSpecial("LeftSoft")
	ToggleDisplay(off)
	If(NOT MannerMode)
		PlaySound("\Windows\Infend.wav")
	EndIf
	Call("RepeatVibrate", 3)
	#PowerOff
EndSub

Sub RepeatVibrate
	IF(argc = 1 and argv[1] > 0)
		For i = 1 to argv[1]
			Vibrate(200)
			IF(i < argv[1])
				Sleep(300)
			EndIF
		Next
	EndIF
EndSub

Sub WSIMCheck
	strength = RegRead("HKCU", \
	"Software\Sharp\ShPhoneLib", \
	"RFStrength")
	If(strength < 2 || strength > 6)
		Call("ErrorSound")
		Message("電界強度が^CR^^LF^弱いようです")
		Exit
	EndIf
EndSub

Sub ErrorSound
	If(NOT MannerMode)
		PlaySound("\Windows\spl_outofrange.wav")
	EndIf
EndSub

2008.05.09

[Windows Mobile]Windows Mobile向けQKC 1.0 (Quick KANJI code Converter C Version 1.0)正式公開

随分時間がたってしまいましたが、QKCの作者、佐藤公彦さんに許可をいただき、Windows Mobileで動作するQKCを正式に配布する運びとなりましたので、ここにご報告させていただきます。

佐藤公彦さんからは1年前にご快諾をいただいております。

QKCの移植にはCeGCCのランタイムなど本質的には必要無く、Win32ネイティブな実装が出てくるのではないか(あるいは.NETを使って自分で作ろうか)という思惑があり、動向をうかがっていたのですが、どうも無さそうなので踏ん切りを付けました。

この場をお借りして、佐藤公彦さんに感謝の意を表したいと思います。

QKCとは、文字コードの変換をしてくれるコマンドラインユーティリティで、Windows Mobileでは、EUC-JPやJIS等の文字コードが扱えないMortScriptとの連携利用において需要があります。
EUC-JPのWebページをダウンロードしてきて切り出し、QKCでSJIS等に変換した後、rlTodayを使ってTodayに表示する、というのが活用の典型例になるかと思います。

ダウンロード

以前の配布物を上書きする形で置いています。
以前の配布物とは、マニュアルの存在の有無の点のみ異なります。

http://moyashi.air-nifty.com/qkc-arm-wince-1.0.zip

説明

========================================================================

QKC -- Quick KANJI code Converter C Version 1.0

for Windows Mobile

説明書

========================================================================

◆ はじめに
-----------

 この配布物は、佐藤公彦さんが書かれたQKC--(Quick KANJI code
Converter)を、moyashi (http://moyashi.air-nifty.com/)がARM CPU搭載
Windows Mobile向けにコンパイルし、利用者の便宜を図って配布するものです。

 コンパイルにはCeGCC (http://cegcc.sourceforge.net/) を使用致しました。

◆ 問い合わせ先について

 当配布物は、佐藤さんの許諾に基づき、佐藤さんのかかわりの無いところで
moyashiが作成し、配布するものです。

 何か不具合があった場合でも、お問い合わせは私の方にお願い致します。

 佐藤さんへ問い合わせをすることはご迷惑になりますので、くれぐれもなさ
らないようにしてください。

問い合わせ先: hitoriblog[_AT_]gmail.com
([_AT_]を@に置き換えてください)

◆ 実行環境
-----------

 CeGCCのランタイムライブラリをインストールした、Windows Mobile搭載機 

 ※実質ARM CPU搭載のWindows Mobile搭載機に限ります

◆ インストール

 CeGCCに含まれるランタイムライブラリをインストールします。

 d:\cygwin以下にCeGCCの配布物を展開した場合は、必要なランタイムライブ
ラリは以下のパスに存在します。

d:\cygwin\opt\cegcc\arm-wince-cegcc\lib\device\cegcc.dll
d:\cygwin\opt\cegcc\arm-wince-cegcc\lib\device\cegccthrd.dll

 これらを\windows、ないしはqkc.exeと同階層に置いてください。

 qkc.exeは任意の場所にインストールしてください。

◆ 使用法
---------

 詳しくは公式の配布物をご参照ください。
 (http://hp.vector.co.jp/authors/VA000501/)

 Windows Mobile版独自の注意点は、標準入出力のサポートが不十分、という
ことです。

 標準の環境では、標準入出力の利用が不可能です。
 以下のページにあるpocketcon.rarをインストールすると利用可能となります。

 http://www.bluishcoder.co.nz/2007/02/factor-on-windows-mobile-5.html

 ただ、本配布物はqkcのファイル指向のインターフェイスを生かし、
MortScript (http://www.sto-helit.de/) の関数から呼び出す使用方法を想定
しているため、標準入出力の利用についてはあまり検証していません。

 MortScriptからは、例えば以下のように呼び出します。

pathToFile = "\path\to\filePath"
RunWait("\path\to\qkc.exe", "-s " & pathToFile)

Run()関数とRunWait()関数がありますが、Run()を使うとqkc実行完了を待たず
に次の処理へ行ってしまうため、通常は終了を待つRunWait()の方を使います。

空白を含むパスにあるファイルを処理する場合はダブルコーテーションでくく
る必要があります。MortScriptでは、ダブルコーテーションのエスケープ表現
は「""」です。

pathToFile = """\My Documents\text.txt"""

マルチバイト文字を含むパス、ファイルは処理できないようです。

QKCの主要オプションを抜粋して下記します。

-s to Shift-JIS
-e to EUC
-j to JIS

◆ その他
---------

 無保証の宣言、著作権の保持等については公式の配布物をご参照ください。
 (http://hp.vector.co.jp/authors/VA000501/

◆ 履歴
-----------

◇ 08/5/9

・一般公開。

[N810]NOKIA N810にcronをインストール

NOKIA N810にもcronが入ってません。
こんなに定期実行が大好きなのに、なんでなの〜! ということで探してみると、パッケージがありました。

Andrewさんのページからたどれる氏のリポジトリにあります。
Andrewさんのページはとても参考になりますね。パッケージの作り方、(Trastedな)リポジトリの作り方、内蔵GPSに対する考察など、話題は多岐に亘ります。

ちなみに、氏のリポジトリにはlibdecodeqr-0.9.3.debというものもありますね。ライブラリだけじゃなくて、「/usr/bin/qrdecode」が入っているので、すぐ使えるかな? QRコードのデコードができるコマンドでしょう。

インストール

http://andrew.triumf.ca/N810/repository/

上記にある「andrew.install」をタップして「Open」、Application listをRefreshします。
しかる後にターミナルから、

$ sudo gainroot
# apt-get install cron

次の起動時からcronがdaemonとして動き出します。

もちろん「crontab -e」で登録。
普通のcronと使い方は同じですね。

インプレッション

LockスイッチでLockした後も動き続けていますし、Wifiがつながる環境なら、ネットワークを利用する処理も動いてます。
バッテリの持ちに影響しそうですが、それについては評価中。

ちなみに、ntpdateを使った時刻合わせは、以下のようにできるそうです。

ntpdateのインストール


# apt-get -y install ntpdate

システムクロックの調整と、ハードウェアクロックへの反映


# ntpdate pool.ntp.org
# /mnt/initfs/usr/bin/retutime --rtc-from-system

これをcronに仕込めば便利ですね。

2008.05.08

[iPod touch]TextEditJ.appを小修正

MobileTextEditJことTextEditJ.appをちょっと修正しました。

のちなさんの改造版を元に改造しました。その特徴を引き継いでいるため、コピー&ペーストができます。

フォントサイズを大きくしたいという要望をいただいたので、杜撰な対応をしてみました。
「/Applications/TextEditJ.app/fontsize.txt」を編集してフォントサイズを指定してください。



インストールは例によって「野良リポジトリ」からどうぞ。

「Productivity -> MobileTextEditJ (1.1.3)」です。1.1.4でも動きます。
すいませんが、1.1.2対応はしません。

ソースコード

ソースは公開の依頼があればします。
依頼があったのでソースを公開します。

「mobiletexteditj-0.3.1-0.4.zip」をダウンロード

2008.05.07

[N810]NOKIA N810とAdvanced/W-ZERO3[es]でBluetooth PAN

2008.05.10追記:これに関係して、接続/切断支援MortScriptを書きました。以下のエントリです。
[Windows Mobile]Advanced/W-ZERO3[es]でのBluetooth PAN接続/切断支援MortScript

ICSInstall.CABとWMWifiRouterをインストールすれば、Advanced/W-ZERO3[es]は無線ルータとして機能するようになり、NOKIA N810からも使えるわけですが、無線LANは消費電力が多いので、できればBluetooth PANで接続したいものだと思っていました。

試行の結果、NOKIA N810とAdvanced/W-ZERO3[es]とをBluetooth PANで接続でき、Advanced/W-ZERO3[es]が、NOKIA N810の無線ルータとして使えるようになりました。

ちなみに、自分がAdvanced/W-ZERO3[es]に接続しているBluetoothドングルは、IBSJapanのIMUB-01です。

手順を書いておきます。

Advanced/W-ZERO3[es]側の設定

Bluetoothドングルを使えるようにします。
自分が使っているのはIBSJapanのIMUB-01ですので、Enablerをダウンロードしてインストールしました。

「スタートメニュー>設定>接続>Bluetooth」を起動し、モードタブのチェックボックス「Bluetoothをオンにする」と、「このデバイスを他のデバイスからも検出できるようにする」をOnにします。

ICSInstall.CABをインストールします。ダウンロードには会員登録が必要です。

WMWifiRouterをインストールします。インターネット共有の設定をやってくれるからです。
以前は、インターネット共有(ICS)の設定だけをしてくれる「em1ics helper」というものがあったのですが、公開停止になってしまいました。
WMWifiRouterの最新バージョンは、「em1ics helper」がやってくれた設定もいっしょにしてくれますので、「em1ics helper」にこだわる必要はありません。

WMWifiRouterはシェアウェアですので、レジストしないでいると試用期間が過ぎて使えなくなりますが、インターネット共有(ICS)の機能は、その後も継続して使えます。

WMWifiRouterといっしょにインストールされた「\Windows\wmwr_cprog.exe」を実行します。
すると、タスクバーに見慣れないアンテナアイコンが表示されると思います。インターネット共有は、この状態にしておかないと動きません。「\Windows\wmwr_cprog.exe」のショートカットを「\Windows\スタートアップ」に作って、起動時に実行されるようにしておくのも手でしょう。

「\Windows\IntShrUI.exe」がインターネット共有を開始するアプリケーションです。WMWifiRouterをインストールすると、「スタートメニュー>プログラム>IntShrUI」としても登録されます。

NOKIA N810側の設定

「Settings>Control panel>Bluetooth」を起動し、チェックボックス「Bluetooth on」、「Visible」をOnにします。

Advanced/W-ZERO3[es]側ではBluetoohドングルを差して起動させておきます。
しかる後にNOKIA N810側でさきほどの「Bluetooth」設定ダイアログを開き、「Devices」ボタンを押します。
さらに「New」ボタンを押して、デバイスの検索をかけます。見つかったAdvanced/W-ZERO3[es]の項目をダブルタップし、Passcodeを適当に設定した後、「OK」ボタンを押します。
Advanced/W-ZERO3[es]側でPasscodeを入力して、登録を完了させます。

完了した項目を選択し、「Edit」ボタンを押します。
ここで表示される「Device name」と「Bluetooth address」をメモしておきます。

maemo-panをインストールします。マニュアルでは「Settings>Control panel>Phone」でPANの接続相手を登録するとありますが、Advanced/W-ZERO3[es]+Bluetoohドングルは、「Phone」では見つからないと思います。

以下のようなシェルスクリプトを用意し、BTADDRとBTNAMEを、さきほどメモしたものに置換します。

#!/bin/sh
BTADDR="00:00:00:00:00:00"
BTNAME="Pocket_PC"
gconftool-2 --type string --set /system/osso/connectivity/BT/preferred ${BTADDR}
gconftool-2 --type string --set /system/bluetooth/device/${BTADDR}/name ${BTNAME}

BTADDR→「Bluetooth address」
BTNAME→「Device name」

上記スクリプトをbtadd.shとして保存したとすると、

$ sh btadd.sh

などとして実行します。
このスクリプトは、「Settings>Control panel>Phone」で設定を変更してしまわない限り、一度実行すればOKです。

接続手順

■Advanced/W-ZERO3[es]側

「\Windows\IntShrUI.exe」ないしは「スタートメニュー>プログラム>IntShrUI」を実行します。

「PCとの接続」を「Bluetooth PAN」に、「ネットワーク接続」は、ダイヤルアップに使うエントリを指定します。自分はデフォルトの「CLUB AIR-EDGE」を使っています。

そして、「接続」ボタンをタップして、接続の確立を確認します。

「\Windows\wmwr_cprog.exe」を実行して、デフォルトとはデザインの異なるアンテナアイコンをタスクバーに表示させておかないと、うまくいきませんので注意してください。
つまり、デフォルトのもの、そしてwmwr_cprog.exeを実行することで表示されるものと、タスクバーにアンテナアイコンが二つ表示された状態にしておくわけです。
邪魔ですが、仕方がありません。

■NOKIA N810側

画面上部のWifiアイコン(?)をタップし、表示された「Select connection...」メニューを選択。
「Select connection」のダイアログにて、項目「Bluetooth-PAN」を選択すれば、それでOKのはずです。

Bluetooth-PANが確立しても、Wifiアイコンは薄灰色から白色には変化しませんので慌てずに。

Mac OS X LeopardでもOK

この状態のAdvanced/W-ZERO3[es]で、Mac OS X LeopardともBluetooth PANで接続でき、無線ルータとして機能させられました。
詳細はまたの機会に。

2008.05.01

[N810]Micro-USB BタイプのリトラクタブルUSBケーブル購入

WX330K発売に合わせてでしょう、MIYAVIXから、国産初!? のMicro-USB BタイプのリトラクタブルUSBケーブルが発売されたので購入しました。
これでNOKIA N810の活用度が上がるかな?

本当に欲しいのはL型、リトラクタブル、Micro-USB A to Mini-USB Bのケーブルなわけですが。
2個買って、1個は切ったりつないだりする用に回そうと思っていたんですが、1個しか注文されてなかった……。








« April 2008 | Main | June 2008 »

blogparts

  • Last.fm
  • twitter

Recent Comments

無料ブログはココログ