OS X用GigE Visionカメラドライバ - その16 [OS X用GigE Vision]
GEN<i>CAM規格の抄訳、前回からの続き。XMLファイルにはどんなふうに何が書いてあるか、というあたり。粛々と進めよう...
図にはふたつのノードがある。Rootノードはノードグラフをわたる出発点であり、Deviceノードはトランスポートレイヤへの接続を表している。
図中のGainノードはIntRegタイプのひとつでレジスタから整数値を抽出する。Rootノードから見ればカメラの機能のひとつである。従ってRootノードはGainノードを参照するpFeatureと言う名のリンクを含んでいる。Gainレジスタを読んだり書いたりするためにはGainノードはカメラのポートにアクセスする必要が有り、従ってDeviceノードへのリンクを含んでいる。このリンクはpPortと言う名前でDeviceノードへの参照している。
Gainノードは2バイトのビッグエンディアン形式の符号なし整数を抽出するために必要な情報をすべて含んでいる。完全なカメラ記述ファイルは以下のようなものである。
<RegisterDescription>ノードはカメラのすべてのノードを内包する一番外側のエレメントである。カメラはModelNameとVenderNameアトリビュートで認識される(この例ではExample01モデルのTestベンダ)。他のアトリビュートはあとで説明する。
<RegisterDescription>エレメントの中で、ノードはフラットに並べられている。それぞれのノードは一意のNameアトリビュートを持っていて、他の名前を含んだpRoleという名前のサブエレメントにリンクされることもある。
それぞれのノードはオプションで短い説明のための<ToolTip>エレメントを持っている。GainノードはそのIntRegタイプに依存する追加のエレメントがあって、それらは例えばレジスタのAddressやLengthを伝えている。
典型的には、実装ではノードごとにひとつのソフトウェアを生成して、XMLファイルに記述された論理接続に従ってそれらをリンクすることになるだろう2。ノードは一意の名前を手がかりに他のノードを探す。またそのためにRootノードからはじめてノードグラフをたどる。ノードへのポインタを手にしたユーザはそのノードオブジェクトからプログラミングインターフェイスにアクセスすることができる。
XMLファイルのシンタクスは、ShcemaLocationアトリビュートで与えられるXML スキーマで定義されている。スキーマは規格の一部である。そのドキュメントはGenICamのアイデアと全体の構造を説明している。スキーマは、それに埋め込まれた参照ドキュメントとともに形式的な詳細を記述している。疑義がある場合、スキーマのほうがこの解説より優先する。
ファイルロケーション
2.2 カメラ記述ファイルの基本的な構造
カメラ記述ファイルはXMLファイルの形式で記述される。それはそれぞれのノードはタイプと一意な名前を持っている。ノードはお互いにリンクし合って、それぞれの接続は特定の役割を果たす。図-5にグラフィカルに記述したシンプルな例を示す。図にはふたつのノードがある。Rootノードはノードグラフをわたる出発点であり、Deviceノードはトランスポートレイヤへの接続を表している。
図中のGainノードはIntRegタイプのひとつでレジスタから整数値を抽出する。Rootノードから見ればカメラの機能のひとつである。従ってRootノードはGainノードを参照するpFeatureと言う名のリンクを含んでいる。Gainレジスタを読んだり書いたりするためにはGainノードはカメラのポートにアクセスする必要が有り、従ってDeviceノードへのリンクを含んでいる。このリンクはpPortと言う名前でDeviceノードへの参照している。
Gainノードは2バイトのビッグエンディアン形式の符号なし整数を抽出するために必要な情報をすべて含んでいる。完全なカメラ記述ファイルは以下のようなものである。
<?xml version="1.0" encoding="utf-8"?> <RegisterDescription ModelName="Example01" VendorName="Test" ToolTip="Example 01 from the GenApi standard" StandardNameSpace="None" SchemaMajorVersion="1" SchemaMinorVersion="1" SchemaSubMinorVersion="0" MajorVersion="1" MinorVersion="0" SubMinorVersion="0" ProductGuid="1F3C6A72-7842-4edd-9130-E2E90A2058BA" VersionGuid="7645D2A1-A41E-4ac6-B486-1531FB7BECE6" xmlns="http://www.genicam.org/GenApi/Version_1_1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.genicam.org/GenApi/Version_1_1 http://www.genicam.org/GenApi/GenApiSchema_Version_1_1.xsd"> <Category Name="Root"> <ToolTip>Entry for traversing the node graph</ToolTip> <pFeature>Gain</pFeature> </Category> <IntReg Name="Gain"> <ToolTip>Access node for the camera's Gain feature</ToolTip> <Address>0x0815</Address> <Length>2</Length> <AccessMode>RW</AccessMode> <pPort>Device</pPort> <Sign>Unsigned</Sign> <Endianess>BigEndian</Endianess> </IntReg> <Port Name="Device"> <ToolTip> Port node giving access to the camera</ToolTip> </Port> </RegisterDescription>ここにある<?xml>ノードはこのファイルのエンコーディングのヒントを与える処理エレメントで、これはいつも同じである。
<RegisterDescription>ノードはカメラのすべてのノードを内包する一番外側のエレメントである。カメラはModelNameとVenderNameアトリビュートで認識される(この例ではExample01モデルのTestベンダ)。他のアトリビュートはあとで説明する。
<RegisterDescription>エレメントの中で、ノードはフラットに並べられている。それぞれのノードは一意のNameアトリビュートを持っていて、他の名前を含んだpRoleという名前のサブエレメントにリンクされることもある。
それぞれのノードはオプションで短い説明のための<ToolTip>エレメントを持っている。GainノードはそのIntRegタイプに依存する追加のエレメントがあって、それらは例えばレジスタのAddressやLengthを伝えている。
典型的には、実装ではノードごとにひとつのソフトウェアを生成して、XMLファイルに記述された論理接続に従ってそれらをリンクすることになるだろう2。ノードは一意の名前を手がかりに他のノードを探す。またそのためにRootノードからはじめてノードグラフをたどる。ノードへのポインタを手にしたユーザはそのノードオブジェクトからプログラミングインターフェイスにアクセスすることができる。
XMLファイルのシンタクスは、ShcemaLocationアトリビュートで与えられるXML スキーマで定義されている。スキーマは規格の一部である。そのドキュメントはGenICamのアイデアと全体の構造を説明している。スキーマは、それに埋め込まれた参照ドキュメントとともに形式的な詳細を記述している。疑義がある場合、スキーマのほうがこの解説より優先する。
ファイルロケーション
http://www.genicam.org/GenApi/GenApiSchema_Version_1_1.xsdはカメラ設定ファイルを強制する内容をあらわしているが、実行時にはオーバーライドできる。
2015-01-06 22:35
nice!(0)
コメント(0)
トラックバック(0)
コメント 0