for PV-WAVE/IDL ver.13.2.1 |
- dbStoreってなに?
- データ名の登録
- dbStoreのインストール
- 保存データの準備
- データの保存
- フレームデータの保存
- データの登録のキャンセル
- エラーコードの取得
- 保存したデータの削除
- dbStoreのアンインストール
- クイズに挑戦!
dbStoreってなに?
dbStoreとは、PV-WAVEまたはIDLから直接呼出し可能なプロシージャで、 任意のブロック(生)データや、生データの一次処理後に発生した配列データ等の任意のバイナリ配列データ、また、実験パラメータ等を登録・保存するために使用します。実体はランタイム共有ライブラリdbStore.DLL(Linux版は libdbstore.so)とそれをPV-WAVE/IDLから呼び出すプロシージャ(.pro)ファイルより構成されています。
ですからユーザが共有ライブラリを呼び出す専用アプリケーションを作ることもできます。
データやパラメータを保存するのに使うんだね。 | |||
データ名の登録
dbStoreでデータを保存するには、データ名をあらかじめデータベースに登録しておく必要があります。データ名を決め、データベースに登録をしましょう。
|
|
データ名はデータベースに登録される名前で、Retrieveで取り出す時に指定する名前になります。
データ名は、英数字、-(ハイフン)以外のものは使用できません。大文字、小文字は区別されます。
例)Bolometer, ImpMon, LIP-ICCD
STEP2 | データ名を登録しよう |
データ名が決まったら、登録申請を行います。登録申請はこちらから。
データ名が登録されると、LABCOMより連絡が入ります。
これでdbStoreでデータの保存ができるようになります。
dbStoreのインストール
計測データ・パラメータを保存するには、dbStoreを利用します。次の手順に沿って、dbStoreをインストールしましょう。
- Retrieve+dbStoreをダウンロードし適当なフォルダに保存します。ダウンロードはこちらから。
- インストールするPCに旧版のRetrieve+dbStoreがインストールされている場合は、必ず旧版をアンインストールしてください。
- ダウンロードしたファイルをダブルクリックするとインストールが始まります。手順に沿ってインストールを行ってください。
-
Retrieve+dbStoreをインストールすると、参照サイトが自動的に「LHD」に設定されます。デフォルトの参照サイトを変更したい場合はこちらをご覧ください。
なお、可視化ソフト(PV-WAVE/IDL)では参照サイトを変更するコマンドが用意されています。詳しくはこちらをご覧ください。 - dbStoreはテンポラリファイルを作成します。デフォルトではカレントディレクトリに作成します。
テンポラリファイルを作成するディレクトリを変更したい場合はこちらをご覧ください。 - 可視化ソフトがインストールされていない場合は、以下を行ってください。
- 可視化ソフトをダウンロードしインストールを行ってください。
- 可視化ソフトを起動したときにRetrieve+dbStoreが利用できるよう、起動時の実行ファイルの指定を行ってください。
- PV-WAVE
wavestartupファイルをRetrieveのインストールされているフォルダから、PV-WAVEのインストールされているフォルダにコピーします。
コピー元(デフォルト)
C:\LABCOM\Retrieve\lib\pv-wave\wavestartup
コピー先(デフォルト)
C:\VNI\wave\bin\wavestartup - IDL
IDLを起動後、[file]-[Preferences..]を選択し、[Startup]タブの[Startup file]にstartup_user_idl.proを指定します。
指定場所(デフォルト)
C:\LABCOM\Retrieve\lib\idl\startup_user_idl.pro
さぁ、これで準備ができたね。 次はdbStoreでデータの保存だ! |
|||
保存データの準備
PV-WAVE/IDLを利用し、dbStoreで計測データ・パラメータを保存します。
まずは、保存するデータの準備をしましょう。(dbStoreの使用方法はこちらをご覧ください)
登録するデータ配列をdataに格納します。(図1参照) 例) data = indgen(131072) …データを格納します データ表示してみましょう。(図1参照) plot, data …データを表示します データが表示されました。(図2参照) これでdataにデータ配列が格納されました。 |
■図1 ■図2 |
||||||||||||
dbStoreでパラメータを登録しない場合は、パラメータ配列の準備(STEP2以降)は必要ありませんので、次のデータの保存にお進みください。 |
|||||||||||||
|
■図3 |
||||||||||||
パラメータを登録するには、まずInitParamListでパラメータを格納する配列を準備します。 InitParamListは、パラメータ配列名、パラメータ数の順に指定します。 今回は、パラメータを2つ登録してみましょう。(図3参照) InitParamList, ParamArr, 2 …パラメータを格納するための配列ParamArrを作成します |
|||||||||||||
次に、準備した配列ParamArrにSetParamでパラメータを格納します。(図3参照) SetParamは、パラメータ配列名、パラメータ名、パラメータ値、パラメータ値のデータ型、関数の返り値の順に指定します。 SetParam, ParamArr, 'ClockSpeed', 10000, 'INTEGER', code SetParam, ParamArr, 'MemorySize', 131072, 'INTEGER', code これでパラメータ配列の準備ができました。 |
|
データの保存
保存データの準備で用意したデータ配列(data)、パラメータ配列(ParamArr)を、データ名「LABCOM」に登録してみましょう。(dbStoreの使用方法はこちらをご覧ください)
dbsOpenでデータの格納を開始します。(図4参照) |
■図4 |
||||||||||||||
dbsOpenは、dbs識別子、登録者メールアドレス、データ名、ショット番号、サブショット番号、データタイプ、関数の返り値の順に指定します。 dbsOpen, des, '', 'LABCOM', 94002, 1, 'RAW', code …ショット番号を指定しデータの登録を開始します
次に、チャネルデータとパラメータをdbsWriteで内部バッファーに書き込みます。 dbsWriteは、dbs識別子、チャネル番号、パラメータ配列、チャネルデータ、チャネルデータのデータ型、関数の返り値の順に指定します。 では、保存データの準備で準備したデータ配列data、パラメータ配列ParamArrを指定し書き込んでみましょう。(図4参照) dbsWrite, des, 1, ParamArr, data, 'INT16', code …データ配列とパラメータ配列を内部バッファーに書き込みます *チャネルデータまたはパラメータを空で登録する場合は、変数名nullを指定します。 例) dbsWrite, des, 1, null, data, 'INT16', code …パラメータを空で書き込みます 複数チャネルを登録する場合はdbsWriteをチャネル数だけ繰り返します。 なお、パラメータ配列ParamArrは、dbsWriteの実行後、変更されませんのでそのまま利用できます。パラメータの内容を変更する場合はパラメータ配列ParamArrを再度格納した後dbsWriteを実行してください。
dbsWriteで内部バッファーに書き込んだデータをdbsCloseでデータベースに転送しデータを登録します。 |
|||||||||||||||
dbsCloseは、dbs識別子、関数の返り値の順に指定します。(図4参照) dbsClose, des, code …データをデータベースに転送し登録を終了します これでデータベースにデータの登録ができました。 |
|
||||||||||||||
正しくデータが登録されているか、Retrieveで登録したデータを取得し確認してみましょう。(図5参照) params = 1 …パラメータ格納変数の定義(初期化)をしておきます retrieve, 'LABCOM', 94002, 1, 1, LABCOM, param=params …登録したデータを読み込みます 取得したデータを表示してみましょう。(図5参照) plot, LABCOM …チャネルデータを表示します 登録元のデータ(図2参照)と同じグラフが表示されましたね。(図6参照) これでデータが正しく登録されていることがわかりました。 次にパラメータを表示してみましょう。(図5参照) printParam, params …パラメータを表示します 登録したパラメータのImageType、ClockSpeed、MemorySizeの値は同じですね。(図5参照)(その他のパラメータは、dbStoreで登録すると自動的に付加されるものです) これでデータが正しく 登録されているのがわかりました。 |
■図5
|
||||||||||||||
フレームデータの保存
フレームに対応したカメラ画像データをdbStoreで登録することができます。
こちらでは、Retrieveで取得したフレームデータをそのまま登録する方法を説明します。(dbStoreの使用方法はこちらをご覧ください)
Retrieveでフレームデータを取得します。(図7参照) params = 1 retrieve, 'TESPEL-CCD', 94000, 1, 1, data, param=params …フレームデータを取得します 取得したデータは3次元配列(幅、高さ、フレーム数)で格納されています。最初のフレーム画像を表示してみましょう。(図7参照) tvscl, data(*, *, 0), /Order …最初のフレームを表示します 最初のフレーム画像が表示されましたね。(図8参照) 次に、パラメータを確認してみましょう。 printParam, params …取得したパラメータを表示します |
■図7 ■図8 |
||||||||||||
ここで必要なのは、ImageType(チャネル配列データのデータ型)、SampledFrame(収集したフレーム数)、AcquisitionWindowWidth(画像幅)、AcquisitionWindowHeight(画像高さ)の4つのパラメータです。 | |||||||||||||
それぞれの値は次のようになっていました。(図9参照) 1 AcquisitionWindowWidth 640 Integer 1 AcquisitionWindowHeight 480 Integer 1 ImageType GRAY8 String 1 SampledFrame 300 Integer |
■図9 |
||||||||||||
では、取得したフレームデータをデータ名「LABCOM」、ショット番号「94000」として保存してみましょう。 |
■図10 |
||||||||||||
初めにショットデータの登録を開始します。(図10参照) dbsOpen, des, '', 'LABCOM', 94000, 1, 'RAW', code …データの登録を開始します 次にdbsOpenFrameでフレームデータの登録を開始します。 dbsOpenFrameは、dbs識別子、チャネル番号、フレームのX方向サイズ、フレームのY方向サイズ、チャネルデータのデータ型、関数の返り値の順に指定します。 先程パラメータを確認した所(図9参照)、画像幅は640、画像高さは480、データ型はGRAY8でしたので、それぞれ指定します。(図10参照) dbsOpenFrame, des, 1, 640, 480, 'GRAY8', code …フレームの登録を開始します 次はdbsWriteFrameでフレーム数(SampledFrame)分、登録を繰り返します。 dbsWriteFrameは、dbs識別子、チャネル番号、フレーム番号、フレームデータ、関数の返り値の順に指定します。 今回は1フレームだけ登録してみましょう。 Retrieveで取得したフレームデータ配列dataの1フレーム目(data(*, *, 0))を指定します。(図10参照) dbsWriteFrame, des, 1, 1, data(*, *, 0), code …1フレーム目を登録します |
|||||||||||||
dbsCloseFrameでフレームの登録を終了します。 dbsCloseFrameは、dbs識別子、チャネル番号、パラメータ配列、関数の返り値の順に指定します。(図10参照) dbsCloseFrame, des, 1, null, code …フレームの登録を終了します 最後にショットデータの登録を終了します。(図10参照) dbsClose, des, code …データの登録を終了します これで1フレーム分のデータが登録できました。 |
|
||||||||||||
フレームデータが正しく登録されているか、Retrieveで登録したデータを取得し確認してみましょう。(図11参照) retrieve, 'LABCOM', 94000, 1, 1, LABCOM …フレームデータを取得します フレーム画像を表示してみましょう。(図11参照) tvscl, LABCOM(*, *, 0), /Order …0フレーム目を表示します 登録した画像(図8参照)と同じですね。(図12参照) これでデータが正しく 登録されているのがわかりました。 |
■図11 ■図12 |
データの登録のキャンセル
dbsWrite、dbsWriteFrame等でエラーが返ってきた場合、 ショットデータの登録処理を途中ででキャンセルすることができます。
実際にはないデータ配列dummyを指定し、dbsAbortでデータの登録をキャンセルしてみましょう。(図13参照) |
■図13 |
||||||||||||
dbsOpen, des, '',
'LABCOM', 94003, 1, 'RAW', code
…データの登録を開始します dbsWrite, des, 1, null, dummy, 'INT16', code …実際にはないデータ配列を指定します |
|||||||||||||
こちらを実行すると、 Error : The data and parameter not found.というエラーが返ってきましたので、登録をキャンセルします。 dbsAbortでは、dbsOpenで指定したdbs識別子を指定します。(図13参照) dbsAbort, des …データの登録をキャンセルします これでデータの登録がキャンセルできました。 再登録する場合は、dbsOpenからやり直してください。 |
|
エラーコードの取得
dbsOpen、SetParam、dbsWrite、dbsOpenFrame、dbsWriteFrame、dbsCloseFrame、dbsCloseでは、エラーコードを取得することによって、データが正しく格納できたかどうか、またエラーの場合どういう内容なのかを知ることができます。
こちらでは、dbsOpenのエラー参照方法を説明します。他のものもエラーの参照方法は同じですので、こちらを参考にしてください。
dbsOpenが正しく実行された場合、エラーコードは 0 が返されます。
dbsOpenが異常終了した場合はエラーコードは 0以外 が返されます。
エラーコードの内容は、Retrieveパッケージに含まれているdbStore Error Codes(dbstoreErrorCode.htm)で確認できます。
参照方法:[スタート]→[すべてのプログラム]→[LABCOM Retrieve+dbStore *.*.*]→[dbStore Error Codes]
|
■図14 |
||||||||||||
では、dbsOpenでエラーコードを参照してみましょう。(図14参照) dbsOpen, des, '', 'LABCOM', 94003, 1, 'RAW', code …codeにエラーコードを取得します print, code …codeを表示します エラーコードは 0 でした。(図14参照) |
|||||||||||||
これでdbsOpenが正常に実行されたことがわかります。 次に既に登録してあるデータでdbsOpenを実行してみましょう。(図15参照) |
■図15 |
||||||||||||
dbsOpen, d, '',
'LABCOM', 49001, 1, 'RAW', code
…codeにエラーコードを取得します |
|||||||||||||
こちらを実行すると、 Error : This Shot data was registered already. というメッセージが表示されます。 では、エラーコードを確認してみましょう。 print, code …エラーコードを表示します エラーコードが -56 ですのでdbsOpenは正しく実行されていません。(図15参照) エラーの内容をdbStore Error Codesで確認してみましょう。 |
|
||||||||||||
これでdbsOpenが正しく実行されなかった原因がわかりましたね。 |
保存したデータの削除
dbStreで登録した計測データ・パラメータを削除することができます。
削除したいデータの申請をこちらで行います。 |
|
STEP2 | データが削除されているか確認しよう |
データが削除されているか確認するには、Retrieveでデータを読み出してみればわかりますが、LABCOMではWebにて登録されているデータの一覧を見ることができます。
参照方法:LABCOMホームページ(http://w3.lhd.nifs.ac.jp)-「収集運転」-「集録データの検索」-「計測名より検索」
こちらでショット番号が表示されなければ、データが削除されているということになります。
dbStoreのアンインストール
アンインストールは「コントロールパネル」-「アプリケーションの追加と削除」で行なってください。
アンインストールを行うと、環境変数も自動的に削除されますが、うまく削除されない場合があります。
その場合は、手動で次の環境変数を削除してください。
- Retrieve
- INDEXSERVERNAME
- DBSTORE_TMP(作成した場合のみ)
アンインストールで自動的に環境変数も削除してくれるんだね。 | |||
クイズに挑戦!
こちらで勉強したことが理解できているかどうか、クイズに挑戦してみましょう!*全問正解者にはもれなくLABCOMより豪華記念品を贈呈します!皆さん、ふるってご解答ください。
クイズの実行にはJRE(Java Runtime Environment)が必要です。
Sunのサイトから最新版のJREをダウンロードし、インストールを行ってください。
また、IEをご利用の場合は、「ツール」→「インターネットオプション」で「詳細設定」タブをクリックし、「設定」で「Java(Sun)」の「<applet>にJava2を使用(再起動が必要)」にチェックを入れ「適用」をクリックし、その後IEを再起動してください。