計測データ取得ライブラリー UNIX(Linux/Soralis)版Retrive 2000.2.22 LABCOM 2000.10.24 改訂 このファイルはUNIX(Linux/Soralis)でのRetrieveAPIライブラリーの使用方 法を紹介します。 1. RetrieveAPIライブラリーファイル構成 libretrieve.a ... 静的リンク用Retrieveライブラリー libretrieve.so ... 動的リンク用Retrieveライブラリー 2. サンプルファイル RetrieveEXE.cpp ... 上記ライブラリーを使用したAPI使用例 (Windows版Retrieve.exeのソースと同様) Makefile ... メークファイル 3. サンプル実行ファイル retrieve ... 上記サンプルファイルをコンパイルし実行可能にしたもの (使用方法はWindows版Retrieve.exeと同様) 使用例. Retrieve FIG 15000 1 0 4. RetrieveAPIインターフェース Retrieveライブラリーに格納されているAPIをコールする事により Indexd/Trasdとの通信を行ない、データをデータベースから取り出します。 データを取り出す為のAPIは基本的に3種類のみです。 4-1. ショットデータ情報取り出し関数 4-2. チャンネルデータ情報取り出し関数 4-3. 実データ転送取り出し関数 なお,以下の全ての関数に付いて 正常終了時の戻り値は0。 異常終了時の戻り値は0以外。 となっています。0以外の場合はエラーコード票を参照して下さい。 4-1. ショットデータ情報取り出し関数 指定したショット番号のショットデータ情報を取り出します。 イ. long PvwRetrieveGetInfo(int argc, LPVOID **argv); ロ. long IdlRetrieveGetInfo(int argc, LPVOID argv[]); ハ. long retrieveGetInfo(char *DiagName, char *Server, char *IndexServer, unsigned long ShotNumber, short SubShotNumber, short Fastch, short Lastch, SINFOR &ArcInfo); 上記三つの関数は、共に同じ実行結果を示します。 上位に使われるアプリケーションタイプによって各インターフェース を呼び分けます。イ,ロはPV-WAVE、IDL用のインターフェースになり ます。ハは主にC/C++から呼び出して使用します。 最始・最終チャンネル番号に0を指定すると全てのチャンネルデータ を示します。 イ,ロに付いてはオプションと実行結果の戻り値をアーギュメントと してデータの授受を行ないます。PV-WAVE等からLINKLOADする場合に は、次の順番でアーギュメントを渡します。 第1引数(in) ... 計測名 第2引数(in) ... 問い合わせショット番号 第3引数(in) ... 問い合わせサブショット番号 第4引数(out) ... ショット番号 第5引数(out) ... サブショット番号 第6引数(out) ... 含まれるチャネルデータ数 第7引数(out) ... 年 第8引数(out) ... 月 第9引数(out) ... 日 第10引数(out)... 時 第11引数(out)... 分 第12引数(out)... 秒 第13引数(out)... 管理番号 第14引数(out)... バージョン番号 第15引数(out)... コメント 第16引数(out)... コメントサイズ 第17引数(out)... Transdサーバ名 第18引数(in) ... Indexサーバ名 第19引数(in) ... 最始チャンネル番号 第20引数(in) ... 最終シャンネル番号 ハに付いてはC/C++から引数を指定しファンクションをコールします。 第1引数(in) ... 計測名 第2引数(in) ... Transdサーバ名 第3引数(in) ... Indexサーバ名 第4引数(in) ... ショット番号 第5引数(in) ... サブショット番号 第6引数(in) ... 最始チャンネル番号 第7引数(in) ... 最終チャンネル番号 第8引数(out) ... SINFOR構造体参照ポインター 構造体SINFORの内容は以下の通りです。 typedef struct { unsigned int ShotNumber; // ショット番号 short SubShotNumber; // サブショット番号 short LastChannel; // 含まれるチャンネル数 short Year; // 年 short Month; // 月 short Day; // 日 short Hour; // 時 short Minute; // 分 short Second; // 秒 float ManageNumber; // 管理番号 float VersionNumber; // バージョン番号 char Comment[256]; // コメント } SINFOR; 4-2. チャンネルデータ情報取り出し関数 4-1で指定したショット番号の指定したチャンネル情報を取り出します。 イ. long PvwRetrieveGetSize(int argc, LPVOID argv[]) ロ. long IdlRetrieveGetSize(int argc,LPVOID **argv) ハ. long retrieveGetSize(short Channel,CINFOR &ChaInfo) 上記三つの関数は、共に同じ実行結果を示します。 上位に使われるアプリケーションタイプによって各インターフェース を呼び分けます。イ,ロはPV-WAVE、IDL用のインターフェースになり ます。ハは主にC/C++から呼び出して使用します。 イ,ロに付いてはオプションと実行結果の戻り値をアーギュメントと してデータの授受を行ないます。PV-WAVE等からLINKLOADする場合に は、次の順番でアーギュメントを渡します。 第1引数(in) ...問い合わせチャンネル番号 第2引数(out) ...チャンネル番号 第3引数(out) ...データタイプ (1:RAW_DATA,2:ANA_DATA) 第4引数(out) ...元データサイズ 第5引数(out) ...圧縮後データサイズ 第6引数(out) ...管理番号 第7引数(out) ...バージョン番号 第8引数(out) ...圧縮メソッド名 第9引数(out) ...圧縮メソッドバージョン 第10引数(out)...コメント 第11引数(out)...コメントサイズ ハに付いてはC/C++から引数を指定しファンクションをコールします。 第1引数(in) ... 問い合わせチャネル番号 第2引数(in) ... CINFOR構造体参照ポインター 構造体CINFORの内容は以下の通りです。 typedef struct { short ChannelNumber; // チャンネル番号 short DataType; // データタイプ(1:RAW_DATA,2:ANA_DATA) unsigned int DataSize; // 元データサイズ unsigned int CompDataSize; // 圧縮後データサイズ float ManageNumber; // 管理番号 float VersionNumber; // バージョン番号 char CompMethod[32]; // 圧縮メソッド名 char CompVersion[32]; // 圧縮メソッドバージョン char Comment[256]; // コメント } CINFOR; 4-3. 実データ転送取り出し関数 4-2で指定したチャンネル番号の実データを取り出します。 イ. long PvwRetrieveGetData(int argc, LPVOID **argv) ロ. long IdlRetrieveGetData(int argc, LPVOID argv[]) ハ. long retrieveGetData(unsigned char *data, unsigned long datalen) 上記三つの関数は、共に同じ実行結果を示します。 上位に使われるアプリケーションタイプによって各インターフェース を呼び分けます。イ,ロはPV-WAVE、IDL用のインターフェースになり ます。ハは主にC/C++から呼び出して使用します。 イ,ロに付いてはオプションと実行結果の戻り値をアーギュメントと してデータの授受を行ないます。PV-WAVE等からLINKLOADする場合に は、次の順番でアーギュメントを渡します。 第1引数(out) ...データ格納 第2引数(in) ...データ格納長 ハに付いてはC/C++から引数を指定しファンクションをコールします。 第1引数(out) ... データ格納 第2引数(in) ... データ格納長 5. データ転送手順 データ転送の手順はサンプルコード(retrieveExe.cpp)を参照して下さい。 大まかな手順を示しますと次の様になります。 イ. 取り出したいデータショット番号を4-1関数を使って取り出します。 ロ. イの取り出しが成功したなら、取り出したいチャンネル番号を指定 して4-2関数を使用し、チャンネル情報を取り出します。 ハ. ロの取り出しが成功したなら、4-2関数で設定した引数の元データ サイズ情報からデータ長分のメモリー領域を確保します。 ニ. データの確保が成功した場合は、4-3関数を使用し実際のデータを 取り出します。 ホ. 取り出したいチャンネル番号分だけロ~ニを繰り返し実行します。 ヘ. イで指定した最終チャンネル番号を取り出した時点でTransサーバ から切断します。 6. インデックスサーバ名 4-1関数でインデックスサーバ名を指定しますが、00/10/24 時点でのサーバ は以下のホストで稼働中です。 DasIndex.LHD.nifs.ac.jp