CC/USB用 Java Class CCUSB

(LastUpdate: 01-Aug-2003)
高エネルギー加速器研究機構
素粒子原子核研究所・オンライングループ
藤井啓文

東陽テクニカ社製の CC/7700用 CC/USB Adapter は USB1.1 で動作する。 USB1.1 なので速度的には限界があるが、手軽さが魅力である。 そこで、速度をそれほど要求しないような応用(モジュールのテストとか データ発生頻度の高くないデータ収集とか)に手軽に使えることを目指して Java の class ファイルを作ってみた(Linux 版及び Windows 版)。

この class ファイルは Java Native Interface (JNI) を 使用して、CC/USB Adapter を呼び出している。従って実行にあたっては、 この class ファイルの他に、以下のソフトウェアが必要である。

Windows版

class ファイルと、dll ファイルを実行ファイルと同一フォルダにいれて おくのが簡単だろう。

Linux版

ccusbdev.so は shared object なので、ダイナミックリンクできるように 設定しておく。環境変数 LD_LIBRARY_PATH に現在フォルダ(.)をいれて、 現在フォルダに置くのが手軽だろう。


CCUSB メンバー関数一覧

boolean open(String devnam)
CC/USBに割り当てられている devnam という名前の device を開く。 成功すれば true が返り、失敗した場合は false が返る。
boolean close()
open() を使って開いた device を閉じる。成功すれば true が返り、 失敗した場合は false が返る。
int getId()
CC/USBの AdapterID を読み取り、その値を返す。成功した場合は、 AdapterID (0-15) が返り、失敗した場合は -1 が返る。
boolean Z()
CAMAC Z (Initialize) を実行する。成功した場合は true が返り、失敗した場合は false が返る。
boolean C()
CAMAC C (Clear) を実行する。成功した場合は true が返り、失敗した場合は false が返る。
boolean setInhibit()
クレートコントローラ CC-7700 を Inhibit 状態にする。 成功すれば true が返り、失敗した場合は false が返る。
boolean clearInhibit()
クレートコントローラ CC-7700 の Inhibit を解除する。 成功すれば true が返り、失敗した場合は false が返る。
boolean setLAM()
クレートコントローラ CC-7700 の LAM(Look at me)を設定する。 成功すれば true が返り、失敗した場合は false が返る。
boolean clearLAM()
クレートコントローラ CC-7700 の LAM(Look at me)を解除する。 成功すれば true が返り、失敗した場合は false が返る。
int getLAMPattern()
クレート内で発生している LAM をビットパターンとして読み出す。戻り値は 32bit 整数で、 正常に読み出された場合、最上位の 8ビット(bit24-bit31)はすべて 0 である。 正常に読み出された場合の bit0 から bit23 は、 最下位ビット(bit0)がステーション番号1のモジュールの LAM 状態を、 bit1 がステーション番号2のモジュールの LAM 状態を、 以下順番に bit23がステーション番号24のモジュールの LAM 状態を表す。 LAM が発生していると対応するビットが 1 になり、発生していない場合は 0 となる。 エラーが発生した場合は、-1 が返る。すなわちエラーの場合は 32bit 全部が 1 になる。
int NAF(int n, int a, int f)
CAMAC のステーション番号 n、サブアドレス a 及び CAMAC 関数番号 f を与えて CAMAC cycle を実行する。 戻り値は 32bit 整数で、 下位 24bit(bit0-bit23) が CAMAC データを、 上位 8bit(bit24-bit31) が結果の状態を表す。CAMAC データは CAMAC bus 上の最下位bit が bit0 に、最上位ビットが bit23 に対応する。戻りの CAMAC データが無い場合は bit0 から bit23 がすべて 0 になる。 結果の状態を表す上位 8bit はすべて 0 が正常状態である。 結果の状態を表す上位 8bit のうち、bit24 が CAMAC の X 応答の状態を、bit25 が Q 応答の状態を表す。いずれも応答が無い場合に 1 になる。
int NAF(int n, int a, int f, int d)
CAMAC のステーション番号 n、サブアドレス a、CAMAC 関数番号 f、 及びデータ d を与えて CAMAC cycle を実行する。データは下位 24bit(bit0-bit23) のみが 有効である。戻り値については int NFA(int n, int a, int f) に同じ。ただし、 Linux 版の場合、戻り値のデータ部分には送ったデータが入る。