リリース情報
概要
GeigerNT.dll はUSBガイガーカウンタと通信するために使用します。
通常は各種アプリケーションと同じ場所に置くだけですが、
直接ガイガーカウンタとの通信アプリケーションを作成したい場合は、
C言語から制御できるようにインクルードファイルとサンプルを用意しています。
| 名称 |
GeigerNT.dll |
| 動作確認OS |
windowsXP SP3, windows7-32, windows7-64 SP1 |
| 動作確認コンパイラ |
Borland系(Visual C++でも使えるはずです) |
使用方法
処理の流れは下記のようになっています。
- GeigerNT.hをインクルードする
- Init()で初期化
- Find()でガイガーカウンタを検索
- GetInfo()で識別子取得
- Connect(識別子)で接続
- GetData()をループで回す
- Free()を呼び出して終了
詳しくは Sample.cpp をご覧ください。
関数仕様
DLLの初期化
int Init();
すべての関数を使用する前に呼び出してください。
成功すると0以外の値が返ります。
何回呼び出してもかまいませんので、各関数を使用する前のチェックにも使えます。
DLLの開放
int Free();
すべての通信を切断し、DLLを開放します。
成功すると0以外の値が返ります。
アプリケーションの最後で呼んでください。
ガイガーの検索
int Find();
呼び出した時点で接続されているデバイスの個数を返します。
ガイガー情報の取得
void GetInfo(TInfo *Info);
Find() と対で使います。
バッファオーバーフローはチェックしていませんので、
必ずFind()で返された個数分以上の構造体領域を確保してから呼び出してください。
また、自動で解放されませんので不要になったときは手動で解放するようにしてください。
struct TInfo
{
DWORD Unique; // 接続識別子
WORD Firm; // ファームウェア
WORD Serial; // シリアル番号
char Name[32]; // デバイス名
};
接続
int Connect(DWORD Unique);
ガイガー情報で得た接続識別子(ユニークハンドル)を使って接続します。
接続直後からデータが送られてきますので、GetDataで取りに行ってください。
成功すると0以外の値が返ります。
切断
int Disconnect(DWORD Unique);
ガイガー情報で得た接続識別子(ユニークハンドル)を使って切断します。
成功すると0以外の値が返ります。
データの取得
int GetData(TData *Data);
ガイガーカウンタから1秒毎に送られてくるデータを非同期で取得します。
データが取れた場合は、0以外の値が返ります。
struct TData
{
SYSTEMTIME Time; // 取得日付・時間
DWORD Unique; // 接続識別子
DWORD PacketNo; // 電源ONからのパケット数(秒)
DWORD Count; // 電源ONからのトータルカウント
WORD Reset; // リセットからのパケット数(秒)
WORD CPS; // カウント/秒
};
複数のデータが送られてくることがありますので、戻り値が0になるまで
連続で取得したほうが良いでしょう。
切断されたときは、取得日付の各項目が0になります。
そのタイミングで該当する識別子を捨てるのが良いと思います。
変換係数の取得
int GetCoefficient(DWORD Unique, double *Coefficient, WORD *BackGround);
ガイガーカウンタ本体に設定している変換係数を取得します。
係数はdoubleを使っていますが、0.00001~0.65535までです。
成功すると0以外の値が返ります。
変換係数の設定
int SetCoefficient(DWORD Unique, double Coefficient, WORD BackGround);
ガイガーカウンタ本体に変換係数を設定します。
係数はdoubleを使っていますが、0.00001~0.65535までです。
成功すると0以外の値が返ります。
すべて切断
void Clear();
すべての接続を切断し、DLL内部を初期状態に戻します。
最終更新:2012年01月12日 17:40