8章 DDE / ダイナミックデータエクスチェンジ

SpectraSOFTは、MS-Windowsが提供するDDEData Dynamic Exchange)機能に対応しています。DDE機能は、主なスプレッドシート、データベースソフトやプログラム開発言語が対応しています。

DDEを利用すると、SpectraSOFTとアプリケーションソフト(例えばスプレッドシート)間で、コマンドとデータのやり取りができるようになります。従って、自動測定環境の構築が容易になります。

DDEに関する詳細は次のページ を併せて参照下さい。

 

8-1 DDE コマンド例

SpectraSOFTに提供されている制御命令、データ要求コマンドの一例です。

コマンド 機  能
"[Run]" アナラザーをスタートします
"[Stop]" アナライザーを停止します
"[Record]" 現在の位置にWAVデータをレコードします
"[Play]' 現在の位置からWAVファイルを再生します
"[Run Generator]" ジェネレーターをスタートします
"[Stop Generator]" ジェネレーターを停止します
"[Marker# xxx]" マーカーnxxxHzに設定します
"[File Open FILENAME.WAV]" WAVファイル"FILENAME.WAV"を開きます
"[File Save FILENAME.WAV]" 現在のWAVファイルを"FILENAME.WAV"の名前で保存します
"[Minimize Window]" ウィンドウをアイコン化します
"[Logging On]" データログ機能をオンします
"[Logging Off]" データログ機能をオフします
 
コマンド 機  能
"Peak Frequency" ピーク周波数値を返します
"Peak Amplitude" ピークアンプリチュード値を返します
"Total Power" トータルパワー値を返します
"THD" THD値を返します
"Spectrum" spectrumデータ列を返します
"Markern Amplitude" マーカーnのアンプリチュード値を返します

 

8-2 DDEサンプル

マイクロソフトのエクセルを使用する場合の例を記述します。

この例では、THD測定を10秒間実行した後「NO/GO」判定をして終了します。判定分岐点は「0.05%」です。

Sub LimitTest( )

'SpectraSOFTDDEのスタート
ch = DDEInitiate("Softest","Data")

'プログラムを開いておかなければなりません
DDEExecute ch,"[File Open c:\softest\config\thd_test.cfg]"

'アナライザーのスタート
DDEExecute ch,"[Run]"

'10 Sec.ウェイティング
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
newTime = TimeSerial(newHour,newMinute,newSecond)
Application.Wait newTime

'アナアライザーの停止
DDEExecute ch,"[Stop]"

'アナライザーからのデータの受信
Data = DDERequest(ch,"THD")
thd_value = Data(1)

'データの照合とジャッジ
If thd_value<0.05 Then
  MsgBox("Test PASSED")

Else
  MsgBox("Test FAILED")

End If

DDETerminate ch

End Sub

 

次の例では、1分間毎の1/3 Oct.アベレージングデータを取得し、データをシート上に貼り付けます。この動作を20回連続します。

Sub ThirdOctaveTest( )

'SpectraSOFTDDEのスタート
ch = DDEInitiate("Softest","Data")

MaxAverages = 20
AverageTimeMinutes = 1
CurrentAverage = 0

Do

'アナライザーのスタート
DDEExecute ch,"[Run]"

'N分のウェイティング
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + N
newTime = TimeSerial(newHour,newMinute,newSecond)
Application.Wait newTime

'アナアライザーの停止
DDEExecute ch,"[Stop]"

'アナライザーからのデータの受信
DataArray = DDERequest(ch,"Spectrum")

'スペクトラムバンド総数の検出
num_band = UBound(DataArray)

'ワークシートにスペクトラデータを置く
Worksheets("Sheet1").Range(Cells(2,MaxAverages-CurrentAverag e),Cell(1 + num_band, MaxAverages - CurrentAverage + 1)).For mula = DataArrey

CurrentAverage = CurrentAverage + 1

If CurrentAverage >= MaxAverages Then Exit Do

Loop

DDEExecute ch,"[Stop]"

DDETerminate ch

End Sub


ページTop |ST-Top Page |