◎QV-10 player "QVplay" Ver. 0.10      1996.5.10

●これはなんですか？

CASIOの液晶デジタルカメラQV-10は近年まれにみる素晴らしい製品ですが、
パソコン接続キットのパソコンリンクソフトはWindowsまたはMacintoshで
なければ動きません。

日頃、主にUnix環境を利用しているユーザにとって、カメラからデータを
吸い上げ、tiff形式に変換するために、Windows/Macを使用しなければならない
という状況は苦痛ともいえるでしょう。(^^)

幸い、cam形式ファイルからのファイル変換については、岩間さんの解析情報、
のおかげでitojunさんのcam2jpeg、仙田さんのcamtoppm.plを利用することがで
きるようになりました。

あとはカメラからデータの吸い出しさえできれば...

それを行なうのがqvplay(qvplay.x, qvplay.exe)です。

＃ことわらなくてもわかると思いますが、X680x0な人は以下の説明
＃でのqvplayをqvplay.xに、WindowsNTな人はqvplay.exeに読みかえて
＃ください。

qvplayを使えば
・QV-10からの画像データの取り出し
・QV-10のLCD画面に好きな画像番号の画像を表示する
・QV-10に記録されている画像の枚数を表示する
・QV-10に記録されている画像のうち好きな画像番号の画像を削除する
・QV-10のシャッターを切る(撮影する)
ことができます。また、qvrecを使えば
・QV-10へPPM形式、RGB形式、CAM形式の画像ファイルを書きもどす
ことができます。

QVplayには今のところ３種類のアーカイブがあります。
・ソースセット                  qvplay-0.10.tar.gz
・X680x0用バイナリセット        qvplay010x68.lzh
・WindowsNT/95用バイナリセット  qvplay010w32.lzh

  Unix系OS用バイナリはありません。ソースからコンパイルして下さい。
  X680x0、WindowsNT/95用のソースはソースセットの中に含まれています。

READMEをそれぞれのアーカイブセット用に書き直すのがめんどくさい
ので(^^)内容がけっこうごちゃごちゃですが御了承下さい。

●作者
  林 謙一 xg2k-hys@asahi-net.or.jp
  itojunさん itojun@csl.sony.co.jp

●注意
以下の事項に納得した方のみしか本ソフトウェアqvplayを利用しては
いけません。

・本ソフトウェアを使用することによってQV10、およびその中に
  収められている画像データ等が致命的破壊を被る可能性があります。
・本ソフトウェアを使用することによって生じる損害、不利益等に
  ついて、林は一切の責任を負いません。
・本ソフトウェアに付随する資料の内容によって生じる損害、不利益等
  について、林は一切の責任を負いません。
・場合によっては接続ケーブルを改造する必要があります。
  (現在のところFreeBSDはこの改造が必要です。)
・本ソフトウェアを使用することによってQV10、接続ケーブルが故障
  したとしてもCASIOさんに質問することは絶対にしないでください。
  (修理依頼するときはWindows/Mac版の通信ソフトで現象を
   確認してからにしてください)
・林は16bit Windowsを持っておりません。通信プロトコルの調査は
  Windows NT3.51J上でパソコンリンクソフトウェア for Windowsを
  うごかした結果に基づくものです。なお、CASIOのパソコンリンク
  ソフトウェア for WindowsはWinNT、Win95上での動作は保証して
  おりませんので、解析結果はあまり信用できません。(^^;;;
・qvplay(とqvrec)の開発にはitojunさんをはじめたくさんの方々
  の御協力がありましたが、当然のことながら上記の免責事項は
  その方々にも適用されます。
・qvplay(とqvrec)はいわゆるフリーソフトウェアです。
  使用に際しては特にフィーを請求しません。
  ただし、くる物は拒みません。(^^)
・qvplay(とqvrec)を商用ソフトウェアの一部として配布することは
  禁止しませんが、林をはじめqvplayの開発に関係された方々はそれに
  対して一切のサポートおよび、責任を負いません。
・qvplay(とqvrec)のVer 0.10は自由に配布してもらって構いませんが、
  商用BBS/プロバイダや、雑誌の付録CDROMに転載する場合、また商用
  ソフトウェアの一部として配布する場合は、できれば連絡をください。
  連絡が困難な場合は無理に連絡をいただかなくてもかまいませんが。
・Ver 0.10以外のバージョンは得にアナウンスがあるものを除いて
  開発中バージョンですので再配布を禁止します。
・林の不手際により、実はVer 0.10は２種類あります。
  96/5/5版と96/5/10版で、96/5/5版にはobj/X68k/siochk.cが
  入っていません。X680x0でソースからコンパイルしないかぎり
  とくに不具合はない(Unix系OSやWinNT/95では全然関係ない)ので、
  とくにバージョンを変えてバグフィックスとはしませんでした。
・qvplay(とqvrec)Ver 0.10の配布にあたっては、バイナリセットだけではなく、
  できるかぎりソースセットを一緒に配布するようにしてください。
  また、できるかぎり、もとのファイル名(qvplay-0.10.tar.gz、qvplay010x68.lzh、
  qvplay010w32.lzh)で配布されることを希望しますが、BBSシステムやCD-ROMの
  ファイル名等の制約によりそれができない場合は適宜名前を変更してください。
  その場合、検索しやすいように例えばqvplay010.lzhのようにqvplayという
  単語を頭に入れてください。
・qvplay(とqvrec)の著作権は林およびitojunさん、そして
  開発に協力して下さった方々にありますが、ソースファイルの改変、
  再利用等はその成果物を再配布する場合に、その改変されたソースを
  公開するなら、自由に行なってかまいません。
  その場合、その成果物のREADME等に、一言、「qvplayのソースを利
  用した」とことわっておいてくだされば幸いです。

●動作環境
＊Unix系OS
・PC/AT互換機 Linux 1.2.13、1.3.20
・PC/AT互換機 BSD/OS 2.0
・Sony NEWS-3150U2 NEWS-OS 4.2.1RN
・Sony NEWS-1860 NEWS-OS 4.2C
・Sony NEWS-4000 NEWS-OS 6.1.1
・NEC EWS4800 Rel.4.4 Rev01
・Sun Sparc Station 20 Solaris2.3(SunOS 5.3)
・Sparc互換機 SunOS 4.1.4
・Apple Macintosh SE/30 NetBSD 1.0
・PC/AT互換機 FreeBSD 2.0.5R(*)
・PC/AT互換機 FreeBSD 2.1.0R(*)

＊非Unix系OS
・SHARP X68030 + Human68k 3.02
・PC/AT互換機 Windows NT 3.5(Intel系) DOSプロンプトで動かします
・PC/AT互換機 Windows NT 3.51(Intel系) DOSプロンプトで動かします
・PC/AT互換機 Windows 95 DOSプロンプトで動かします

  (*)印のあるものは後述の通信ケーブルの改造が必要です。

●ソースセットの内容物
  README このファイル(JIS)
  PROTOCOL.txt QV10との通信プロトコルの説明(JIS)
  Makefile
  HISTORY 開発履歴(JIS)
  FAQ.txt 良くある質問(JIS)
  install-sh
  setup         
  obj/
     Win32/
         config.h
         getopt.c (GNUのgetoptです。)
         getopt.h (GNUのgetoptです。)
         tty_w32.c
         tty_w32.h
     X68k/
         Makefile
         config.h
         siochk.c (増田さんよりソースをお借りしております(_ _))
         tty_x68.c
         tty_x68.h
         x68k.c
  src/
     qvplay.c
     qvrec.c
     common.h
     command.h
     command.c    
     command1.h
     command1.c    
     command2.h
     command2.c    
     getuint.c
     getuint.h
     tty.h
     tty.c   
     jpeg.h     
     jpeg.c
     ppm.h
     ppm.c
     bmp.h
     bmp.c
     cam2jpgtab.h (itojunさんのcam2jpgからお借りしております(_ _))
     configure*
     Makefile.in
     configure.in
     config.h.in

●X680x0用バイナリセットセットの内容物
  README  このファイル(SJIS)
  HISTORY 開発履歴(SJIS)
  FAQ.txt 良くある質問(SJIS)  
  qvplay.x
  qvrec.x

●WindowsNT/95用バイナリセットセットの内容物
  README  このファイル(SJIS)
  HISTORY 開発履歴(SJIS)
  FAQ.txt 良くある質問(SJIS)  
  qvplay.exe
  qvrec.exe

●Unix系OSでコンパイルする方法
ttyがつかえるUnix系OSならほぼ問題なくコンパイルできると思います。

1. ./setup os名   (os名は適当でいいです。c.f. linux, newsos4 ...
                   unameが使える環境であれば ./setup だけでもいいですが)
2. cd obj/os名
3. ./configure
4. obj/os名 に出来上がるcommon.h の #define RSPORT
   をお使いになるttyデバイスのスペシャルファイル
   に変更してください
5. make

OSの種類とRSPORTのスペシャルファイルの例
・Linux 1.2.8          #define RSPORT "/dev/cua1"
・Linux 1.2.13         #define RSPORT "/dev/cua1"
・Linux 1.3.20         #define RSPORT "/dev/cua1"
・BSD/OS 2.0           #define RSPORT "/dev/tty01"
・NEWS-OS 4.2.1RN      #define RSPORT "/dev/tty00"
・NEWS-OS 4.2C         #define RSPORT "/dev/tty00"
・NEWS-OS 6.1.1        #define RSPORT "/dev/term/00"
・SunOS 4.1.4          #define RSPORT "/dev/ttya"
・Solaris2.3(SunOS 5.3)#define RSPORT "/dev/ttya"
・NetBSD 1.0           #define RSPORT "/dev/tty01"
・EWS4800 Rel.4.4 Rev01  #define RSPORT "/dev/term/00"
・FreeBSD 2.0.5R       #define RSPORT "/dev/cuaa0"
・FreeBSD 2.1.0R       #define RSPORT "/dev/cuaa0"

●X680x0でコンパイルする方法
ディレクトリobj/X68kのソースとsrc/のソースを使って
gcc & gmake & libc でコンパイルして下さい。
具体的には

ソースをX680x0上で展開
cd QVplay\obj\X68k
copy ..\..\src\*.c .
copy ..\..\src\*.h .
gmake -f Makefile
qvplay.x、qvrec.xが出来上がる

という手順です。

●Windows NT(Intel系)でコンパイルする方法
ディレクトリobj/WinNTのソースとsrc/のソースを使って
VisualC++4.0でコンパイルしてください。
具体的には

ソースをWindows NT上で展開
cd QVplay\obj\Win32
copy ..\..\src\*.c .
copy ..\..\src\*.h .
VisualC++4.0を起動
[ファイル][新規作成]で[プロジェクトワークスペース]を選び、
[新規プロジェクトワークスペース]で、[Console Application]を選び、
qvplayというプロジェクトワークスペースを作る。そして、
[追加][プロジェクトへファイルを追加]で、
qvplay.c command.c command1.c jpeg.c ppm.c bmp.c getopt.c getuint.c tty_w32.c
を追加する。
[ビルド]する
qvplay.exeが出来上がる

同様に
[ファイル][新規作成]で[プロジェクトワークスペース]を選び、
[新規プロジェクトワークスペース]で、[Console Application]を選び、
qvrecというプロジェクトワークスペースを作る。そして、
[追加][プロジェクトへファイルを追加]で、
qvrec.c command.c command2.c getopt.c getuint.c tty_w32.c
を追加する。
[ビルド]する
qvrec.exeが出来上がる
という手順です。

Unix系OSと同様にデフォルトのシリアルポートの
名前をcommon.h の #define RSPORT "COM2"
に定義してあります。必要に応じて変更して下さい。

●qvplay、qvrecを使うために用意するもの&準備
・CASIO 液晶デジタルカメラ QV-10、QV-10a、QV-30
・CASIO 液晶デジタルカメラ用パソコン接続キット for Windows LK-1
  の接続ケーブル
・CASIO 液晶デジタルカメラ用パソコン接続キット for Windows LK-10DV
  の接続ケーブル
  または
・CASIO 液晶デジタルカメラ用パソコン接続キット for Machintosh LK-2
  の接続ケーブル

(Windows用とMac用は、QV10との接続ケーブルは共通で、変換
 コネクタがDsub25-Dsub9か、Dsub25-MiniDinかの違いだけのようです)
(CASIOよりLK-10DVの他にも廉価版の新しいパソコン接続キットLK-10NC、
 LK-2aが発売されているようです。まだ試していませんがおそらく使え
 ると思います。)

 接続ケーブルでパソコンorワークステーションとQV10を接続してください。
あとはqvplayを使うだけ〜といきたいところですが、実はここでひとつ注意
があります。

 ご存知？のとおり、接続ケーブルには電子回路がくみこまれており、
RS-232CレベルからQV10用の電圧レベルに変換していると思われます。
その変換回路の電源として、CTS,DTRが+側電源、RTSが-側電源のよう
です。したがって、「RTSがoff、CTS,DTRがonでないと回路が作動
せず、QV10からのデータが流れて来ない」ようです。

 qvplayではRTSをoff、CTS,DTRをon にするようにしているのですが、
それでも何故かうまくデータが取れないことがあります。

 また、FreeBSD等のようにRTSをoffするとシリアルデータのやりとり
を止めてしまうOSもあります。(これはRTS線の意味を律義に正しく
実装しているということであり、OSの能力、仕様がおかしいという
わけではありません。ちょっと融通の効かない奴だという気は
しますが。^^)
 もし、qvplayを使おうとするOSがRTSをoffしたまま通信することが
できないようなものの場合、以下のような改造を行なう必要があります。

・接続ケーブルのRS-232C側の4番ピン(RTS)を7番ピン(GND)と
  ショートさせる
   
これでRTSは常にoff(厳密にはoffじゃないですが)になり、変換回路が
作動するので、QV10からのデータは常に流れて
来るようになります。接続ケーブルを改造するのが嫌な場合は
RS-232Cのジャンパボックス等を買って来て、

             ジャンパボックスの
(WS/PC側)    ♂側ピン      ♀側ピン(QV10接続ケーブル側)
             4         ┌──4
             7 ────┴──7
(その他のピンはストレート全結線)

のような配線をして、以下のように接続すればいいでしょう。

[WSのシリアルポート]--[ジャンパボックス]--[QV10接続ケーブル]--[QV10]

 なお、上記改造を行なってもCASIOのパソコンリンクソフト(Windows用)は
動作しました。

＃何故かGNDへRTSを落とさなくても「接続ケーブルのRS-232C側の4番ピン
＃(RTS)を抜いてしまう(接続しない)」でもなんとなく動いてしまいます。

●qvplayの使い方

QV-10の動作状況は３種類あるようです。
 1. リセットモード
 2. コマンド待機モード
 3. コマンド処理中モード

リセットモードは電源投入直後の状態で、QV-10のボタン操作が可能です。
また、リセットモードでもホストコンピュータ側からの操作コマンドを
受け付けます。

コマンド待機モードはホストコンピュータ側からのシリアル回線による
操作コマンドを受け付ける状態です。この状態になった時には、QV-10の
ボタン操作は効かなくなります。

コマンド処理中モードはホストコンピュータ側からのシリアル回線による
操作コマンドを処理している状態で、この状態の間は、ホストコンピュータ側から
の操作コマンドはリセットコマンドを以外はうけつけないようです。

リセットコマンドはどういうモードでもうけつけるみたいです。

qvplayによってQV-10にいろいろな動作をさせることができますが、
その結果、コマンド待機モードに入ります。このままではQV-10の
キー操作ができませんので、なるべく後述の-rオプションを最後に
つけるようにして動作の最後にリセットモードに入るようにした
ほうがいいでしょう。

また、qvplayから「tty not respond.」のようなメッセージが
出てきたり、どうもデータ転送がされてないような気がする
場合、また、途中で中断したい場合はCTRL-Cで中断して下さい。
中断したときにはQV-10も電源を入れ直して下さい。

・usage
  qvplay オプション

 オプションの説明
 num : 画像番号、1〜96の整数
 filename : 出力ファイル名 文字列

 -h           簡単なオプションの説明を表示します。
 -r           QV10にリセット動作を行なわせます。
              QV10の画面がいったんクリアされ、QV10のボタン操作が
              有効になります。リセットされたからといって、QV-10の中
              の画像が消えてなくなるわけではありません。
 -n           QV10に記録されている画像の枚数を標準出力に表示します。
 -p num       QV10のLCDの画像を画像番号のものに切替えます。
 -o filename  出力ファイル名の指定
 -F {jpeg,ppm,PPM,rgb,RGB,bmp,BMP,cam} 
              出力フォーマットの指定
              -a オプションまたは -g オプションと同時に使います。
              -a オプションまたは -g オプションよりも前に指定しないと
              フォーマットの指定が有効になりません。
              jpeg JPEG(JFIF)形式で画像データを出力します。
              ppm  PPM形式でthumnail画像データを出力します。
              PPM  PPM形式で画像データを出力します。
              rgb  RGB(Q0)形式でthumnail画像データを出力します。
              RGB  RGB(Q0)形式で画像データを出力します。
              bmp  BMP(24bit)形式でthumnail画像データを出力します。
              BMP  BMP(24bit)形式で画像データを出力します。
              cam  CAM形式でthumnail画像と画像データを出力します。
              デフォルトはjpegが指定されている状態になります。
              フォーマット名は、実際は頭１文字しか判別
              していませんので、photoでもpictureでもppmと同じ
              です。
 -g num       画像番号の画像をjpeg形式に変換して出力します。
              -o オプションが指定されていれば、そのファイル名で、
              -o オプションが指定されていなければ、標準出力へ
              出力します。
 -a           QV10に記録されているすべての画像を-Fオプションで
              指定した形式に変換して出力します。
              -F オプションが指定されていないとき、
              -o オプションが指定されていれば、
              filename_001.jpg
              filename_002.jpg
              filename_003.jpg
              .....
              というファイル名で出力されます。
              -o オプションが指定されていなければ、
              qv_001.jpg
              qv_002.jpg
              qv_003.jpg
              .....
              というファイル名で出力されます。
              -F オプションが指定されている時はそれぞれ、
              *.ppm、*.cam 等のようになります。
 -s num       -a オプションと同時に使います。
              -a オプションよりも前に指定しないと有効になりません。
              変換する最初の画像番号を指定します。
 -e num       -a オプションと同時に使います。
              -a オプションよりも前に指定しないと有効になりません。
              変換する最後の画像番号を指定します。
 -v           -a オプションまたは -g オプションと同時に使います。
              -a オプションまたは -g オプションよりも前に指定しないと
              有効になりません。
              データ転送動作を標準エラー出力に簡単にレポートします。
              表示される数字は画像番号とデータ転送バイト数を示します。
              (できあがるJPEG、CAM等のファイルの大きさではありません。
               ファイル形式によりますが、ファイルサイズより少し小さい
               数字が表示されます。)
 -d num       画像番号の画像をQV10から削除します。
 -t           撮影します。(QV10のファンクションスイッチを
	       RECの位置にしてください)
 -D ttydevice QV10と通信を行なうttyデバイスを変更します。
              WindowsNT/Windows95の場合は COM1〜COM4を
              指定して下さい。
              X680x0の場合は内蔵シリアルポート以外は選べ
              ませんのでこのオプションは無効です。
 -S {normal,mid,high,top,light} または {1,2,3,4,5}
              QV10と通信速度を変更します。
              1 normal   標準速     9600 baud
              2 mid      中速      19200 baud
              3 high     高速      38400 baud
              4 top      超高速    57600 baud
              5 light    光速(^^; 115200 baud
              速度名は、実際は頭１文字しか判別
              していませんので、hyperでもhogehogeでもhighと同じ
              です。
              (LinuxとWindowsNT/95以外の環境ではtop以上は使えません)
              (X680x0ではmid以上の速度を使う場合はtmsio.x等の
               高速シリアルドライバを常駐するようにしてください。 )
(X680x0のみ)
 -X num       画像番号の画像をX680x0のグラフィック画面に
              表示します。表示領域は480x480です。
              X680x0のグラフィック画面の都合上、
              5,5,5の15bit colorに減色されて表示されます。

-rオプションをのぞき、qvplayによる動作を行なった結果、QV10は
コマンド待機モードに入ります。動作させたあと、QV10のボタン操作
を有効にしたいばあいは、必ず-rオプションをつけるか、QV10の電源
をいったんOFFにして電源を再投入してください。

オプションは書いた順番どおりに左から右に解釈、実行されます。
同じオプションを何度書いてもかまいません。
ただし、-s -e -o オプションについてはそれが効果をおよぼす
オプション(-a -g)よりも左側に書かないと効果がありません。

-h オプションは実行された瞬間、usageを表示してqvplayを終了
します。以降に書かれたオプションは無視されます。
 
出力されるJPEG形式、PPM形式、RGB形式、BMP形式のファイルは
480x240のパノラマサイズ(^^)になっていますので通常の使用の
ためには、xv等の画像処理ツールでアスペクト比を4対3に補正する
必要があります。

X680x0の場合、アスペクト比が都合良く4対3に近いので、
-Xオプションでグラフィック画面に表示した画像は補正しなくても
それなりに見えます。(厳密には4:3じゃないので気になる場合は
補正してください。)そのままMatier立ち上げてPhotoShopごっこ
するとけっこう楽しいです。(^^)

通信速度指定オプションより右のオプションから指定した通信速度が
有効になりますので、 通信速度の指定はなるべく左側に書いて下さい。
また、機種、OSにより、通信速度の限界はさまざまです。
(例えばNEWS-OS4.2Cとかは9600baudが限界)
 
-rオプションは実行されると通信速度を標準速(9600baud)に戻します。

また、すべてのオプションを実行し終った後、qvplayが終了する時も
通信速度を標準速(9600baud)に戻します。
 
通信速度のうち、high以上を使う場合は注意が必要です。
標準的なUnix系OSでは、シリアルポートの通信速度はB38400までですので、
-S high までしか使えませんが、Linuxのsetserialコマンド等のように
B38400に設定すると実際には57600baudや、115200baudが使える
ものもあります。qvplayの内部ではhighも、topも、lightも
B38400に設定していますので、top、lightを使う場合は、あらかじめ
setserialコマンド等を使ってシリアルポートの設定を行なって下さい。
 例1
    setserial /dev/cua1 spd_hi        57600baudに設定
    qvplay -S top -o hoge.jpg -g 1 
 例2
    setserial /dev/cua1 spd_vhi      115200baudに設定
    qvplay -S light -o hoge.jpg -g 1 
B57600、B115200が使えるプラットフォームの方は、適宜、command.c
のQVchangespeed()の内部を書き換えて下さい。
(Linuxの場合、B57600、B115200はエントリーされているものの、
 使えないみたいです)
(Linux、WinNT/95でも115200baudでの転送はエラーが多く、
 結構シリアルカードの相性？に依存します。)

また、PC/AT互換機の場合、シリアルカードは16550互換のもの
でないとmid以上のスピードを指定しても十分な速度が出ません。

環境変数QVPLAYTTYで-Dオプションで指定しなかった場合の
デフォルトのシリアルポートの設定ができます。
Unix系OSの場合は「/dev/cua2」等のスペシャルファイルのパス名を
WindowsNT/95の場合は「COM1」〜「COM4」を指定してください。
WindowsNT/95用バイナリではデフォルトでCOM2になっています。
X680x0の場合はシリアルポートは内蔵シリアルポートに固定です
ので環境変数QVPLAYTTYも無視されます。

・例題
    cjpeg/djpegはIndependent JPEG GroupのJPEGライブラリ
    のサンプルプログラム、
    pnm*とかppm*はpbmplus/netpbm の ツール類です。

 1. 簡易スライドショー
    qvplay -p 1 
    sleep 5
    qvplay -p 2
    sleep 5
    qvplay -p 3
    sleep 5
    .....
    qvplay -r

 2. とりあえず１枚データをとりだす
    qvplay -o hoge.jpg -g 10

 3. とりあえず１枚データをとりだしてアスペクト比の補正して
    interlace gifへ変換(Unix系OSの場合)
    qvplay -g 10 | djpeg |  pnmscale -xsize 320 -ysize 240 \
                 |ppmquant 256 | ppmtogif -interlace >hoge.gif

 4. とりあえずデータ全部とりだす(JPEG形式)
    qvplay -o hoge -a
 
    hoge_001.jpg, hoge_002.jpg ....というファイルが出来上がります。

 5. 4枚目のデータから10枚目のデータをとりだしてリセット
    取り出し状況も見たい
    qvplay -v -s 4 -e 10 -a -r
    
    qv_004.jpg, qv_005.jpg, ...... qv_009.jpg, qv_010.jpg, 
    というファイルが出来上がります。

 6. 6枚目のデータをrokuban.jpg、12番目のデータをjuuniban.jpg
    として取り出したい
    qvplay -o rokuban.jpg -g 6 -o juuniban.jpg -g 12

 7. 全部のデータのthumbnail部分を取り出したい
    qvplay -F ppm -a
   
    qv_001.ppm, qv_002.ppm ....というファイルが出来上がります。

 8. 8枚目のデータをCAM形式で取り出したい。
    qvplay -F cam -g 8 > No8.ppm

 9. TV電話ごっこ？(^^)
    QV10の画像全部消してから
    qvplay -t
    qvplay -g 1 | どうにかして相手に送る (をいをい^^)
    qvplay -d 1 
    撮影(-t)へもどる

10. 中速モードを使って１枚データをJPEG形式で取り出す。
    qvplay -S mid -v -o 10.jpg -g 10 

11. 光速モードを使ってデータをJPEG形式で全部とりだす。 (Linux、WinNT/95 only)
    setserial /dev/cua1 spd_vhi  ←Linuxの場合
    qvplay -S light -v -a

    qv_004.jpg, qv_005.jpg, ...... qv_009.jpg, qv_010.jpg, 
    というファイルが出来上がります。

12. (X680x0 only) X680x0のグラフィック画面に６枚目のデータを表示
    qvplay -X 6

●qvrecの使い方
 
・usage
  qvrec [オプション] 書き込みたいファイル1 書き込みたいファイル2 ...

  指定した画像ファイルを順番にQV-10へ書き込んだ後に、
  QV-10をリセットします。
  画像ファイルはQV-10にすでに記録されている画像に追加される形
  で書き込まれます。
  ファイルを指定しなかった場合、標準入力からの入力を画像ファイルと
  して書き込みます。(1枚ぶんだけです)

 オプションの説明
 -h           簡単なオプションの説明を表示します。
 -v           データ転送動作を標準エラー出力に簡単にレポートします。
              表示される数字は画像番号とデータ転送バイト数を示します。
              (転送するCAM形式の画像ファイルの大きさではありません。
               ファイルサイズより少し小さい数字が表示されます。)
 -F {ppm,PPM,rgb,RGB,cam,CAM} 
              画像フォーマットの指定
              ppm または PPM     画像をPPM形式とみなします。
              rgb または RGB     画像をRGB(Q0)形式とみなします。
                                 FAL/IPRファイルは考慮しません。
              cam または CAM     画像をCAM形式とみなします。
              デフォルトはPPMが指定されている状態になります。
              フォーマット名は、実際は頭１文字しか判別
              していませんので、photoでもpictureでもPPMと同じ
              です。
 -D ttydevice QV10と通信を行なうttyデバイスを変更します。
              詳しくはqvplayのオプションの説明を参照して下さい。
 -S {normal,mid,high,top,light} または {1,2,3,4,5}
              QV10と通信速度を変更します。詳しくはqvplayの
              オプションの説明を参照して下さい。

（注意） 書き込む画像は。
         PPM形式の場合はraw(P6)フォーマットで、RGB各256階調の24bit
         カラー、大きさ480x240ドットのものしかうけつけません。
         RGB形式の場合もPPM形式と同様(480x240のみ)ですが、大きさ、
         階調等のチェックを一切行なわないので、注意してください。

・例題
 1. PPM形式の画像ファイルをQV-10へ書き込む
    qvrec file1.ppm file2.ppm file3.ppm
    すでにQV-10に4枚の画像が記録されていた場合、
    file1.ppmは画像番号5に、
    file2.ppmは画像番号6に、
    file3.ppmは画像番号7に、
    記録されます。

 2. 高速モードを使ってPPM形式の画像ファイルをQV-10へ書き込む
    画像ファイルの転送状況も見たい
    qvrec -v -S h file.ppm

 3. 標準入力からPPM形式の画像ファイルをQV-10へ書き込む
    cat file.ppm | qvrec

 4. CAM形式の画像ファイルをQV-10へ書き込む
    qvrec -F cam file1.cam

●画像フォーマットについて

・PPM形式
Unix系OSのフリーソフトnetpbm/pbmplusで扱われる標準フォーマットです。
P3形式とP6形式がありますが、qvplayではP6形式で出力します。
先頭にASCII文字で
P6\n
幅ドット数\n
高さドット数\n
255\n
の３行の文字列を書いた後ろに１ドットずつRGB３バイト
のデータをバイナリで続けたものです。
(厳密には\nはスペースやTABでもかまいませんし、
 '#'以降\nまではコメントになります。)

・RGB(Q0)形式
実は良く知らないのですが(^^;;、NiftyのFQLDフォーラムで
良く使われている画像フォーマットです。
幅、高さ、色の深み等の情報は一切なく、単純に
RGB３バイトのデータを並べたものです。
このままでは幅、高さの情報がないので、普通はFALファイル
またはIPRファイルと呼ばれるファイルと組で扱われます。
qvplayではFAL/IPRファイルは出力しませんので、以下のような
内容のFAL/IPRファイルをテキストエディタ等で作成して利用
して下さい。

*.FALの内容(thumbnail画像の場合は480 240の部分を52 36に変更してください)
F_ALL(V1.00)
  480   240     0     0
   1.00   255   255   255   0
*.IPRの内容(thumbnail画像の場合は480 240の部分を52 36に変更してください)
480 240 0 0

・BMP形式
Windows/OS2等で使われる画像フォーマットです。
qvplayではWindows 3.x形式、24bitカラーのBMP形式でファイル
出力します。

・JPEG形式
いわゆるJFIFですが、幅、高さが480x240、ノンインターリーブ形式、
画像精度8、コンポーネント3、色成分間引率2:3というちょっと
変わったファイル形式ですので対応していないJPEGアプリケーション
も結構あります。

●他にあると嬉しいフリーウェア／シェアウェア

 紹介しているftpサイトは適当にarchieで探したものです。
 このドキュメントを読んでいる時にはすでに存在していない
 かも知れませんので、注意してください。

・Unix系OSの場合
  netpbmかpbmplus (ファイルフォーマット変換フィルタ集)
 <ftp://ftp.info.eng.niigata-u.ac.jp/pub/X11/client/netpbm/>
  djpeg           (Independent JPEG Groupのjpegライブラリ
                   のサンプルとして入っています。jpegライブラリ
                  自体は下のxv-3.10aに附属しています。)
  xv-3.10a        (万能画像ビューア シェアウェア、アスペクト比、
                   色補正も簡単にできるので重宝しています。
                   シェアウェア代金は郵便局の国際送金を使って
                   送ることができます。)
 <ftp://ftp.airlab.cs.ritsumei.ac.jp/pub/X/xv-3.10a.tar.gz>

  xv-310a-jp-extension
                  (xvにPIC、PIC2等の日本でよく流通している
                   画像フォーマットを読み書きできるようにする
                   パッチ。CAM形式も扱えるようになるので、
                   これとqvplayがあれば超極楽です。^^)
 <ftp://ftp.airlab.cs.ritsumei.ac.jp/pub/X/xv-jp-extension/>

・X680x0の場合
  PIC.XかAPIC.X   (言わずと知れたPIC画像ローダ＆セーバ。
                   qvplay.xの-Xオプションで画面に表示させてから
                   PIC.XでセーブするとPIC形式のファイルが作れます)
 <ftp://ring.vector.co.jp/archives/common/x68/graphics/>

  残念ながらqvplay.xの出力するJPEG画像を扱うことができる
  X680x0で動作するJPEG画像ローダをまだ発見していません。
  もし、ご存じの方がいらっしゃいましたらぜひ情報を下さい。

  TMSIO.X等       (いわずと知れた高速シリアルドライバ。
                   mid(19200baud)以上の速度で転送を行なう場合は
                   あらかじめ常駐するようにしてください。)
 <ftp://ring.vector.co.jp/archives/common/x68/comm/tmn/>
                   
・WindowsNT/95の場合
  Susie32         (万能画像ビューア、プラグインを追加することで
                   いろいろなフォーマットの画像を扱えます。
                   βバージョンながらCAM形式のプラグインもあります
                   ので、これとqvplay.exeがあれば超極楽です。^^)
                   SusieとCAM用プラグインはホームページ
                   <http://www.st.rim.or.jp/~otake/>
                   から取って来れます。

  QVE.EXE         (qvplay.exe用のWindows用GUIです。)
                  NIFTY の FWINMM LIB-6にあるようです。

・その他
  電子工作の趣味のある方は山本さんの"QV10＜URA＞Info"が
  参考になるかもしれません。
  <http://www.med.toho-u.ac.jp/~mohyama/article/QV10.html>

●データ転送にかかる時間(参考)
  96枚のデータをJPEG形式で全部取り出すのにかかった時間です。
  (486DX4 Linux 1.2.8 で qvplay -S n -v -a として計測)
    速度               時間
  1 normal   標準速    ３８分３１秒
  2 mid      中速      ３１分３２秒
  3 high     高速      １１分５２秒
  4 top      超高速      ９分２７秒
  5 light    光速        ７分０１秒
  いったん光速モードに慣れるともう標準速は使えません。(^^)

●謝辞
・cam形式の解析を行なって下さった岩間さん
・camからjpegへの変換ソフトウェアをつくって下さったitojunさん、仙田さん
・qv10faq.txtを作成してくださった♪きむらかずしさん
・通信プロトコルについて非常に有益な情報をくださったBrahmaさん
・X680x0版について動作テスト＆アドバイスをいただいた増田さん
・NT/95版について動作テスト＆アドバイスをいただいたばかりか、
  GUIプログラムQVW.EXEまで作ってくださった平野さん
・qvplayの動作テスト報告＆アドバイスをいただいた
  itojunさん、久田さん、野萱さん、♪きむらかずしさん、
  大内さん、安田さん、一色さん、松山さん、増田さん、
  平野さん、藤田さん、今井さん、大庭さん、姫野さん、
  他、沢山の方々。(順不同)
・そして、QV-10を企画設計生産販売修理(^^;してくださったCASIOの皆様

●今後の課題
・通信プロトコルのさらなる解明
・CASIO NAME LANDとの通信プロトコルの解明

●皆様への要望
・バグレポート、改善要求は大歓迎です。(xg2k-hys@asahi-net.or.jpまでどうぞ)
・各種Unixプラットフォームでの動作確認も大歓迎です。
・FreeBSDでRTSをoffにしたままシリアル通信する方法、誰か教えて下さい
・新パソコンリンクキットLK-10NC、LK-2aを手にいれた方、
  是非qvplayの動作チェックをよろしくお願いします。
・EPSONのCP100用のqvplayが欲しいという方、２週間ほど機械を貸して
  下さればよろこんで作成します。(^^)

