(CQ出版社2002年3月号掲載の抜粋です)
光ポート付きIEEE1394 OHCI対応の光ボード
光ポート付きのIEEE1394 OHCI対応の光ボードを紹介します.本当に長い距離が大丈夫なのか,あるいはアナライザで観察すると,どのようなノードとして観測されるか調べてみます.また,以前作ったWDMドライバで動作するか調べます.
目次
- P1394b概要 →
- 光ポート付きIEEE1394ボードの紹介 →
- IEEE1394 SMIコネクタ採用の光リピータの紹介 →
- 光ポート付きIEEE1394ボードのインストール →
- いろいろな機器を接続しトポロジの変化を観測 →
- ML-IIを使って光ポート経由でDVカメラを制御 →
- 20mのPOF*1ケーブルで長距離実験(振ってみる,折ってみる) →
- WDMクライアントドライバを使ってDVカメラの制御 →
- WDMクライアントドライバのインストール方法 →
- WDMクライアントドライバを使ってDVカメラの制御・その2 →
- Windows98とIEEE1394 →
- 開発したDLL関数の説明 →
*1:POF: Plastic Optical Fiber
石英ファイバはインフラ用のファイバとして多く利用されます.一方POFは民生用ファイバといわれています.
P1394bの概要
1394の仕様は,1995年にIEEE1394標準(IEEE1394-1995)として認められました.さらに,このインタフェース規格の補完・拡張 規格である1394aが2000年,1394a-2000として採択されました.現在では.数多くの1394インタフェースがパソコンを始め.ディジタルカムコーダやBSディジタル機器,ハードディスク等のストレージ機器,さらには車などの移動体,および工場などで用いられるFAネットワークにも用いられようとしています.
IEEE 1394a-2000の特徴を以降に述べます.
- 4ピンコネクタの追加
- バスリセット動作の安定化
- ショートバスリセット(バスリセットの時間を短くする機能)の追加
- PHYの低消費電力化(サスペンド状態などの追加)
既に,IEEE1394-1995や1394a-2000については,数回に渡って本誌で解説や実験の紹介を行っています.IEEE1394自体の説明については割愛します.詳しく知りたい方は,本誌のバックナンバーを参照するか,CQ出版社株式会社から発売されている「IEEE1394の徹底研究」などを参照してください.
P1394bでは,高速化と長距離化などがはかられます.1394bで追加される主な機能は次の通りです.
- 高速化(800Mbps〜3.2Gbps)
- 長距離化(〜100m)
- 伝送媒体の追加(石英ファイバ,プラスチックファイバ,UTPなど)
- 光ファイバのための仕様の追加 (初期化の方式,符号方式など)
光ポート付きIEEE1394ボードの紹介
使用したボードは,三菱レイヨン株式会社のSBD-100SMです.1394.a対応のS400ポートが2つ,P1394b準拠のポートが1ポート付いています.

光ポート | メタルポート | |
---|---|---|
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の外観を示します.

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

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

μPD72880は,P1394a draft 2.0準拠のDSポートを2ポート,およびP1394b草案準拠のBetaポートを1ポート備えた物理層LSIです.
μPD72880の特徴
- バスリセット命令
- 長距離アービトレーション・ステート・マシン
- 最大速度の切り替え機能(S100/S200/S400)
- 24.576 MHz水晶振動子によるクロック,および内蔵PLLによる393.216 MHz/491.52 MHzの逓倍クロックを使用
- Linkコントローラ・インタフェースへの電気的アイソレーション・インタフェース
- 50 Mbpsの2/4/8並列ラインを介してのLinkレイヤ・コントローラへのデータ・インタフェース
- Linkインタフェースの電源モニタおよびPHY/Linkインタフェース・リセット/ディスエーブル機能をサポート
- 電源投入時のポート・ディスエーブル/イネーブル切り替え制御端子
- アナログ/ディジタル電源,GND分離
- 3.3 V単一電源
DSポート
- P1394a draft 2.0準拠
- データ・レート:393.216/196.608/98.304 Mbps
- ライン状態のモニタ機能
- 受信データのローカル・クロックへの再同期機能
- システム・パワー・マネジメント用のノード・パワー・クラス情報のシグナリング機能
- ケーブル・パワーのモニタ機能
- ケーブル・バイアスおよびドライバ終端電圧供給機能
Betaポート
- P1394b 草案準拠
- スクランブル・デスクランブル
- 8B/10B伝送路符号化
- ポート速度>パケット速度の場合のバイト・パディング
- 同期コードK28.5によるシンボル同期の確立
- スクランブラ・ディスエーブル・モード対応
- Tone信号による速度調停
- ボー・レート:122.44/245.76/491.52 Mbps
- 反射信号検出機能(光ワイヤレス用)
以下にブロック図を示します.

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

TSB12LV23は,市販のIEEE1394 PCIボードなどでもよく使われているIEEE1394.a準拠のオープン・ホスト・コントローラ・インタフェース(OHCI),パソコン用リンク層LSIです.PCIだけでなく組み込みにも使われています.現在では組み込みでもOHCIやPCIを使う機会は増えました.
PHY,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 但し、結露無きこと (動作および保管時) |


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






先頭に戻る
光ポート付きIEEE1394ボードのインストール
まず,パソコンの空きPCIスロットにIEEE1394ボードを挿して,電源を入れてください


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

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


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


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


光ケーブルです.

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


さらに,SBD-100SMの1394.aポートへ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シリーズは,有限会社スペースソフト(http://www.spacesoft.co.jp/)と協力会社の共同開発製品です.
ML-IIを使って光ポート経由でDVカメラを制御
この状態で,ML-IIからAV/CコマンドをDVカムコーダへ送って,カメラを制御してみます.当然,途中にPOFや光リピータを経由しますので,POFの動作実験になります.

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

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

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

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

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

読み出したGUIDをアナライザが表示したGUIDと比較してみると,一緒になっています.正常に処理されたようです.GUIDを読み出すのにRead BlocK Quadletトランザクションを使ってみましたが,ボードからは反応はありませんでした.これは,Windows98のドライバが対応していないためと思われます.そこで,Read Quadletトランザクションを2回送り,GUIDを読み出しました.
注:付属したPOFケーブル長が5mしかなかったため,20mのテストを行うことはできませんでした.
先頭に戻る20mのPOFケーブルで長距離実験
標準で付属してきたPOFケーブル長は5mでした.これではせっかくのβポートが宝の持ち腐れです.そこで,特別にお願いして20mのPOFケーブルも借用しました.振動による損失(反射)や曲げによる損失で,どのような影響があるかも簡単に実験します.ただ,厳密な実験を行うには,高度な知識と機材が必要です.本稿では単純に手でケーブルを振ったり,POFの曲げ限界まで曲げた場合のアプリケーションへの影響を探る程度にとどめます.曲げ限界については,破損しても構わないケーブルも借用できました.機材を貸与してくださった,三菱レイヨン株式会社様に感謝いたします.


長距離接続と,振動による影響を同時に実験してみました.20mという長さは,想像以上に長く,これだけあれば大抵の家庭内の配線は間に合うのではないだろうかと思いました.もっとも最近は住宅も広くなっていますし,壁に埋め込むことを考えると,50mや100mが要求されるのも分からないではありません.
図に示す結線を行い,まずバスリセットをML-IIからかけてみます.6個のセルフIDが見えます.アナライザがコマンダも含んでいますので,これで正常です.

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

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

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

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


直径50mmの円筒は決して細くはないのですが,POFケーブルを巻き付けるときに抵抗を感じます.やはりメタルケーブルと比べると, POFは曲げにくいという印象を受けます.
図に示す結線を行い,まずバスリセットをML-IIからかけてみます.6個のセルフIDが見えます.アナライザがコマンダも含んでいますので,これで正常です.

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

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

Asynchronousパケットだけでなく,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の徹底研究」を参照してください.

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

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

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

このようにPOFケーブル経由であっても,ドライバやアプリケーションにはまったく影響がありません.今年の年末あたりには正式な1394.b対応のチップなども出荷され始めるでしょう.その場合,速度なども対応しているでしょうから,アプリケーションも速度などの制御は変更が必要になります.しかし,基本的には現在のプログラムが,ほぼそのまま使える事になると思います.
先頭に戻るWDMクライアントドライバのインストール方法
話が前後しますが,IEEE1394 WDMクライアントドライバのインストール方法を解説します.IEEE1394 WDMクライアントドライバのインストールは少々面倒です.ここでは,実際の手順を解説します.
- クライアントドライバの実体(dvtest.sys)とinfファイル(dvtest.inf)をフロッピーへコピーする.
- IEEE1394端子接続した,DVカメラの電源をオンにする.
- コントロールパネルのシステムを起動し,デバイスマネージャを表示する.
- 自動で「Microsoft DV Camera and VCR」などがインストールされている.インストールされるドライバは,接続した機器によって異なる.
- ドライバのプロパティを開き,ドライバの更新を押して,指示に従いながらフロッピーのドライバをインストールする.
実際には,いくつものインストール方法があります.詳しくは過去のインタフェース誌や,「TECH I Vol. 6 IEEE1394の徹底研究」を参照してください.
WDMドライバのインストール
では,実際にパソコンへPanasonic社のNV-DS7を接続し,Configuration ROMを読み出したり,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ボードなどだと).

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

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

WDMクライアントドライバを使ってDVカメラの制御・その2
今度は直接SBD-100SMボードをインストールしたパソコンから,DVカムコーダ(NV-DS7)を制御します.

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

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

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

ROMのヘッダー,Bus_Info_Block,およびroot_directoryの一部までダンプします.内容を少しデコードしてみました.ノードのCapabiltyやCRCを分かりやすいように表示します.
「< <」,「> 」,「■」,「>>」,および「Pause」を使えば,AV/Cコマンドを送出して,DVカメラの制御を行うこともできます.IEEE1394デバイスにつながるAV機器はFunction Control Protocol(FCP)を使って制御します.

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

ROMのヘッダー,Bus_Info_Block,およびroot_directoryの一部までダンプします.内容を少しデコードしてみました.ノードのCapabiltyやCRCを分かりやすいように表示します.
「< <」,「> 」,「■」,「>>」,および「Pause」を使えば,AV/Cコマンドを送出して,DVカメラの制御を行うこともできます.
C++ Builderで開発したアプリケーションを動作させます.「Get C-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カメラの制御を行うことができます.

WDMクライアントドライバを使った実験でも,なんらPOFの影響を見いだすことはできませんでした.アプリケーションやクライアントドライバから見る限り,DSポート(メタル)もβポート(POF)も等価に見えます.ソフトウェアから見る限り,違いを意識する必要はありません.ただ,スピードがS100に制限されるのみです.
先頭に戻るWindows98とIEEE1394
Windowa98におけるIEEE1394デバイスとの通信をDVカメラやなどで試します.プログラムは,制御アプリケーション,DLL,そして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カメラなどを一時停止します. |
動作概要
DVカメラとの通信をスタック上で説明します.DLLを省いた形で示します.

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() ;先頭に戻る