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版
- UUSBD ドライバー(フリーの USB汎用ドライバー)
- W32Device.class(このパッケージで提供)
- W32DevDLL.dll(このパッケージで提供)
class ファイルと、dll ファイルを実行ファイルと同一フォルダにいれて
おくのが簡単だろう。
Linux版
- オンライングループ、仲吉氏による CC/USB ドライバー
- ccusbdev.so(このパッケージで提供)
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 版の場合、戻り値のデータ部分には送ったデータが入る。