2010年01月24日

Windows向けGUIツールキットを色々と試す(1)

マイコンボードのデモ用にGUI付きのツールを作る必要に迫られたので、GUIツールキットについて改めて調査・練習してみた。作って納品して終わりではもったいないので、ちょっと書き残しておこうと思う。

先方から望まれている用件は、デモンストレーション用なのでそれなりに見栄えが良いこと、マイコンボードを叩くライブラリは既存のDLL or SOを使うこと、後々流用するかも知れないのでコードの可読性が高くメンテナンスが楽なこと。だと勝手に解釈。

普段CUIツールしか作らない人種が急にGUIを作ろうとすると、趣味に走りすぎて非常に手の込んだものを作ってしまう。ちなみに先達には、

  • WTL(Windows Template Library)でフォームを作りXMLパーサを自作した猛者
  • Cで書かれた既存の処理の上にPython on windowsで全体処理を書いた猛者、ちなみにGUIはpython-gtkで出している
とかが居る。perl with tck/tkとかruby with Qtとかも探すと居そうな気がする。ちゃんとメンテナンスできていれば問題ないんだけど。ちなみに私の最高駄作はc++とgtk (mm付かない)とgraphVizとapache XMLパーサを組み合わせたツール。ライブラリをダウンロードするサイトを間違えただけで動かなくなるという逸品には、足を洗って2年たった今も苦情が来たりする。

では、どういうツールキットを使えばメンテナンスが楽でLanguage binding絡みの問題が軽くて、あわよくばマルチOSを狙えるのだろうか。今ひとつよく分からないので、少し手を動かしてみることにした。今回はJava-SwingとQtについて扱ってみる。

とりあえず、既存ライブラリ(DLLとかSOとか既存のCコード)との親和性、開発環境、ウィジェットの種類、フォームデザイン、イベントハンドラあたりをまとめてみよう。

既存ライブラリとの親和性
Java-Swing:
JNI(Java Native Interface)機構を使えば、既存のライブラリやC/C++コードを扱うことができる。ミドルウェアをJava EEに移植するところや、Androidアプリの高速化とかで使われているらしい。手順は複雑。Java側のインターフェースになるクラスを設計し、javahツールでC++のヘッダを生成し、C++でラッピングライブラリを作成する。ネイティブ処理内でインスタンスを生成する場合に、どうやってjava側のインスタンスに関連付けるべきなのか良く分からない。
Qt:
基本的にC++の開発手法を踏襲。ライブラリも既存コードも何でも来いである。

開発環境
Java-Swing:
GUI部分に関しては、統合開発環境Eclipseを使うのが一番楽だろう。JNI部分に関しては、Java SDKのツールを直で叩く必要がある。また、C++でラッピング処理を書くために、gccが必要。例えばMinGWを使う。
Qt:
統合開発環境Qt Creatorを使う。コードアシスト、ヘルプがとても充実しており使いやすい。Qtのイベント処理はC++の規格外の文法を使っているので、qmakeというツールを通す必要がある。クラスの定義が変わった時には必ずqmakeを起動しよう、でないと、自動生成されたファイルが悪さをする。

ウィジェットの種類
Java-Swing:
基本的なものは大抵ある。足りないものはAWTのクラスを使うのかな?
Qt:
プリインストールされているものだけでもかなりある。貼り付けるだけでテキストエディタが作れるような高等なコンポーネントもある。開発元から追加でコンポーネントを入手できるらしい?ウィジェットの設定は非常に細かく、かゆいところに手が届きまくる。反面、どこのプロパティをいじればいいのか分からないことも多し。

フォームデザイン
Java-Swing:
JPanelクラスがウィジェットのコンテナとして機能する。JPanelクラスのsetLayoutメソッドでレイアウト系のクラスインスタンスを追加することで、BoxLayoutやGridLayoutなどを設定できる。 フォームデザインツールとして、サードパーティのNetbeansツールが使える。Eclipseにもフォームデザイナが有る?
Qt:
ウィジェット系クラスとLayout系クラスに完全に分かれている。ウィジェットをLayoutに追加し、Layoutをコンテナウィジェットにセットするという要領。
Qt Creatorにはフォームデザイナが備わっている。が、Layoutの入れ子を上手く作っていくことができずに諦めた。操作方法を覚えて再チャレンジしたいところ。

イベントハンドラ
Java-Swing:
イベント時の処理をActionListenerのサブクラスに記述する。ウィジェットのインスタンスに、ActionListenerのサブクラスをセットすると、ボタンをクリックした時などにイベント処理がスタートする。
Qt:
イベント処理は、シグナルとスロットと呼ばれる機構で実現する。シグナルがイベントスロー、スロットがコールバック関数に相当すると考えると分かりやすい。connect関数を使ってシグナルとスロットの接続関係を書く。シグナルはパラメータを持ち、スロットは引数をとる。スライドバーの位置とラベルの表示の同期など、ごく簡単な処理ならばconnect関数を書くだけでウィジェット間の連携を実現できる。

GUI以外のライブラリ
Java-Swing:
Javaの標準APIが使える。
Qt:
XMLパーサ、マルチスレッド処理、ソケット処理なども一緒に提供されている。

他のマシンでの実行
Java-Swing:
Javaが動けば問題なし。有る意味無敵。
Qt:
Qtのランタイムをインストールする必要がある。ランタイム込みでプロジェクトをエクスポートできるか不明。ランタイムだけバイナリでリリースしていたかどうかも不明。ちなみに開発環境は結構HDD容量を食う。

とりあえずここまで。総評も書きたいなぁ。余裕があったらコードを交えたメモを投下したり、他のツールキットを試した結果も載せてみたい。

posted by yuji_at_radiance at 23:21| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年12月15日

ns001u with android on SmartQ

先週の速報の続き。

カーネルモジュールを無理やり突っ込んでttyデバイスの作成に成功したものの、phs dialerは動作しなかった。今週は、色々いじってみたけれどやっぱり動かなかったという報告。

phs dialerのパッケージが1.2MByteとかあるので、さぞかし難しい処理をしているのだろうと思いきや、ほとんど全ての容量はアイコン類のファイルで占められていることが判明。apkファイルは実際にはzipである。このあたりはjarと同じ。プログラム本体であるdex(dalvic classファイル)はたった一つである。おそらく、pppデーモンを立ち上げるために存在しているのだろう。

それならということで、/etc/pppディレクトリ以下をubuntuで動作実績のあるファイルで入れ替えてしまう。pppdのデバッグ出力を有効にして pppdをtelnetコンソールからダイレクトに叩く。が、無常にもダイヤル(ATDT0570xxxxxのこと)の途中でタイムアウトしてしまう。

ATDT(ダイヤル)コマンドには全くと言っていいほど反応しないが、ATZ(リセット)やAT@@LNK(電波状態)などのコマンドには普通に反応する(しないときもある)。ttyデバイスがまったくもって死んでいるというわけではないらしい。このあたりの検証も実にバカバカしく再現性安定性の欠片もない方法(echoとddを交互に打ち込む)を使っているので、良く分からないことが多い。ああ、screenコマンドを使いたい。

WSIMはRX420(青耳とか言うらしい)なのだが、こいつのリセット直後の挙動が怪しいことが、原因分析をさらに難しくしている。

posted by yuji_at_radiance at 23:25| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2009年12月07日

android on smartQ5にns001uをつないでみる(速報)

前エントリで紹介したとおり、ubuntuのカーネルモジュールを無理やりinsmodすることで、USB接続のCDROMドライブを動かすことが出来た。これを応用すればwillcomの通信アダプタns001uを動かすことができるんじゃ無いだろうかと考え、試してみた。結論から言うと、あと少し(?)のところで失敗した。ただひとこと言い訳をするならば、ubuntu on smartQ5では動いているので、全くの無駄銭というわけではない。

covia版androidはPHS/3G dialerというアプレットを使って、限られた種類のUSB通信ドングルを扱うことができる。ネットで流れている情報を整理すると、サポート対象のドングルは全て、pl2303というUSB-Serial変換の石を経由して無線モジュールを操作しているらしい。で、pl2303ドライバが適用されたデバイスは/dev/ttyUSB0という形で見えるらしい。

一方、ns001u他の通信ドングルはUSB-Serial変換の石を使っておらず、USB CDC ACMクラスのデバイスとして認識されるという。ちなみにCDC ACMクラスドライバはubuntuには含まれているが、covia版androidには含まれていない。

linuxにおけるネットワークの処理については全くの素人だが、大体のところ、関門は次の4つくらいではないかと考えられる。

  • ns001uがACMデバイスとして認識される。/dev/ttyACM0が作られる
  • /dev/ttyACM0を何らかの形でいじり、/dev/ttyUSB0に見せかける。おそらくPHS dialerは/dev/ttyUSBを決めうちにしているはず。
  • /dev/ttyACM0 (ns001u)をたたくコマンド(ATコマンド?)が/dev/ttyUSB0(動作実績のあるドングル)と互換性がある
  • PPPサービスが正常に動く
ACMデバイスとして認識させるのは、ubuntuからドライバをもらってくれば良いとする。実際のところ、上手く行った。次のttyUSB0を作るところはとりあえずシンボリックリンクを張るだけにした。ネットのどこかで、シンボリックリンクでごまかした事例を見たような気がする。それ以降に関しては、良く分からない。障害がおきたら都度対処するしかないだろう。

シンボリックリンクを張る前と後では、PHS dialerでconnect命令を出してからエラーするまでの時間が明らかに違う(まあ、ダメなことに変わりはないのだが)。とりあえず、何かしらのシグナルが送られているのだと思われる。ubuntuでns001uが動いたときに働いていたカーネルモジュールを手当たり次第に放り込んでみたが、上手く行かなかった。アプローチを変えて試してみる必要があるだろう。とりあえず、ATコマンドが通るかぐらいは試してみよう。

posted by yuji_at_radiance at 23:47| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2009年12月06日

Android on SmartQ5にUSB CDROMを接続する

covia版androidのUSBホスト機能で使えるデバイスは、USBキーボード、USBメモリ(HDD/カードリーダ)、一部の3G/PHS通信モジュール(12月度アップデートより)である。ちなみにUSBメモリを使うためにはtelnetログインしてmountする必要があり、androidの枠内で扱えるわけではない。それ以外のデバイスはlinuxで使えるものであっても認識されない。

では、USB接続のCDROMドライブはどうか?実は使えない。linuxではUSB-CDROMのデバイスドライバはUSBメモリのデバイスドライバと別扱いであり、covia版androidにはドライバがインストールされていないのである。

ではどうしたらよいか。無ければ作るか、どこからか持ってくればよいだけのこと。バージョンをそろえたカーネルソースを持ってきて、カーネルモジュールをビルドすればよいのでは? と、ここまで考えた所で天啓が浮かぶ。「SmartQ向けUbuntuのカーネルモジュールが流用できるんじゃね。」カーネルのバージョンを調べてみると、12月度リリースのandroidと最新ubuntuのバージョンが見事に一致する(どちらも2.6.24.7)。

カーネルビルド時のオプションが違うのだから、到底上手く行きそうにないが、とりあえず検証してみることにする。倉庫に眠っていたUSB-DVDROMドライブにCentOSのインストールディスクを挿して、androidに接続する。

以降、android上の作業はtelnet経由で行う。LANで接続しても良いし、telnetクライアントをandroid上で立ち上げても良い。接続が安定しているならLAN経由がオススメ。android上のクライアントとしては、「Telnet」(koushikdutta.telnet)を使う。他のターミナルソフトと違い、確実にソフトキーボードで動作する。これで履歴機能が使えれば大満足なのに。あと、ESC/Ctrlキーを渡せないので、下手にcatとかすると端末が制御を受け付けなくなる。

ともあれ、DVDドライブを接続してdmesgをかける。デバイス「sg0」が作られたとレポートされる。これは「/dev/block/sg0」に対応する。記憶デバイス絡みは大体「/deb/block」以下に配置される。一本目のUSBメモリならば「/dev/block/sda」だ。

記憶デバイスをマウントするときは通常mountコマンドを使う。USBメモリをマウントするならば次のように打つ

mount -t ext3 /dev/block/sda /media
では、sg0をマウントできるか?マウントできない。USB CD-ROMドライブは、「USBデバイス」→「SCSIデバイス(sg0)」→「ブロックデバイスCD-ROM(sr0)」の3段階で認識することで、初めてsr0をマウントすることができる。SCSIデバイスの段階までは認識されているようなので、CD-ROMドライブとして認識するデバイスドライバが必要なのだが、covia版androidにはドライバが含まれていない。

それでは実験、ドライバをubuntu for SmartQから抽出する。このあたりの手順はThe Life with Gadgetほかが詳しい。「smartQ、デュアルブート」で検索すると、色々と知識が得られるはず。本実験に手順をリストアップすると、

  1. 北京智器のサイトからsmartQextractorと、ファームウェアをダウンロードしてくる
  2. smartQextractorで、smartQ5のインストールイメージをアンパックする。幾つかのtgzファイルが出てくるはずだが、用があるのはrootfs.tar.gzである。
  3. rootfs.tar.gzを解凍する。linuxマシンでやってもよいし、Cygwinでもよいし、windows用の解凍ソフトを使ってもよい
  4. 用があるのは、/lib/modules/2.6.24.7/kernel以下だけである。kernelのサブディレクトリをSDカードにコピーする。
これで、linux2.6.24.7 (ARM)のカーネルモジュールがandroidの/sdcard/kernel以下に置かれたはずである。

で、ふたたびtelnetに戻る。カーネルモジュールを強制的に読み込ませるコマンドはinsmod、活動中のカーネルモジュールをリストするコマンドはlsmodである。一般的なlinuxマシンでlsmodすると、「sr0」が出現するには、kernel/drivers/cdrom/cdrom.koとkernel/drivers/scsi/sr_mod.koが必要らしい。なので、足してやる。

insmod /sdcard/kernel/drivers/cdrom/cdrom.ko
insmod /sdcard/kernel/drivers/scsi/sr_mod.ko
もう一度/dev/blockディレクトリを調べると、デバイス「sr0」が追加されている。成功である。ubuntuのドライバはandroidに流用できる。

さて、ここまで来たらマウントしたくなるのが人情。DVD-ROMは読み込みデバイスなのでrオプションをつける。

mkdir /cdrom
mount -r -t iso9660 /dev/block/sr0 /cdrom
あれれ、何故かsr0は存在しないと出る。確かにあるはずなのに。-t ext3とすると、しばらくドライブが唸った後に、-tオプションの誤りを指摘する。もしかして、iso9660は有効なオプションではないのか? 賢明な方はお気づきだろうが、実はiso9660のファイルシステムを扱うドライバが欠落しているのである。対応するファイルは、kernel/fs/isofs/isofs.koである。
insmod /sdcard/kernel/fs/isofs/isofs.ko
ではもう一度。今度はmountに成功し、/media上にDVD-ROMの中身が置かれる。

本実験により、covia版android未サポートのデバイスを無理やり動かす方法に光明が見えた。次はCDC-ACMドライバを試してみたい。これはUSBデータ通信モジュールのドライバであり、上手くはまれば12月時点で未サポートのUSB通信ドングルを動かせる可能性がある。ていうか何としても動かしたいNS001U。

(注意)本稿の内容を実行した場合、そこそこ悪いケースとしてandroidの設定が破壊される可能性があります。クリーンインストールで復旧できるはずですが、重要なデータを退避した後に実験してください。また、最悪のケースとしてデバイスドライバを操作する関係上、SmartQ5に不可逆の損傷を与える可能性があります。危険性を理解したうえで実験を行ってください。
posted by yuji_at_radiance at 16:09| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2009年11月17日

sqlite3-rubyをrubygemsでインストールする

なんだか良く分からずにハマったのでメモを残す。

CentOS公式のRuby/Rubygemsはバージョンが古いので、sqlite3-rubyは依存解決に失敗してハネられてしまう。かといって、公式からtarを落としてきてビルドすると、yumでインストールされたものとケンカしてしまう。checkinstallツールを使うとtarをrpmに変換できるので、パッケージ管理ツールの機嫌を損ねずにrubyをアップデートできる。rubyを1.8.7、gemも最新のものにして、ようやくsqlite3-rubyが入れられると思ったのだが・・・。

教科書どおりの手順でrubygemsからインストールを試みる。

$ sudo gem install sqlite3-ruby
Building native extensions.  This could take a while...
Successfully installed sqlite3-ruby-1.2.5
1 gem installed
Installing ri documentation for sqlite3-ruby-1.2.5...

No definition for _wrap_new_CallbackData
以後数十行にわたり省略
No definition for _wrap_sqlite3_aggregate_context

実行すると山のような警告メッセージが出た。もうダメかと思ったが、どうやらdocsのインストールに不備が出ただけで、実行ファイルはインストールされているらしい。テストプログラムを書いて実行してみたところ、確かに動いた。

テストプログラムを実行するときの注意点としては、rubygemsでインストールしたパッケージを使うときにはrequire rubygemsを必ず最初に宣言すること。これをやらないと、load errorが発生して「インストール失敗?」と頭を抱えることになる。

require rubygemsの効果を実感したいならば、irbインタプリタを立ち上げて以下のコマンドを打ち込むと一目瞭然である。

irb > p $LOAD_PATH
irb > require 'rubygems'
irb > p $LOAD_PATH
posted by yuji_at_radiance at 22:36| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2009年10月09日

AP機能付きUSB無線LANドングル

SmartQ5 with androidが届いたのに無線環境が無いという宝の持ち腐れ状況を回避するべく、無線LAN環境の整備を始めた。

一番安全確実なのは、無線LANルータを設置することなのだが、

  • それなりに高い
  • 無線機器がLANのさらにサブネットに所属する(ブリッジ接続にすればよいが)
  • 安直過ぎて面白くない
の理由でボツに。

で、代わりに買ってきたのがplanexのGW-US54GXSという無線LANドングル。これは無線LANのクライアントとして動作するほかに、「ソフトウェアAPモード」を搭載しており、無線LANの親機になることができる。ターゲットユーザーはNDS使いやPSP使いなのだそうだ。

US54GXSのうれしいところは、Linuxで動くこと。ドライバを入れればLinuxでもAPになることができる。これでネットワーク機能はルータ兼サーバ兼もろもろのradianceに集約することができるはず。

で、早速windows機に挿して予備実験。我が家のPSPもSmartQも無事にインターネットに接続することができた。あとは隙を見て(何の?)radianceを無線LANマスタに仕立て上げるだけ。上手くいくかな。

(10/12追記)無線チップzd1211のドライバは、書き直し前のドライバ(zd1211)と書き直し後のドライバ(zd1211rw)があって、アクセスポイントモード(masterモード)に対応しているのは書き直し前のものらしい。zd1211rwはカーネルソースに含まれていて、menuconfigで追加したら無線LANクライアントが使えるようになった。

書き直し前のドライバについては、カーネルヘッダのバージョンに依存するらしく、少なくとも2.6.27(おそらくもっと)前でないとダメらしい。現在のところKernel2.6.29を使っているのでコンパイルエラーが山のように出る。修正箇所があまりにも多すぎて手作業修正は絶望的であった。

posted by yuji_at_radiance at 23:38| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2009年10月04日

valdiaとアンテナレベルと受信障害

今回は、受信感度とかアンテナレベルとか、ブースターとか強電界とかアッテネーターとかそういう話。アマ無の混線とか越境受信の話ではない。妙に要領が悪い話になっているのは、私が現場に居なかったから。

Panasonic Vieraと東芝 Valdiaに接続したところ、何故かテレビの映りが悪くなった(レコーダーもちゃんと受信しない)という苦情が来た。症状の再現性が悪く、

  • 時々受信状態が悪くなり、画面が真っ暗になる
  • 障害が発生する時間帯、チャンネルはまちまち
  • レコーダーで障害を受けているチャンネルが、同時刻にテレビで見られる場合がある。その逆も。
  • レコーダーの受信レベルがテレビと比べて非常に悪い
  • 10月1日から問題が始まった。
と、良く分からない。また、設置環境の情報として、
  • 屋根裏に広帯域のブースターがあり、アンテナからの受信波を分配している
  • 10月1日にチャンネル再設定を促すメッセージが表示された
が挙げられる。

配線ミスを疑うが、配線は正しいらしい。放送局側で何かあったのではないかと思って、放送局と役所のページを回ってみるも、何かがあったようには見えない。

続いて引っかかるのは、レコーダーのアンテナレベルが妙に低いらしいということ。で、「valdia アンテナレベル」で検索するといろいろと引っかかった。わかりやすい例では、価格コムのこれなんかがそう。どうやら、屋根裏ブースターとvaldiaの内蔵ブースターを同時にONにしたのがいけないらしい。

というわけで、アッテネーターの制御コマンドを打ち込んでもらう。コマンドは、東芝のFAQサイトでも公開されているが、「valdiaリモコンの停止■ボタンを押しながら、valdia本体の停止■ボタンを押すこと」である。valdiaリモコンが選曲モードだと働かないので注意。コマンドを打ち込んだら、「ATT M2」と表示されたらしい。M2(=mode 2 ??)って何ですか一体?ちなみにもう一回押すと「ATT M1」となるらしい。表示はさておき、「ATT M2」に切り替えることでアンテナレベルが20くらい(40台→60台)上昇し、見えなかった番組が見えるようになったということ。良く分からないことだらけだが、ひとまず一件落着ってところか。

posted by yuji_at_radiance at 12:39| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年10月03日

SmartQ5 with Android

CoviaからSmartQ5 with Androidが届いた。Amazon2次予約枠で注文したので届くのは10月半ばかと思っていたが、意外と早い。キャンセルがあったのか、増産体制が整ったのか不明。

パッケージ。北京智器のハコではなく、Coviaのパッケージになっている。 covia_sq5a_package.jpg

説明書と本体。Androidのハードウェアスイッチは、側面の3つのボタンが割り当てられている。説明書にはごく簡単なハードウェアの説明のみ。分かる人向けという感じである。 covia_sq5a_turorial.jpg

無線技術適合証明のシール。これで国内で電波飛ばしても大丈夫。 covia_sq5a_seal.jpg

androidのアプリケーションランチャー。日本語入力ツール、FlickWnn/Simejiがインストールされている。カメラ非搭載でも、カメラアプリケーションのランチャーがある。加速度センサー非搭載なので、画面のタテヨコ切り替えはメニューキーの長押しで行う。 covia_sq5a_apps.jpg covia_sq5a_top.jpg

どうやらバッテリーの充電中はAndroidの電源を切ることができない(メニューから電源を切ってもすぐに再起動してしまう)。あと音量の調節はどこでやるのだろう?とりあえず移植できたのでリリースした感が若干あるが、製品としての出来栄えは使いながら検証していこうと思う。とりあえず、液晶保護シートの入手と、無線LAN環境の構築が最優先か。こんなに早く届くと思ってなかったのだ。

CoviaのWebサイトからユーザー(と開発者)コミュニティの掲示板とファームウェアダウンロードサービスに行くことができる。要メンバ登録だが、必ずしも購入者じゃなくても(今のところ)良いみたい。個人輸入者も歓迎てなことを言っている。Android marketやpdfビューアーなどのソフトが追加されるので、2次予約以前のユーザは必ずファームアップデートを受けたほうがよいだろう。

posted by yuji_at_radiance at 13:12| Comment(0) | TrackBack(0) | ハードウェア | このブログの読者になる | 更新情報をチェックする

2009年09月23日

VieraとValdiaのHDMI-CEC連携

大手家電メーカー製デジタル家電の売りの一つにxxリンクと呼ばれるアレがある。そう、HDMIケーブルで接続したTVやレコーダー、アンプを連 携して動かすアレである。

このリンク機能はHDMI-CECという規格をベースとして各社が拡張したものであり、基本的な機能は異なるメーカー間でも使えるものの、高度な連携は同一メーカーの最新の機材をそろえないと使えなかったりする。動作保証という観点から(囲い込みという観点から?)他メーカーとの連携に関する情報は公式サイトには記載されない。

今回、理由あってパナのデジタルTVと東芝のレコーダーを接続したので、HDMI-CEC連携の様子について説明しておこうと思う。今回実験した組み合わせは、Panasonic Viera TH42PZ80(ちょっと前のテレビ)と 東芝 Valdia RD-S304K(わりと新しいレコーダ)である。AVラックに収める前の動作試験なので、ValdiaのHDMI-outをVieraのHDMI-in3(本体前面のパネル)に接続した。テレビ・レコーダー共にHDMIリンクを有効にして、一回電源を切る。そして、実験スタート。

可否方向機能
レコ→TVレコーダーの電源ONに対応して、TVの電源をON
不明レコ→TVレコーダーの電源OFFに対応して、HDMI入力を選択中のTVの電源をOFF
レコ→TVレコーダーの操作に対して、HDMI入力モードにTVの映像ソース切り替え
レコ→TVレコーダーの操作に対して、電源OFFのテレビをONにしてHDMI入力に切り替え
TV→レコTVの映像ソースがHDMI入力の時に、TVを切るとレコーダーも切れる
不可TV→レコ今見ている番組をレコーダーで録画開始
不可TV→レコTVの番組表からレコーダーの録画予約
不明TV→レコテレビのチャンネル設定のインポート

なお、表中の「」は再現できた連携動作、「不可」は動作しなかった連係動作、「不明」は実験できなかったor再現できなかった連係動作である。

レコーダーの操作に伴う映像ソースの変更はメインメニューの呼び出し、映像の再生などで利用可能だった。録画予約に関する動作は、残念ながら動作しなかった。VieraはDigaを接続することを前提にしているらしい。

posted by yuji_at_radiance at 22:58| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年09月20日

epgrecのインストール(ブラウザの設定編)

前回・前々回の手順で、epgrecのアーカイブと必要なツールがインストール・設定されているはずである。 今回は、epgrecをブラウザ経由で操作して初期設定を行う。

apacheの設定

まず、epgrecがapacheから見えるように設定を変更する。新たに/home/foltia/epgrecをドキュメントディレクトリに追加する。 既存のドキュメントディレクトリ(httpd/htdocsとかhttpd/htmlとかuser/public_htmlとか)にepgrecを置く場合この作業は不要である。 httpd.confに数行の設定を追加する。

/home/foltia/foltia_httpd/conf/httpd.conf
Alias /epgrec "/home/foltia/epgrec"

    DirectoryIndex index.php index.html
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

そしてapacheを再起動する。
# /etc/init.d/foltia_httpd restart

ブラウザベースの設定

h ttp://radiance/epgrec/index.phpにブラウザでアクセスする。 初回設定が済んでいないと自動的に対話的セットアップのページに飛ぶ。すごい。 デジタルチューナー設定については特に何もしない。 システム設定は変更が必要。少なくとも以下の項目を編集する。

  • MySQLサーバー名はlocalhost
  • MySQLユーザー名はfoltia
  • MySQLパスワードはpassword-for-foltia
  • データベース名はfoltia_epgrec
  • インストールURLはh ttp://radiance/epgrec
MySQLパスワードはepgrec以下に平文で保存されるので、他のパスワードと違う文字列にしたほうがよい。MySQLパスワードの設定については前記事(蛇足編)を参考にしていただきたい。 ちゃんと設定できると、EPGの初回受信を始める。私の場合なぜかここでepgrecがうんともすんとも言わなくなった。真面目に仕事しているかどうか、recfriioの動作状態を確認する。
$ ps -A | grep recfriio
recfriioが立ち上がっていないのにロックファイルがあると、他のプロセスの迷惑になるのでチェックして削除
$ rm -i /home/foltia/foltia_tools/perl/tool/friiodetect
上手くいかない場合、手動で試してみる。15分くらいかかる。
$ /home/foltia/foltia_php/bin/php /home/foltia/epgrec/getepg.php

cronに仕事を追加

定時に行う仕事をcrontabに追加する。例えば12時29分に番組表を取得するには次のように書く。

$ crontab -l | grep epgrec
29 12 * * *  /home/foltia/foltia_php/bin/php /home/foltia/epgrec/getepg.php

最後に・・・

videoフォルダを大容量ディスクへのシンボリックリンクに張り替える

$ rm -rf video
$ ln -s /home/shared3/foltiarec video

posted by yuji_at_radiance at 09:24| Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。