ROOM

ROOM は,UNIX(SVR4) でデータ収集ハードウェアを利用するためのクラスライブラリです. オブジェクト指向による直観的なライブラリ構成と,ハードウェアアクセスのカプセル化によるプラットフォーム独立性が大きな特長です.

作成には充分注意しておりますが,間違い等が含まれている可能性があります. 動作の保証はできませんので,御了承下さい.

ROOM は,分散型汎用オンライン環境の構築を目指す KiNOKO プロジェクトの一部として作成されました. KiNOKO プロジェクトの詳細については,KiNOKO ホームページ を御覧下さい.


動作環境

現在 ROOM から利用できるハードウェア(コントローラ)および動作 OS は以下のとおりです.

CPU OS VME controller CAMAC controller
Intel x86 Linux 2.0/2.2/2.4 Bit3 617/618/620 -
Intel x86 Linux 2.0/2.2/2.4 - 東陽テクニカ CC/7x00
FORCE CPU-xV Solaris 2.5/2.6 FORCE FGA-5x00 Kinetic 2917-3922

動作確認を行ったコンパイラは以下のとおりです.多分,他のコンパイラでも動作すると思います.

OS コンパイラ 備考
Linux 2.0/2.2/2.4 gcc 2.8.1/2.95
gcc 3.2
Intel C++ Compiler 5.0.1
-
Solaris 2.5/2.6 for SPARC Sun WorkShop 4.2
gcc 2.8.1
WorkShop 4.2 は 別途 STL ライブラリが必要

ダウンロードとフィードバック

KiNOKO Version 1.0 の公開にともない,ROOM ライブラリの単体配布は終了しました. 最新版の ROOM ライブラリは KiNOKO パッケージの kinoko/src/kernel/lib-common/room に含まれています.KiNOKO パッケージは,以下の KiNOKO ホームページよりダウンロードできます.

インストール方法

  1. まず,必要なデバイスドライバをインストールしておいてください.各デバイスごとの必要なドライバは以下のとおりです.
    デバイス ドライバ 開発元
    SBS Technologies (Bit3)
    Model 617/618/620
    vmedrv KiNOKO プロジェクト
    東陽テクニカ
    CC/7x00
    camdrv KiNOKO プロジェクト
    FORCE Computers
    FGA-5x00
    FRCvme (CPU-xV に付属) FORCE Computers
    Kinetic Systems
    2917-3922
    KEK CCドライバ KEK オンライン

  2. ROOM パッケージのディレクトリに移り,使用するハードウエアにあわせてソースを configure をします.以下のように,--with オプションで使用するドライバとドライバのパスを指定してください.

    % cd kinoko/src/kernel/lib-common/room
    % ./configure --with-ドライバ名=ドライバパス (以下参照)
    
    --with に渡せるドライバ名は以下のようになっています.
    Bit3 617/618/620 (vmedrv) --with-vmedrv=/usr/local/kinoko/drv/vmedrv
    東陽 CC/7x00 (camdrv) --with-camdrv=/usr/local/kinoko/drv/camdrv
    FORCE FGA-5x00 (FRCvme) --with-frcvme=/opt/FRCvme
    Kinetic 2917-3922 (KEK CC) --with-kekcamlib=/opt/cc
    ドライバパスは自分の環境に合わせて,適切に設定してください.

  3. configure がうまくいったら,make します.
    % make
    

  4. もしコンパイルに失敗したら,上記のフィードバックのリンクより開発者に連絡をください.

使用方法

ここでは,CAMAC の ADC を1つだけ使う例を用い,基本的な使い方を説明します.

サンプルプログラム

ディレクトリ samples に,いくつかのサンプルプログラムがあります.CAMAC の ADC を使う例は,camac-adc.cc です. このプログラムは,ステーション 4 に林栄精器の ADC(RPC-022) が挿入されているとして,そこからの全チャンネル読みだしをプログラム引数に指定された回数くり返します.

例外

ROOM の多くのメソッドは,例外発生時に THardwareException を throw します.これは RoomDefs.hh に定義されています. この例外は,ストリーム挿入演算子によって,ostream にメッセージを出力させることができます.
    try {
        //...
    }
    catch (THardwareException &e) {
        cerr << "ERROR: " << e << endl;
    }

セットアップの記述

データ収集を始める前に,データ収集系の構成を記述しなければなりません.ここでは,CAMAC で ADC を一台使用する例で説明します.
  1. クレート,コントローラ,モジュールオブジェクトを作る.
        TDeviceFactory* DeviceFactory = TDeviceFactory::GetInstance();
    
        TCamacCrate* CamacCrate = DeviceFactory->CreateCamacCrate();
        TCamacController* CamacController = DeviceFactory->CreateCamacController("Toyo-CC7x00"); 
        TCamacModule* Adc = DeviceFactory->CreateCamacModule("Rinei-RPC022");
    
  2. コントローラとモジュールをクレートに挿入し,コントローラを初期化する.
        int StaionNumber;
        Crate->InstallController(Controller);
        Crate->Install(Adc, StationNumber = 4);
    
        Controller->Initialize();
    
これにより,モジュールとコントローラが関連づけられ,モジュールが使用可能になります.

データの待ち方

データの待ち方には,以下のように幾つかの方法があります.

データの読み方

データの読みだしを行なうには,以下の Read() メソッドを用います.

後始末

生成したオブジェクトは delete しましょう.TDeviceFactory で生成したオブジェクトも delete が必要です.
    delete Crate;
    delete Controller;
    delete Adc;

利用可能モジュール一覧


更新履歴

12 May 2002
多重トリガハンドリングのためのサービスリクエスタを実装.
ジェネリックモジュールの追加.
いろいろなバグフィックスと仕様変更...
Version 0.4.0 リリース.
6 Dec 2000
configure スクリプトの不具合を修正.
Version 0.3.2 リリース.
9 Nov 2000
CamacController を Open() し忘れていたのを修正 .
SIS GmbH の VME スケーラ(3801), VME ラッチ (3600) のコードを追加.
Version 0.3.1 リリース.
3 Oct 2000
環境依存部分を RoomConfig.hh に分離.
DeviceFactory へのデバイスの登録を半自動で行うように変更.
それに合わせて,ファイル名を全て変更(ごめんなさい). module-ベンダ名_型番 (またはcontroller-ベンダ名_型番)に統一.
VmeModule に WaitData() を実装した.
そのほかいろいろ変更したような気がする.
Version 0.3.0 リリース.
14 Jan 2000
デバイス名,クラス名を全て変更(ごめんなさい),種別_ベンダ名_型番 に統一.
あわせて,ヘッダファイル名も変更.ベンダ名_型番 に統一.
DeviceFactory をシングルトンに変更.
いくつかのデバッグ
SBS Technoligies 社の PCI-VME アダプタ Model 617 をサポート.
Version 0.2.0 リリース.
21 July 1999
TOYO CC/7700 で割り込みが最初の一度しか拾えない障害を修正.
サンプルプログラムで,モジュールクリアのタイミングが誤っていたものを修正.
Version 0.1.2 リリース.
5 July 1999
Makefile の不具合を修正.
Version 0.1.1 リリース.
18 June 1999
Version 0.1.0 リリース.

Edited by: Enomoto Sanshiro