HOME > 技術 > POF 解説

(CQ出版社2002年3月号掲載の抜粋です)

光ポート付きIEEE1394 OHCI対応の光ボード

光ポート付きのIEEE1394 OHCI対応の光ボードを紹介します.本当に長い距離が大丈夫なのか,あるいはアナライザで観察すると,どのようなノードとして観測されるか調べてみます.また,以前作ったWDMドライバで動作するか調べます.

目次

  1. P1394b概要
  2. 光ポート付きIEEE1394ボードの紹介
  3. IEEE1394 SMIコネクタ採用の光リピータの紹介
  4. 光ポート付きIEEE1394ボードのインストール
  5. いろいろな機器を接続しトポロジの変化を観測
  6. ML-IIを使って光ポート経由でDVカメラを制御
  7. 20mのPOF*1ケーブルで長距離実験(振ってみる,折ってみる)
  8. WDMクライアントドライバを使ってDVカメラの制御
  9. WDMクライアントドライバのインストール方法
  10. WDMクライアントドライバを使ってDVカメラの制御・その2
  11. Windows98とIEEE1394
  12. 開発したDLL関数の説明

*1:POF: Plastic Optical Fiber
石英ファイバはインフラ用のファイバとして多く利用されます.一方POFは民生用ファイバといわれています.

先頭に戻る

P1394bの概要

1394の仕様は,1995年にIEEE1394標準(IEEE1394-1995)として認められました.さらに,このインタフェース規格の補完・拡張 規格である1394aが2000年,1394a-2000として採択されました.現在では.数多くの1394インタフェースがパソコンを始め.ディジタルカムコーダやBSディジタル機器,ハードディスク等のストレージ機器,さらには車などの移動体,および工場などで用いられるFAネットワークにも用いられようとしています.

IEEE 1394a-2000の特徴を以降に述べます.

既に,IEEE1394-1995や1394a-2000については,数回に渡って本誌で解説や実験の紹介を行っています.IEEE1394自体の説明については割愛します.詳しく知りたい方は,本誌のバックナンバーを参照するか,CQ出版社株式会社から発売されている「IEEE1394の徹底研究」などを参照してください.

P1394bでは,高速化と長距離化などがはかられます.1394bで追加される主な機能は次の通りです.

先頭に戻る

光ポート付きIEEE1394ボードの紹介

使用したボードは,三菱レイヨン株式会社のSBD-100SMです.1394.a対応のS400ポートが2つ,P1394b準拠のポートが1ポート付いています.

SBD-100SMの写真
図 ボード外観
SBD-100SMハードウエア主要スペック
  光ポート メタルポート
p1394b P1394b準拠 IEEE1394-1995, P1394a準拠
1394ポート数 1 (SMIタイプ) 2 (6ピン)
(ボード給電中のみポート間リピート動作可能)
転送レート 100Mbps対応 100M, 200M, 400Mbps対応
転送距離 20m 4.5m
使用コネクタ SMI IEEE1394準拠6ピン
ケーブル ESKAMEGA 6芯STP
ホストI/F規格 PCI Local Bus Rev2.1準拠
動作電圧 +5V±5% (PCIバスより供給)
動作電流 800mA以下
サイズ (W x D) 107x138 (mm)
動作環境 10~40℃, 20~90%RH
但し、結露無きこと (動作および保管時)

普通の1394ボードの導入と同様,簡単に最新の光1394を利用できます.OHCI対応で,ストレージ製品やDVカメラなども普通に使うことができます.ビデオ編集などに最適な,Ulead Video Studio4.0SEが添付されています.今回はP1394bポートの調査が主だったため,ビデオ編集プログラムなどは使用しませんでした.光ポートはS100で,20mまで利用できます.

S200対応や,50m対応品

すでに,インターオプトなどでS200 光OHCIボード 「SBD-205SM」や,S200対応 光リピータ 「SRP-225SM」が発表されています.S100固定モードでは50mの伝送が可能になります.本記事が発表される頃には,製品も発売されているでしょう.

SBD-100SMの外観を示します.

SBD-100SMボードの写真
図 ボード外観

コネクタ周辺を示します.上部2ポートがIEEE1394-1995 ,P1394a 準拠ポートです.下部の1ポートが,P1394b 規格準拠ポートです.

SBD-100SMコネクタ周辺部の写真
図 コネクタ周辺部

SBD-100SMのPHYチップには,NEC社のμPD72880が使われています.

SBD-100SMPHYチップの写真
図 コネクタ周辺部

μPD72880は,P1394a draft 2.0準拠のDSポートを2ポート,およびP1394b草案準拠のBetaポートを1ポート備えた物理層LSIです.

μPD72880の特徴

DSポート

Betaポート

以下にブロック図を示します.

SBD-100のブロック図
図 SBD-100のブロック図

SBD-100SMのLINKチップには,TI社のTSB12LV23が使われています.

SBD-100のLINKチップ
図 SBD-100のLINKチップ

TSB12LV23は,市販のIEEE1394 PCIボードなどでもよく使われているIEEE1394.a準拠のオープン・ホスト・コントローラ・インタフェース(OHCI),パソコン用リンク層LSIです.PCIだけでなく組み込みにも使われています.現在では組み込みでもOHCIやPCIを使う機会は増えました.

PHY,LINK,コネクタ間の結線の様子を以下に示します.

SBD-100のLINKコネクタ間結線の様子
図 LINKコネクタ間の結線
先頭に戻る

IEEE1394 SMIコネクタ採用の光リピータの紹介

SBD-100SMの光ポートを直接DVカメラなどに接続することができため,P1394.b光リピータSRP-120SMと併用します.もちろん,SBD-100SMには通常の1394.a準拠のポートがありますので,そちらを使えば問題なくDVカメラなどを直接接続できます.しかし,今回は光ポート経由での実験が目的ですので,光リピータを試用します.P1394.b光リピータSRP-120SMは,P1394b準拠の光ポート×1ポート,IEEE1394.a-2000準拠のメタルポートを2ポート装備しています.

光ポートは,家電メーカーが提唱しているSMIコネクタを採用しています.ケーブルは小型でS200/20m伝送できます.光1ポート(S100/20m) とメタル2ポートの小型の1394光リピータです.小型光コネクタSMIを採用しています.光ポートを使えば,SRP-120SM同士,またはSBD-100SMとの組み合わせで,20mまで伝送できます.メタルポートを使えば,通常のIEEE1394.aボートと同様の使い方ができます.

リピータの写真
図 リピータ外観
光リピータ主要スペック
  光ポート メタルポート
1394 I/F 規格 P1394b準拠 IEEE1394-1995, P1394a準拠
1394ポート数 1 (SMIタイプ) 2 (6ピン)
転送レート 100Mbps対応 100M, 200M, 400Mbps対応
転送距離 20m 4.5m
使用コネクタ SMI IEEE1394準拠6ピン
ケーブル ESKAMEGA 6芯STP
動作電圧 DC8~40V
消費電力 5.5W Max.
サイズ (W x D) 25 x 100 x 73(mm)
動作環境 10~35℃, 20~85%RH
但し、結露無きこと (動作および保管時)
リピータの写真
図 おもて側 aポートが2つとステータスランプ
リピータの写真
図 裏側 光ポートと電源ジャック

 

リピータチップには,SBD-100SMのPHYチップに使われていた,NEC社のμPD72880が使われています.

リピータの内部写真
図 内部 1
リピータの内部写真
図 内部 2

 

リピータのメタルポート部分の写真
図 メタルポート
リピータの光ポート部分の写真
図 光ポート

 

リピータのメタルポートの写真 (内部から)
図 メタルポート (内部から)
リピータの光ポートの写真 (内部から)
図 光ポート (内部から)

 

先頭に戻る

光ポート付きIEEE1394ボードのインストール

まず,パソコンの空きPCIスロットにIEEE1394ボードを挿して,電源を入れてください

ボードをPCIスロットに挿している写真
図 ボードをPCIスロットへ
ボード背面の写真
図 ボード背面

ウィザードが起動しますので,一般的な手順でインストールを行います.この,SBD-100SMに使われているのはTI社のTSB41LV23です.そのため,Windowsから見た場合,一般のIEEE1394.aボードと違いはありません.

デバイスマネージャ
図 デバイスマネージャ
先頭に戻る

いろいろな機器を接続しトポロジの変化を観測

いろいろな機器を接続していき,途中に光1394ケーブルが存在しても問題ないか調べてみます.まず,アナライザしか存在しない状態を示します.アナライザは,コマンダとモニタから成り立っていますので二つのノードが存在します.アナライザのみのトポロジを表示してみます.アナライザには横河電機社製のアナライザを使用しました.

アナライザの写真
アナライザを接続しただけのトポロジマップ
図 アナライザのみのトポロジ

アナライザにリピータを接続します.アナライザとリピータをメタルケーブルで接続します.

アナライザとリピータ
リピータを接続したときのトポロジ画面
図 リピータを接続したときのトポロジ

さらに,リピータの光ポートからSBD-100SMの光ポートへPOFケーブルで接続します.光ポートはS100のみに対応しています.トポロジ上の表示を参照してください.

アナライザとリピータ
図 アナライザのみのトポロジ
アナライザとリピータ
図 光ケーブルでSBD-100SMを接続したときのトポロジ(04Topology\03ボードを.bmp)

光ケーブルです.

光ケーブルの写真
図 光ケーブル

さらに,リピータの1394.aポートへDVカメラを接続します.トポロジ上の表示を参照してください.

DVカメラを接続したときの図
図 DVカメラを接続したときのトポロジー
光ケーブルの写真
図 DVカメラを接続したときのトポロジー

さらに,SBD-100SMの1394.aポートへML-IIボードを接続します.トポロジ上の表示を参照してください.

IIボード、DVカメラの接続図
ML-IIボードを接続したときのトポロジー
図 ML-IIボードを接続したときのトポロジー

ML-IIの紹介

ML-IIはMLシリーズのひとつです.MLシリーズはMedia Convergenceの要となるIEEE1394を対象とした開発キットです.Embeddedを対象としていますが,ISAバスも搭載しており,Windows等でも簡単に実験ができます.本誌に掲載したとおり,簡単なアナライザとしても使うことができます

特徴

  • IEEE1394.a準拠
  • 100Mbps/200Mbps / 400Mbps対応
  • Asynchronous / Isochronous対応
  • RAM搭載
  • DMA搭載
  • Local Busによる高速処理対
  • 応可能
  • FPGAによるCPU Free設計
  • 実験が簡単にできるようにPC104 / ISA準拠バス搭載
  • 豊富なサンプルプログラム
  • 組み込みに最適
  • 組み込み,Windows98,Windows 2000,MS-DOS対応
ML-II-の写真
図 ML-IIボード

MLシリーズは,有限会社スペースソフト(http://www.spacesoft.co.jp/)と協力会社の共同開発製品です.

先頭に戻る

ML-IIを使って光ポート経由でDVカメラを制御

この状態で,ML-IIからAV/CコマンドをDVカムコーダへ送って,カメラを制御してみます.当然,途中にPOFや光リピータを経由しますので,POFの動作実験になります.

ML-II、DVカメラの接続図

接続時のML-IIの表示を参照すると,ノード数が6ノード,自ノードIDが0であることが分かります.先に示したアナライザのトプロジマップと一致しています.

ML-IIの表示画面
図 初期状態,ノード数は6,自ノード番号は0

AV/CコマンドをDVカメラに送って,ビデオテープの再生を行わせます.コマンドや応答の内容は解説しません,詳しく知りたい場合はIEEE1394のAVプロトコルなどを参照してください.

ML-IIの表示画面
図 DVカメラに再生を送信

AV/CコマンドをDVカメラに送って,ビデオテープを停止します.

ML-IIの表示画面
図 DVカメラに停止を送信

Read Quadletトランザクションを光1394ボード(SBD-100SM)へ送ってConfigration ROMを読み出してみましょう.IEEE1212空間のFFFF F0000404(16進数)から1クワッドレット読み出して見ます.

ML-IIの表示画面
図 光1394ボードのConfig ROM読み出し

図から分かるように,FFFF F0000404(16進数)には31333934(16進数)つまり,文字で”1394”と入っています.正常に処理されたようです.また,LINKより上位の層から見た場合,IEEE1394.aポートも,P1394bポートも同じに扱えることが分かります.

次に1394ボード(SBD-100SM)のGUIDを読み出してみます.

ML-IIの表示画面、GUID読み出し結果の表示
図 光1394ボードのGUID読み出し

読み出したGUIDをアナライザが表示したGUIDと比較してみると,一緒になっています.正常に処理されたようです.GUIDを読み出すのにRead BlocK Quadletトランザクションを使ってみましたが,ボードからは反応はありませんでした.これは,Windows98のドライバが対応していないためと思われます.そこで,Read Quadletトランザクションを2回送り,GUIDを読み出しました.

注:付属したPOFケーブル長が5mしかなかったため,20mのテストを行うことはできませんでした.

先頭に戻る

20mのPOFケーブルで長距離実験

標準で付属してきたPOFケーブル長は5mでした.これではせっかくのβポートが宝の持ち腐れです.そこで,特別にお願いして20mのPOFケーブルも借用しました.振動による損失(反射)や曲げによる損失で,どのような影響があるかも簡単に実験します.ただ,厳密な実験を行うには,高度な知識と機材が必要です.本稿では単純に手でケーブルを振ったり,POFの曲げ限界まで曲げた場合のアプリケーションへの影響を探る程度にとどめます.曲げ限界については,破損しても構わないケーブルも借用できました.機材を貸与してくださった,三菱レイヨン株式会社様に感謝いたします.

 
POFケーブルの写真
図 20m POFケーブル
接続図
図 接続の様子

長距離接続と,振動による影響を同時に実験してみました.20mという長さは,想像以上に長く,これだけあれば大抵の家庭内の配線は間に合うのではないだろうかと思いました.もっとも最近は住宅も広くなっていますし,壁に埋め込むことを考えると,50mや100mが要求されるのも分からないではありません.

図に示す結線を行い,まずバスリセットをML-IIからかけてみます.6個のセルフIDが見えます.アナライザがコマンダも含んでいますので,これで正常です.

バスリセット時の画面
図 バスリセット

このときにアナライザで観測したトポロジマップを示します.

トポロジマップの表示画面
図 トポロジマップ

この状態で,ML-IIから,AV/CコマンドをDVカムコーダに送出し,カメラの制御を行ってみました.いろいろなコマンドを送るとともに,ケーブルを激しく揺すってみましたが,動作にはまったく影響は表れませんでした.

同様に,ケーブルを振動させながら,AV/Cの再生コマンドを送ってみましたが,まったく動作には影響はありません.

振動時の表示 (その1)
図 振動 (その1)

他にも沢山のコマンドを,ケーブルを激しく振動させた状態で送ってみましたが,まったく動作には影響はありませんでした.

振動時の表示 (その2)
図 振動 (その2)
先頭に戻る

曲げ実験

POFの限界曲げが,半径25mmとありますので,曲げにも挑戦してみました.20mケーブルを破損すると勿体ないので,破損しても良い5mケーブルを借用できたので,そちらを使用しました.半径曲げが25mmmまでですので,直径50mmの円筒を探し,その円筒にPOFを3回ほど巻き付けて実験してみました.

直径50mmの円筒に3回巻き付けたPOFの写真
図 直径50mmの円筒に3回巻き付ける
接続図
図 接続の様子

直径50mmの円筒は決して細くはないのですが,POFケーブルを巻き付けるときに抵抗を感じます.やはりメタルケーブルと比べると, POFは曲げにくいという印象を受けます.

図に示す結線を行い,まずバスリセットをML-IIからかけてみます.6個のセルフIDが見えます.アナライザがコマンダも含んでいますので,これで正常です.

バスリセット時の画面表示
図 バスリセット

このときにアナライザで観測したトポロジマップを示します.

トポロジマップ
図 トポロジマップ

この状態で,ML-IIから,AV/CコマンドをDVカムコーダに送出し,カメラの制御を行ってみました.動作にはまったく影響は表れませんでした.

AV/Cコマンドの送出時画面
図 AV/CコマンドをDVカムコーダに送出

Asynchronousパケットだけでなく,Isochronousパケットも連続して受信してみました.

Isochronousパケットの送出時画面
図 Isochronousパケットの送出

簡単な実験ですが,曲げに対してもまったく問題は発生しませんでした.もう少し定性,定量的な実験も行いたかったのですが,時間的に実現できませんでした.正式の1394.b対応製品が出たときに,あらためて実験できればと考えています.

 

アナライザやML-IIを使ってテストした限り,問題は発見できません.そこで,今度はWDMクライアントドライバを開発し,Windows98上からテストしてみます.

先頭に戻る

WDMクライアントドライバを使ってDVカメラの制御

1394WDMクライアントドライバを使用し,途中にPOFを経由し,アプリケーションからNV-DS7のConfigration ROMを読み出してみます.

SonyのVAIO PCG-505SXへWDMクライアントドライバと,アプリケーションをインストールします.VAIOから光ボードへは通常のメタル1394ケーブルで接続します.光ボードからPOF→リピータ→DVカムコーダ(NV-DS7)の順で接続します.この状態で,DVカムコーダのConfiguration ROMをVAIOから読み出してみましょう.また,AV/Cコマンドを送出し,デジカムの制御も行ってみます.

本節で使用したプログラムは,CQ出版社から発売されている「TECH I Vol. 6 IEEE1394の徹底研究」で使用したWDMドライバなどを,ほぼそのまま使用しています.本節ではプログラムの解説は特に行いません.プログラム自体を詳しく知りたい人は,「TECH I Vol. 6 IEEE1394の徹底研究」を参照してください.

Configuration ROM読み出しの概念図
図 Configuration ROM読み出しの概念図

C++ Builderで開発したプログラムでConfigration ROMを読み出したところです.DVカメラのConfigration ROMが正常に読み出せています.

Configuration ROMを読み出したところ
図 Configuration ROMを読み出す (C++ Builderで開発したプログラム)

今度はVisual C++で開発したプログラムでConfigration ROMを読み出してみます.このプログラムはDLLを経由してWDMクライアントドライバを呼び出します.DVカメラのConfigration ROMが正常に読み出せています.

Configuration ROMを読み出したところ
図 Configuration ROMを読み出す (Visual C++で開発したプログラム)

DLLを開発したため,Visual Basicからも容易にWDMクライアントドライバを呼び出す事ができます.Visual BasicプログラムからDVカメラを制御してみました.

VisualBasicで開発したDVカメラ制御用プログラムのGUI
図 VisualBasicで開発したDVカメラ制御プログラム

このようにPOFケーブル経由であっても,ドライバやアプリケーションにはまったく影響がありません.今年の年末あたりには正式な1394.b対応のチップなども出荷され始めるでしょう.その場合,速度なども対応しているでしょうから,アプリケーションも速度などの制御は変更が必要になります.しかし,基本的には現在のプログラムが,ほぼそのまま使える事になると思います.

先頭に戻る  

WDMクライアントドライバのインストール方法

話が前後しますが,IEEE1394 WDMクライアントドライバのインストール方法を解説します.IEEE1394 WDMクライアントドライバのインストールは少々面倒です.ここでは,実際の手順を解説します.

 
  1. クライアントドライバの実体(dvtest.sys)とinfファイル(dvtest.inf)をフロッピーへコピーする.
  2. IEEE1394端子接続した,DVカメラの電源をオンにする.
  3. コントロールパネルのシステムを起動し,デバイスマネージャを表示する.
  4. 自動で「Microsoft DV Camera and VCR」などがインストールされている.インストールされるドライバは,接続した機器によって異なる.
  5. ドライバのプロパティを開き,ドライバの更新を押して,指示に従いながらフロッピーのドライバをインストールする.
 

実際には,いくつものインストール方法があります.詳しくは過去のインタフェース誌や,「TECH I Vol. 6 IEEE1394の徹底研究」を参照してください.

 

WDMドライバのインストール

では,実際にパソコンへPanasonic社のNV-DS7を接続し,Configuration ROMを読み出したり,DVカメラを制御してみましょう.

DVカメラとパソコンの接続図
図 DVカメラの接続

VAIOを通常にインストールすると,Sonyのデジカム用のドライバがインストールされます.PanasonicのカメラもSonyのカメラと同じデバイスIDですので,Sonyのドライバで問題なくNV-DS7を制御できます.他のデジカムがないので調査できませんでしたが,たぶん,どこのデジカムでも問題なく制御できるのでしょう.開発したドライバをインストールするには「ドライバの更新」を使えば自分のドライバをロードできます.あるいは,デバイスマネージャでインストールされているドライバを削除した後に,Windows\Infへ作成したInfファイルを,Windows\System32\Driversにクライアントドライバをコピーして,オリジナルのInfファイルをバックアップしておけば,自動でインストールされます.なお,クライアントドライバはIEEE1394機器を外すとアンロードされてしまい,デバイスマネージャに現れません.ドライバをデバイスマネージャで削除する場合は,IEEE1394機器も接続し,かつ電源を入れておかなければなりません.インストールに関しては,デバイスIDが分かっていると自動でインストールされますので便利ですが,デバイスIDが分かっていなくてもあまり問題ではありません.「ドライバの更新」を使えばインストールできます.デバイスIDが異なると「互換性がないので..云々」のメッセージが表示されますが,構わずインストールします.

単に接続しただけでは,SonyのDVCRドライバがロードされます.もっとも,これはデジカムに対応したInfファイルが,Windows\Infへ,クライアントドライバがWindows\System32\Driversに存在するからです.使用者の環境によってはWindowsのCD-ROMを要求される場合もあります.最初の接続だと,この時点でバスドライバやポートドライバがロードされる場合もあります(特にPCIボードなどだと).

NV-DS7を接続したときのデバイスマネージャ画面
図 NV-DS7を接続したときのデバイスマネージャ

バスドライバなどのインストール状況は,デバイスマネージャで確認できます.

ここでは,Sony DVCRドライバの代わりに自前のドライバをロードします.ドライバのプロパティから,「ドライバの更新」を使っても構いませんし,あるいは,デバイスマネージャでドライバを削除した後,自分のInfファイルをWindows\Infへ,ドライバをWindows\System32\Driversにコピーし,デジカムの電源をオフ→オンすれば,自動でインストールされます.

 

ここでは,Sony DVCRドライバを削除し,Infファイルと,ドライバを,それぞれWindows\InfとWindows\System32\Driversへコピーした後に電源を,オフ,オンします.

Sony DVCRドライバを削除する際のデバイスマネージャ画面
図 Sony DVCRドライバを削除する

すると,自分で開発した1394WDMクライアントドライバがロードされます.

自分で開発したドライバがロードされたデバイスマネージャ画面
図 自分で開発したドライバがロードされた
先頭に戻る

WDMクライアントドライバを使ってDVカメラの制御・その2

今度は直接SBD-100SMボードをインストールしたパソコンから,DVカムコーダ(NV-DS7)を制御します.

SBD-100SMとDVカムコーダの接続図

まず,Visual C++で開発したアプリケーションを動作させてみます.もし,DVカメラが接続してなかったり,電源が入っていないとエラーメッセージが表示されます.

エラーメッセージ
図 エラー

DVカメラを接続し,電源をオンにするとクライアントドライバがロードされます.

ドライバがロードされているデバイスマネージャ画面
図 デバイスマネージャ

DVカメラを接続し,電源をオンにして「Get C-Rom」を押すと,Configration ROMを読み出すことが出来ます.

SBD-100SMとDVカムコーダの接続図
図 Configration ROMを読み出し

ROMのヘッダー,Bus_Info_Block,およびroot_directoryの一部までダンプします.内容を少しデコードしてみました.ノードのCapabiltyやCRCを分かりやすいように表示します.

「< <」,「> 」,「■」,「>>」,および「Pause」を使えば,AV/Cコマンドを送出して,DVカメラの制御を行うこともできます.IEEE1394デバイスにつながるAV機器はFunction Control Protocol(FCP)を使って制御します.

DVカメラの制御
図 DVカメラの制御

Visual C++で開発したアプリケーションを動作させます.このプログラムはDLL経由でDVカメラを制御します.「Get C-Rom」を押すと,Configration ROMを読み出すことが出来ます.

Configration ROMの読み出し
図 Configration ROMを読み出し

ROMのヘッダー,Bus_Info_Block,およびroot_directoryの一部までダンプします.内容を少しデコードしてみました.ノードのCapabiltyやCRCを分かりやすいように表示します.

「< <」,「> 」,「■」,「>>」,および「Pause」を使えば,AV/Cコマンドを送出して,DVカメラの制御を行うこともできます.

C++ Builderで開発したアプリケーションを動作させます.「Get C-Rom」を押すと,Configration ROMを読み出すことが出来ます.

Configration ROMの読み出し
図 Configration ROMを読み出し

ROMのヘッダー,Bus_Info_Block,およびroot_directoryの一部までダンプします.内容を少しデコードしてみました.ノードのCapabiltyやCRCを分かりやすいように表示します.

「< <」,「> 」,「■」,「>>」,および「Pause」を使えば,AV/Cコマンドを送出して,DVカメラの制御を行うこともできます.

Visual Basicで開発したアプリケーションを動作させます.このプログラムはDLL経由でDVカメラを制御します.Visual Basicからでも簡単に1394を制御することが可能です.

各イメージコントロールを押すと,AV/Cコマンドを送出して,DVカメラの制御を行うことができます.

DVカメラの制御プログラム画面
図 DVカメラの制御

WDMクライアントドライバを使った実験でも,なんらPOFの影響を見いだすことはできませんでした.アプリケーションやクライアントドライバから見る限り,DSポート(メタル)もβポート(POF)も等価に見えます.ソフトウェアから見る限り,違いを意識する必要はありません.ただ,スピードがS100に制限されるのみです.

先頭に戻る

Windows98とIEEE1394

Windowa98におけるIEEE1394デバイスとの通信をDVカメラやなどで試します.プログラムは,制御アプリケーション,DLL,そしてIEEE1394クライアントドライバから成り立ちます.Windows98でIEEE1394デバイスを使うための構成例を以降に示します.

Windows98でIEEE1394デバイスを使うための構成例

アプリケーション

接続された1394デバイスを制御します.クライアントドライバを使って,IEEE1394機器と通信します.

DLL

アプリケーションとドライバ間の橋渡しを行います.無くても構いませんが,DLLを使った方がアプリケーションの開発が楽になります.

クライアントドライバ

IEEE1394ボードから伸びるケーブルに接続された,機器固有の処理を行います.アプリケーションから要求された実際の処理を受け持ちます.IEEE1394の制御自体は,バスドライバを使います.このため,クライアントドライバ,IEEE1394のプロトコル,例えばAsynchronous Transaction等を処理する必要はありません.

クラスドライバ(バスドライバ)

Windows 98は,標準で1394バスドライバ(1394BUS.SYS)を提供します.このバスドライバがPCのIEEE1394ボードを管理します.つまり,ドライバを作っても,勝手にIEEE1394レジスタを操作できるわけではありません.必ず,バスドライバを経由して処理しなければなりません.IEEE1394ボードは,既にWindowsのリソースとして管理されているからです.

ポートドライバ

ポートドライバは,PCに搭載された1394インターフェースボードに依存する処理をします.基本的には,ハードウェア開発元が供給します.このドライバで,ボードに依存する部分を吸収します.

先頭に戻る

開発したDLL関数の説明

開発したDLLがエクスポートしている関数の説明を行います.

番号 関数名 説明
1 writeData データをIEEE1394機器へ書き込みます.
2 readData データをIEEE1394機器から読み込みます.
3 avcPlay DVカメラなどを再生モードに設定します.
4 avcStop DVカメラなどを停止します.
5 avcFrewind DVカメラなどを再生しながら巻き戻しします.
6 avcRewind DVカメラなどを巻き戻します.
7 avcFf DVカメラなどを再生しながら早送りします.
8 avcFreverse DVカメラなどを早送りします.
9 avcPause DVカメラなどを一時停止します.
図 NV-DS7を接続したときのデバイスマネージャ

動作概要

DVカメラとの通信をスタック上で説明します.DLLを省いた形で示します.

DVカメラとの通信

1-1 IEEE1394データ書き込みAPI

IEEE1394機器で使用しているIEEE1212の空間へ書き込みを行います.

書式

LONG writeData( USHORT Off_High, ULONG Off_Low, UCHAR* data, int length ) ;
引数 説明
Off_High IEEE1212アドレスの上位2バイト
Off_Low IEEE1212アドレスの下位4バイト
data 書き込むデータのポインタ
length 書き込むデータの長さ

戻り値

正常なら0が返ってきます.エラーが起きると以下に示す値が返ってきます.

戻り値 説明
DLL_OPEN_ERROR WDMドライバのエラーに失敗した. 原因としては,WDMドライバをインストールしていない. ターゲットIEEE1394機器の電源が入っていない. などが考えられる.
DLL_READ_ERROR IEEE1394機器からデータを読み出せない.
DLL_WRITE_ERROR IEEE1394機器へデータを書き込めない.
DLL_AVC_ERROR AV/Cコマンドでエラーが起きた.
DLL_LENGTH_ERROR データの長さが異常.データ長は4バイト単位,かつ1024以下でなければならない.

使用例

rCode = return writeData( 0xFFFF, 0xF0000B00, outBuffer, 4 ) ;
 

1-2 IEEE1394データ読み込みAPI

IEEE1394機器で使用しているIEEE1212の空間から読み込みます.

書式

LONG readData( USHORT Off_High, ULONG Off_Low, UCHAR* data, int length ) ;
引数 説明
Off_High IEEE1212アドレスの上位2バイト
Off_Low IEEE1212アドレスの下位4バイト
data 読み込むデータのポインタ
length 読み込むデータの長さ

戻り値

正常なら0が返ってきます.エラーが起きた時のコードは1-1を参照のこと.

使用例

rCode = readData( 0xFFFF, 0xF0000400, inBuffer, READ_LENGTH ) ;

1-3 再生API

DVカメラなどに,再生コマンドを送ります.

書式

LONG avcPlay( void ) ;

戻り値

正常なら0が返ってきます.エラーが起きた時のコードは1-1を参照のこと.

使用例

rCode = avcPlay() ;
 

1-4 停止API

DVカメラなどに,停止コマンドを送ります.

書式

LONG avcStop( void ) ;

戻り値

正常なら0が返ってきます.エラーが起きた時のコードは1-1を参照のこと.

使用例

rCode = avcStop() ;
 

1-5 再生しながら巻き戻しAPI

DVカメラなどに,再生しながら巻き戻すコマンドを送ります.

書式

LONG avcFrewind( void ) ;

戻り値

正常なら0が返ってきます.エラーが起きた時のコードは1-1を参照のこと.

使用例

rCode = avcFrewind() ;

1-6 巻き戻しAPI

DVカメラなどに,巻き戻しコマンドを送ります.

書式

LONG avcRewind( void ) ;

戻り値

正常なら0が返ってきます.エラーが起きた時のコードは1-1を参照のこと.

使用例

rCode = avcRewind() ;
 

1-7 再生しながら早送りAPI

DVカメラなどに,再生しながら早送りするコマンドを送ります.

書式

LONG avcFf( void ) ;

戻り値

正常なら0が返ってきます.エラーが起きた時のコードは1-1を参照のこと.

使用例

rCode = avcFf() ;

1-8 早送りAPI

IEEE1394機器で使用しているIEEE1212の空間へ書き込みを行います.

書式

LONG avcFreverse( void ) ;

戻り値

正常なら0が返ってきます.エラーが起きた時のコードは1-1を参照のこと.

使用例

rCode = avcFreverse() ;
 

1-9 一時停止API

DVカメラなどに,一時停止コマンドを送ります.

書式

LONG avcPause( void ) ;

戻り値

正常なら0が返ってきます.エラーが起きた時のコードは1-1を参照のこと.

使用例

rCode = avcPause() ;
先頭に戻る