CSV形式で保存されたデータをDIAdemに読み込むデータプラグインをVBScriptで作成する

更新しました Jun 25, 2021

環境

ソフトウェア

  • DIAdem

CSV形式のファイルはメモ帳やExcelによりデータの閲覧ができる為、頻繁に使用されます。CSV形式で出力されたファイルには測定時に使用された条件、当時の環境情報などが記載されている場合があり、DIAdemでこれらのファイルを読み込む際にカスタムプロパティとしてメタ情報を管理したい場合があります。
また、これらのCSVファイルをDIAdemのデフォルトのデータプラグインで読み込んだ場合、計測データが意図した形で読み込まれない場合があります。このような場合、独自のデータプラグインをVBScriptを使用して作成し、スクリプト内で指定した形でプロパティ、データを読み込むことができます。ここではVBScriptを使用してCSVファイルから計測データとプロパティを読み込む方法を確認します。

 

DIAdemに読み込むデータの確認

ここでは下記のTestCSV.csvファイルを読み込むデータプラグインを作成します。TestCSV.csvはこの記事のAttachmentsからダウンロードする事ができます。データファイル内の各項目を赤字で表記したプロパティとしてDIAdemのData Portalにロードする事を目標とします。
 
001data.png


 

データプラグインの作成

DIAdemで新規のデータプラグインを作成します。詳細な手順はこちらの記事で確認できます。DIAdemを起動し、設定>拡張>データプラグインを選択し、「データプラグインの設定」を開きます。新規のDataPluginを作成する際は「VBSデータプラグインを追加」を選択します。
 
002Create DataPlugin.jfif

「新規データプラグイン」設定画面ではDataPluginの名前、読み込むデータの拡張子、また、拡張設定を開き、このDataPluginをインストール可能とする互換性のある最小のUSIバージョンを選択します。DataPluginはUSIで実行される為、基本的にはDataPluginを作成した環境と同じバージョンのUSIバージョンが要求されますが、この設定により、開発に用いたUSIバージョンよりも古い環境で使用可能となります。OKをクリックし、DataPluginの作成を完了します。ここでは下記のようにデータプラグインを構成しました。
 
003New.png

上記のデータプラグインで使用するVBScriptの編集はスクリプトの編集を選択して、行います。後述するスクリプトを下記の図のように張り付けて保存する事でデータプラグインは完成します。
 
005script.png

上記の図で使用しているスクリプトは下記の物となります。
 
Option Explicit

Sub ReadStore(File)
  'Provide the file object with information about the file format
  File.Formatter.LineFeeds = vbNewLine
  File.Formatter.IgnoreEmptyLines = true
  File.Formatter.TrimCharacters = " "
  File.Formatter.Delimiters = ","
  
  'Read the name of the source out of the first line of the file.
  Dim TitleValue : TitleValue = File.GetNextStringValue(eString)
  Call Root.Properties.Add("Name", TitleValue)

  File.SkipLine() 'Advance to the next line.

  Dim PropName : PropName = File.GetNextStringValue(eString)
  File.SkipLine() 'Advance to the next line.
  Dim PropVal : PropVal = File.GetNextStringValue(eString)
   'Create the property on the root of the plugin.
  Call Root.Properties.Add(PropName, PropVal)

  File.SkipLine() 'Advance to the next line.
  Dim ChnGrpName : ChnGrpName = File.GetNextStringValue(eString)
  File.SkipLine() 'Advance to the next line.

  'Read the root's properties out of the file
  File.Formatter.Delimiters = "," 'Data values are seperated by a ","
  
  'Create the implicit channel.
Dim oMyGrp : Set oMyGrp = Root.ChannelGroups.Add(ChnGrpName)
Dim oMyChn, i, Val, j
Set oMyChn = oMyGrp.Channels.Add("Xaxis",eR32)

For i = 1 to 1000
Val = File.GetNextStringValue(eR32)
If IsEmpty(Val) = true Then Exit For
oMyChn(i) = Val
Next

File.SkipLine() 'Advance to the next line.
  
Set oMyChn = oMyGrp.Channels.Add("Yaxis",eR32)
For i = 1 to 1000
Val = File.GetNextStringValue(eR32)
If IsEmpty(Val) = true Then Exit For
oMyChn(i) = Val
Next

End Sub 


 

作成したデータプラグインを使用してデータをロードする

上記の方法で作成したDataPluginを使用してデータの読み込みを行います。DIAdemのNAVIGATORにて内部データを削除後、TestCSV.csvを右クリックし、「ローダーで開く」を選択します。
 
006load.png

下記の図のように、スクリプトで指定した形でデータが読み込まれ、プロパティが登録されている事が確認できます。
 
007loaddata.png

Attachments