実験レポート
デジカメの画像を直接ザウで見る!?
- 1999.1.19補足
- moreソフトでATAフラッシュカードの任意ディレクトリを
参照できるということで、早速L.Forceさんが便利なmoreソフトを公開して
くださいました。ありがたく使わせていただきましょう(こちらです)。
そうすると・・・この文書も、もうお役ごめんですね(苦笑)。
- 前書き
MI-500以降のザウルスでは、ノートパソコン等で使える、いわゆる
ATAフラッシュカードが利用できるようになり、データ交換や
バックアップに重宝するようになりました。
しかし、MIザウルス側で扱えるのは専用のディレクトリ \__ZAURUS の
中だけに限られ、moreソフトで提供されている Zaurus-PC Exchange を
利用しても、\(ルート)と \__ZAURUS 以外は使う事ができません。
これはこれで良い(PDAとして正確に動くのが一番重要)のですが、
一般的なデジカメの画像ファイルを直接見たい場合に不便が生じます。
デジカメは通常ルート直下に専用フォルダを作り、そこに格納して
しまうため、ザウルス側から見ることができないからです。
勿論、ザウルスとしては、IrTran-P対応カメラから光通信で受信するのが
正攻法なのですが、それでも『デジカメの画像を直接見れたらなぁ』と
いうのは人情。そこで、今回ちょっと汚い方法で、デジカメの画像を
直接ザウルスで読むという実験を行ってみました。
なお、お約束ですが、この記事を見て試した結果、あなたのメモリカード
及びHDD内容を消去したとしても、こちらには一切責任はありません。
あくまでも自己責任の元で行ってください。(物理的に壊れる事はありません)
- 概要
まず、ザウルスが読み書きできるのは ルート と __ZAURUS だけで、
デジカメはルート直下の専用ディレクトリです。このままでは共通点は
無さそうに見えますが、よく見るとどちらもルート直下の専用ディレクトリを
利用していることに気づきます。
ならば __ZAURUS ときても、デジカメ用ディレクトリときても、
どちらも同一の場所を見にいくように細工したらどうでしょう?
つまり、UNIXで言うところのハードリンクです。
ATAフラッシュカードは、FAT形式でフォーマットされているので、
両エントリの参照先クラスタを、同じものにすれば実現できそうな
気がしますね。
FAT形式の詳しい話はここではしませんが、要は実際にファイルを
格納している場所を番号で管理していて、ディレクトリやファイルに
アクセスする場合、目次をひいて何番をアクセスするか決まるという
ものです。今回行うのは、デジカメ用の目次を書き換え、__ZAURUSの
ページを指すようにしようというものです。
カードに細工してみよう
- ・ATAカードをフォーマット
-
まずは、デジカメ(今回はNIKON COOLPIX900を使用)で、ATAカードを
フォーマット(初期化)しておきましょう。
- ・ザウルスのファイルを書込ませる
-
次は、今のカードをザウルスに挿し込み、__ZAURUS ディレクトリと
必要なファイルを書込んでもらいましょう。ここでのポイントとしては、
デジカメでフォーマットしたカードがザウルスでそのまま使えないと
だめだという事です。なお、書込みにはちょっと時間がかかりますので、
終わるまでのんびり待ってください。できたら、スケジュールでも
アドレス帳でも構いませんので、カード側に切り替えて入力できる事を
確認しておきましょう。
- ・FATの書き換え
-
ここからが今回のポイントです。何らかの方法でATAカードのFATを
書き換えてやらねばなりません。ディスクのバイナリエディタでも
あればそれで構いませんが、とりあえず Windows に入ってるので、
今回は debug.exe を使ってみることにします。MS-DOSコマンドプロンプトを
起動して、debug と打ち込んでください。行頭の - (ハイフン)が
コマンド入力プロンプトで、ここでコマンドを打ち込むことで操作します。
ヘルプを見るには ? 、 debug を終了するには q です。
それでは、ATAカードの内容を一部メモリに読み込んでみましょう。
ディスクをセクタ単位に読むコマンドは L ですので、読み込むアドレスと
ディスク番号(0:A, 1:B, 2:C, 3:D ...)、読込開始セクタ番号、
読み込むセクタ数を指定して実行します。なお、読込開始アドレスは、
個々の環境によって異なるので、メモリの空いているところを使いましょう。
- [例] d:ドライブの 0 セクタから 8 セクタ分を 3000:0000 〜に読む
- L 3000:0000 3 0 8
さて、上記のようにして 3000:0000 から 8 セクタ分読み込んだ場合、
今回試した4MBのカードでは次のようになりました。( D コマンドは
指定したアドレスのメモリ内容を表示する命令)
- NIKON COOLPIX900 の場合
- 3000:0000 先頭セクタ
- 3000:0200 第1FAT
- 3000:0800 第2FAT
- 3000:0e00 ルートディレクトリ
ここで少々補足しておきます。今回の NIKON COOLPIX900 の場合は
上記のようになっていましたが、別なデジカメ RICOH DC-3Z で試した時は
少々位置に差がありましたので、実際に作業を行う場合には
上図のように D コマンドでメモリ内容を確認し、その内容から
ルートディレクトリがどこか確認した方がいいでしょう。
- 参考:RICOH DC-3Z の場合
- 3000:0000 先頭セクタ
- 3000:0200 第1FAT
- 3000:0600 第2FAT
- 3000:0a00 ルートディレクトリ
どこがルートディレクトリかの判断ですが、上図でわかるように、
通常エクスプローラ等でディスクの内容を見た時のようにファイル名や
ディレクトリ名が並んでますので、大体見当つくだろうと思います。
3000:0000, 3000:0200, 3000:0400, 3000:0600, 3000:0800, 3000:0a00,
3000:0c00, 3000:0e00 ... と、0200(512byte)ずつ先頭をずらして見て
いけば見つかるはずです。
そこまでわかったら、早速 FATの書き換えにはいりましょう。
ここで簡単に説明しますと、FAT は 32byte (画面上では2行)で
1つのディレクトリ・エントリを示すようになっており、この場合、
3000:0E00 からの2行が ボリューム名 NIKON01DSC の情報、
3000:0E20 からの2行が IM01E900 ディレクトリの情報、
3000:0E40 からの2行が __ZAURUS ディレクトリの情報と
なっています。
1つのエントリ32byteの内、はじめの11byteが 8.3文字形式の
ファイル名、次が種類といった具合に各情報が記録されていますが、
この時、先頭から数えて 27,28番目にあるのが、実際の内容を
記録している場所の番号です。
例えば、IM01E900 ディレクトリの内容が実際にある場所は、
上の図を見ると、03 00 の位置で、__ZAURUSの場合は
04 00 の位置なんだとわかるわけです。
今回の目的は、IM01E900(デジカメ用ディレクトリ)の指す先を
こっそり __ZAURUS の指す先と同じにしてしまおう!というものですから、
上の図で言うと、3000:0E3a の値を __ZAURUS のと同じ 04 に書き換えて
あげれば良いのです。
これを行っているのが、上図の e 3000:0e3a のところで、
このメモリ書き換えコマンドで、3000:0e3a の所の内容を書き換える
わけです。E コマンドの次の行で 3000:0E3A 03.04 となってますが、
表示されるのは 3000:0E3A 03. までですので、この後に続けて
04と手入力してください。これで、書き換えが完了しました。
ちゃんと書き換えられたか心配な方は、D 3000:0E000 として
確かめてみれば良いでしょう。
ここまで来たら後は、今書き換えた内容を ATAカードに書き戻して
あげれば終わりです。上図で言うと最後の W 3000:0000 3 0 8 が
そうです。
なお、W コマンドの使い方は L コマンドとほぼ同じですが、ディスクに
書き込むという危険な操作を行うわけですから、その使い方には十分に
注意してください。特に2番目のパラメータを間違えると ATAカードじゃ
なくハードディスクに書き込んでしまいますから、本当に気をつけて
ください。
- ・書き換えたカードの確認
-
こうして書き換えたカードは、一見書き換える前と変わりないように
見えますが、エクスプローラなりMS-DOSコマンドプロンプトで中を見て
みるとその違いに気づきます。
ディレクトリとしては、ルートに IM01E900 と __ZAURUS の2つが
あるだけですが、どちらを見ても中身が全く同じになっています。
試しに何かファイルをコピーしてみれば、どちらのディレクトリも
入り口は違うものの中が一緒だとわかるでしょう。
ちなみに、この状態は FAT異常 という事になりますので、間違っても
スキャンディスクなんてかけちゃだめですよ。手間かけてわざわざ
こうなるようにしたんですから。:-)
使ってみよう
- ・カードをデジカメに入れて撮影
以上のようにしてカードが準備できたら、後は普通に使ってもらって
結構です。カードをデジカメに入れて、いつものように撮影していきましょう。
問題なく撮影できるのであれば、まずは良しですが、注意点が4つあります。
- カードを全初期化しないこと
細工まで消してしまうから。
- 画像の全消去をしないこと
同一ディレクトリにザウルス関連ファイルも入る為、異常になる
可能性がある。デジカメでの画像消去は1枚1枚選択して行うこと。
- メモリ一杯まで撮影しないこと
ザウルスに取り込む場合、一時的に変換したい画像と同じだけの
ディスク領域を使うため、空き領域がないとフォトメモリーに変換
できず、異常になる可能性がある。2枚変換するなら2枚分は空きを
残しておくことが必須。
- 126KB以上のサイズになる画像は撮影しない
ザウルスのフォトメモリーは 126KB 未満の画像ファイルでないと
扱えないため(最新機種のMI-310でも同様)、メガピクセルの
デジカメを使う場合は、VGAモードでの撮影でなくてはならない。
場合によっては VGA モードでも FINE で 126KBを超える場合が
あるので、その時は1つ低い画質で撮影すること。
(ザウルスに読み込ませる必要のない画像であれば、超えても
構わない)
- ・カードをザウルスに入れて読込
-
撮影が終わったら、デジカメからカードを抜いてザウルスに
入れてください。先にも書きましたが、変換する枚数分の空きは
残しておきましょう。
ザウルスでカードは認識されれば、パソコンデータの画面から
撮影した画像ファイルの一覧が見れるはずです。左図では1枚の
画像ファイルが見えてますね。
フォトメモリーに変換したい画像を選んで実行を押せば変換が
始まります。
なお、この画面のようにフォトメモリーに変換された場合、ファイルは
削除されますので、デジカメ側からは見れなくなります(注意)。
フォトメモリーに取り込んでさえしまえば、後は、画像を加工することも、
メールやFAXとして送る事もできるようになります。必要であればカードから
本体メモリに移しても構いませんし、自由に活用しましょう。
- ・もう1つの転送手段
-
上記では、フォトメモリー機能からPC読込を使う方法を使いましたが、
もっと単純な方法として、Zaurus-PC Exchange を利用するというのが
あります。これを使えば、カードから本体への直接コピーも直接移動も
できる上、PC読込を使わずにフォトメモリー機能で画像を
コピーすることもできます。
但し、こう便利な Zaurus-PC Exchange にも1つ問題があります。
実験してみるとわかりますが、先程のPC読込ではエラーではじかれていた
126KB以上の画像も、なぜかフォトメモリーに入ってしまうのです。
実は、これに限らずザウルスパワーコネクション(パソコン用ソフト)から
送った場合も、126KB制限を超えて転送できるという問題があります。
(最高で290KB近くまで可能)
しかし、メール機能での制限やフォトメモリー機能の編集の事を考慮すると
やはり上限は126KBにしておくのが無難です。第一、それ以上大きな
画像を入れたところで全部表示できるわけでもなし、メールできるわけでも
なし、ほとんどメリットがありません。
ですので、Zaurus-PC Exchange を使って画像をコピーする場合には、
各種制限から 126KB 未満の画像だけをコピーするように注意しながら
使うようにしてください。
- 終わりに
え〜、FATを書き換えるという無茶な事をやってみたわけですが、
いかがだったでしょうか。パワーザウルス用のカメラも持っている身と
しては、本当に『こういう事もできるね』といった酔狂でしかないと
思っています。Zaurus-PC Exchange が機能アップされて、ルート以外の
ディレクトリも見られるようになれば、全く無意味ですしね(笑)。
実際問題、デジカメもメガピクセル機が主流となり、ザウルスどころか
パソコンでも表示しきれない大きな(当然ファイルサイズも大きい)ものと
なってきてますから、どちらにしても少々苦しいでしょう。大きな画像を
扱うのであれば、ノートPCでも役不足になってきてますから。
・・・とは言え、やっぱりザウルスで画像を扱えるというのは楽しい
ことだし、利用範囲も広がると思います。そんな 1280x960 なんてのじゃ
なくて、320x240 でもビシッと決まった画像が撮れれば色々と広がると
思うんですよね。IrTran-P 対応カメラというだけじゃなく、スロットに
さして moreソフトからも制御できるそんなデジカメカードが望みです。
願わくば、コンパクトフラッシュ対応で、カラポケでも使えるような、
そんな小粒だけどキラリと光るデジカメカード・・・欲しいですね(^^)。
|