アプリケーション構成ファイル(TPIPAquarium.exe.config)

概要

ここではAquariumのアプリケーション構成ファイルの構造について述べる.


構造

標準的な.NETのアプリケーション構成ファイルであり,次の3つの構成セクションを含んでいる.

  • microsoft.scripting
    DLRに関する設定を保持する構成セクション. 現在の所,Aquariumは標準のDLRの設定に依存しているため,変更すべきでない.
  • tpip
    TPIPNetに関する設定を保持する構成セクション. TPIPボードの接続の設定などを保持する.
  • aquarium
    Aquarium特有の設定を保持する構成セクション.

次の節からtpipとaquariumの構成セクションに関する詳細を述べる.


tpip構成セクション

構造

tpip構成セクションは,XML Schema TPIPNet.xsdにより定義される.

以下にtpip構成セクションの概略図を示す.

<tpip>
  <library baseDirectory="..." />
  <connections default="...">
    <connection name="..." communicationMode="...">
      <driverProperties>
        <property name="..." value="..." />
        ...
      </driverProperties>
    </connection>
    ...
  </connections>
</tpip>

前述の通り,tpip構成セクションにはTPIPNetに関する設定が含まれている. 次に示す要素が含まれている.

  • library
    TPIPLibraryに関する設定を保持する.次の属性値を持つ.
    • baseDirectory
      TPIPLibraryの位置を絶対パスまたは,作業ディレクトリからの相対パスで指定する.
  • connections
    TPIPボードとの接続の設定のコレクションを保持する.次の属性値を持つ.
    • default
      標準で用いる接続設定の名前.各connection要素のname属性のうちのいずれかでなければならない.
    また,次に示すconnection要素を0個以上の任意の個数含むことが出来る.
  • connection
    TPIPボードとの接続の設定を保持する.次の属性値を持つ.
    • name
      接続設定の名前.
    • driver
      この接続設定で用いる接続ドライバ名.現在のところ,Null,UART,Builtinの3種類を用いることが出来る.
    • communicationMode
      TPIPの通信モード.以下の内のいずれかである.
      意味
      None一切の通信を行わない.
      Video動画転送のみを用いる.
      Controlコントロール通信のみを用いる.
      RSIOリモートシリアル通信のみを用いる.
      VideoAndControl動画転送とコントロール通信を用いる.
      VideoAndRSIO動画転送とリモートシリアル通信を用いる.
    また,次に示すdriverProperties要素を必ず一つだけ含む.
  • driverProperties
    ドライバの構成に必要な設定情報を保持する. ドライバの設定の詳細は,次の節で詳しく説明する.
    次に示すproperty要素を0個以上の任意の個数含む.
  • property
    ドライバの設定情報を表す.次の属性値を持つ.
    • name
      設定の名前
    • value
      設定の値

接続ドライバの種類

TPIPNetにはTPIPボードに接続するための標準的なドライバの他に, デバッグ用として便利ないくつかの接続ドライバが含まれている.

以下に接続ドライバの詳細な説明を示した.

  • Null

    通信を一切なにも行わないドライバ.入力周りの構築など,通信が必要ない場合に用いると便利である.

    他にも,画像を扱うVideoDataクラスを指定する機能があり,これとFileVideoDataクラスを組み合わせることにより, 指定したJPEG画像をカメラ画像として取り扱うことが出来る. これは,OpenCVなどによるフィルタのテストを行う際に用いると便利である.

    このドライバには次の設定項目がある.

    • videoDataType
      実際の動画転送を行うITPIPVideoDataを実装する型の名前を指定する. なにも行わない場合居は,"TPIPAquarium.Implementation.NullVideoData, TPIPAquarium"にしておくとよい. 指定された型が,TPIPConnectionConfigurationElementを受け取るコンストラクタを持っている場合は, この接続に指定されたドライバの設定情報が渡される.
  • Builtin

    TPIPボードと,TPIPLibraryを用いて通信を行うドライバ.次の設定項目がある.

    • address
      通信するTPIPボードのIPアドレス
    • rsioPort
      リモートシリアル通信に用いるポートの番号
    • rsioSpeed
      リモートシリアル通信のボーレート
  • UART

    PCのシリアルポートを用いて,リモートシリアル通信を模擬するドライバ. リモートシリアル通信を用いる回路をテストする際に便利である.

    このドライバには次の設定項目がある.

    • portName
      リモートシリアル通信の模擬に用いるシリアルポートの名称. .NET FrameworkのSerialPortクラスの制限により,COMxという名前のポートしか用いることが出来ない.
    • timeout
      通信がタイムアウトするまでの時間をミリ秒単位で指定する. 0を指定すると,無制限となる.
    • rsioSpeed
      シリアル通信のボーレートを指定する.

aquarium構成セクション

構造

aquarium構成セクションは,XML Schema TPIPAquarium.xsdにより定義される.

以下にaquarium構成セクションの概略図を示した.

  <aquarium>
    <assemblies>
      <assembly load="..." />
      ...
    </assemblies>
    <opencv use="..." baseDirectory="..."/>
    <sdl baseDirectory="..." />
    <screen width="..." />
    <control inputMap="..." />
    <videoFilters>
      <videoFilter load="..." />
      ...
    </videoFilters>
    <scripts scriptPath="...">
      <script name="..." />
    </scripts>
    <i2c>
      <deviceFactory>
        <device name="..." />
        ...
      </deviceFactory>
      <devices>
        <device name="...">
          <properties>
            <add name="..." />
            ...
          </properties>
        </device>
        ...
      </devices>
    </i2c>
  </aquarium>

aquarium構成セクションには,以下の要素が含まれている.

  • assemblies
    追加で読み込むアセンブリに関する情報のコレクションを保持する. 次に示すassembly要素を0個以上の任意の個数含むことが出来る.
    • assembly
      追加で読み込むアセンブリに関する情報を保持する.次の属性値を持つ.
      • load
        このアセンブリを読み込むかどうかを指定する. 読み込む場合はtrue,読み込まない場合はfalseを指定する.
      • name
        読み込むアセンブリ名を指定する.
    例:DRP.TPIPAquariumアセンブリを起動時に読み込む
    <assemblies>
    <assembly load="true" name="DRP.TPIPAquarium" />
    </assemblies>
  • openCV
    OpenCVに関する設定を保持する.次の属性値を持つ.
    • use
      OpenCVを読み込むかどうかを指定する.読み込む場合はtrue,読み込まない場合はfalseを指定する.
    • baseDirectory
      OpenCVが存在するディレクトリのパスを指定する.
    例:..\lib\OpenCVからOpenCVを読み込む.
    <opencv use="true" baseDirectory="..\lib\OpenCV" />
  • sdl
    SDLに関する設定を保持する.次の属性値を持つ.
    • baseDirectory
      SDLが存在するディレクトリのパスを指定する.
    例:..\lib\SDL\x86からOpenCVを読み込む.
    <sdl baseDirectory="..\lib\SDL\x86" />
  • screen
    画面に関する設定を保持する.次の属性値を持つ.
    • width
      画面の幅をピクセル単位で指定する.
    • height
      画面の高さをピクセル単位で指定する.
    • depth
      画面の色深度をビット単位で指定する.0,8,16,24,32のいずれかの値でなければならない. 0の場合はウィンドウモードで動作するが,それ以外の場合はフルスクリーンモードとなる.
    • fps
      最大フレームレートを指定する.あくまで最大であって,常にこのフレームレートを保証するものではない.
    • fontDef

      文字列の描画に用いるフォントの定義ファイルを指定する. 'MEM:'接頭辞を用いることにより,ファイルではなく,その後に続く文字列をフォント定義として用いることが出来る.

      フォント定義ファイルの形式は,以下のようなものである.

      <fontfile>,<fontsize>,<index>,<ttc-index>
      ...
      たとえば,
      msgothic.ttc,24,0,0
      msgothic.ttc,18,1,2
      jvgasys.fon,16,0,0
      というファイルを読み込めば,
      • フォント番号0番は,MS ゴシックで24ptの大きさのフォント
      • フォント番号1番は,MS UI Gothicで18ptの大きさのフォント
      • フォント番号2番は,System 標準で16ptの大きさのフォント
      となる.
    例:画面を800x600ピクセルのウィンドウモード,フレームレートを最大24FPS,フォントをMS ゴシック,18ptに設定.
    <screen width="800" height="600" depth="0" fps="24" fontDef="MEM:msgothic.ttc,18,0,0" />
  • control
    入力に関する設定を保持する.つぎの属性値を持つ.
    • inputMap
      入力デバイスのボタンや軸のマッピングを保持するファイルを指定する. 詳細はinputMap.xmlの章で説明する.
    例:inputMap.xmlからマッピングの設定を読み込む
    <control inputMap="inputMap.xml" />
  • videoFilters
    ビデオフィルタに関する設定のコレクションを保持する. 次に説明するvideoFilter要素を0個以上の任意の個数含むことが出来る.
    • videoFilter
      ビデオフィルタに関する設定を保持する.次の属性値を持つ.
      • load
        この要素で表されるビデオフィルタを読み込むかどうかを指定する. 読み込む場合はtrue,読み込まない場合はfalseを指定する.
      • type
        ビデオフィルタの型を指定する.
      • enabled
        このビデオフィルタを起動時に有効にするかどうかを指定する. 起動時に有効にする場合はtrue,無効にする場合はfalse.
    例:DRP.TPIPAquarium.CameraCalibratorを起動時に読み込む.ただし,起動時には無効にしておく.
    <videoFilters>
    <videoFilter load="true" type="DRP.TPIPAquarium.CameraCalibrator" enabled="false" />
    </videoFilters>
  • scripts
    スクリプトに関する設定を保持する.次の属性値を持つ.
    • scriptPath
      スクリプトの格納ディレクトリのパスを指定する.
    • libraryPath
      スクリプトのライブラリ格納ディレクトリのパスを指定する.
    次に説明するscript要素を0個以上の任意の個数含むことが出来る.
    • script
      起動時に読み込むスクリプトを指定する.次の属性値を持つ.
      • name
        読み込むスクリプトの名前を指定する.
    例:スクリプトの格納ディレクトリを"..\scripts",ライブラリ格納ディレクトリを"..\scripts\lib"に設定し, 起動時にmain.pyを読み込む
    <scripts scriptPath="..\scripts" libraryPath="..\scripts\lib" >
    <script name="main.py" />
    </scripts>
  • i2c
    I2Cに関する設定を保持する.次に説明するdeviceFactory要素,devices要素を一つずつ含んでいる必要がある.
    • deviceFactory
      I2Cデバイスファクトリに関する設定を保持する.以下に説明するdevice要素を0個以上の任意の個数含むことが出来る.
      • device
        デバイスファクトリに追加するデバイスの種類に関する設定を保持する.次の属性値を持つ.
        • name
          デバイスタイプの名前を指定する.
        • type
          デバイスの型を指定する.この型はI2CDeviceBaseのサブクラスで無ければならない.
      例:DRP.TPIPAquarium.Devices.MotorDriverをMotorDriverという名前でファクトリに登録する. 起動時にmain.pyを読み込む
      <deviceFactory>
      <device name="MotorDriver" type="DRP.TPIPAquarium.Devices.MotorDriver"/>
      </deviceFactory>
    • devices
      使用するI2Cデバイスのコレクションを保持する.以下に説明するdevice要素を0個以上の任意の個数含むことが出来る.
      • device
        使用するデバイスの設定を保持する.次の属性値を含む.
        • name
          デバイスの名前を指定する.
        • driver
          デバイスの制御に用いるドライバを指定する.deviceFactory要素内のdevice要素に,この属性で指定した名前を持つものがなければならない.
        また,デバイスのその他の設定を保持するproperties要素を必ず1つ含む. properties要素は0個以上の任意の個数のadd要素を含むことができる. 一つのadd要素は設定の名称を表すname属性と,設定の値を表すvalue属性を持つ.
      例:"ArmYaw"という名前のアドレス0x40のMotorDriverを追加する. MotorDriverに追加パラメータとしてswapDirection=trueを渡す.
      <devices>
      <device name="ArmYaw" driver="MotorDriver">
      <properties>
      <add name="swapDirection" value="true" />
      </properties>
      </device>
      </devices>
ċ
Robo Kirarin,
2009/06/23 15:26
ċ
Robo Kirarin,
2009/06/23 15:26
Comments