COM API
アナライザーはVisual Basic、C++ やExcelのような外部プログラムでコントロールし、データを処理することができます。
Note: この機能にアクセスするには「Automation Tools」オプション(Opt/10)の搭載が必須です。「Accessed Denied」が表示される場合は当該オプションを追加ご購入下さい。
Visual Basic (Microsoft Visual Studio 2008)
1. プロジェクトへのオートメーションインターフェースに参照を加えます
1) プロジェクトを選択 | 参照を追加…
2) 参照ダイアログでCOMタブを選択
3) SpectraPLUS-DT Automation Typelibを選択
4) OKをクリック
2. クラスのインスタンスを作成します
Dim SP As SpectraPLUS_DTAutomationLib.ISpectraPLUS_DT
SP = New SpectraPLUS_DTAutomationLib.SpectraPLUS_DTClass
3. メソッドを呼び出します
SP.Run()
Return
Values:
メソッドがHRESULTsを返すので、もしエラーが発生すればVisual Basicは戻り値を例外にコンバートします。そのようにコードで例外を取り扱わなければなりません。
On
Error GoTo Err_Trap
...
call methods, etc.
Err_Trap:
Dim sMsg As String
sMsg = "The error returned: "
sMsg = sMsg & Err.Description
MsgBox sMsg, vbCritical, _
"Error" & Str$(Err.Number)
Err.Clear
Resume Next
Accessing
Arrays:
GetSpectrum()でSAFEARRAYSをどう使用するかに関する例を以下に述べます。freqとdataの両方は単精度浮動小数点配列です。
Dim
freq() As Single
Dim
data() As Single
SP.GetSpectrum(0, freq, data)
Dim
n As Variant
For
Each n In freq
Value = n
Next
n
For
Each q In data
Value = q
Next
q
*) サンプルソース ZIP
Visual C++ (Visual Studio 2008)
1. Type Library (TLB)をインポートします。
2. そのTypeのスマートポインタを作成します。
3. メソッドを呼び出します。
#import
"C:\SpectraPLUS_DT\bin\ SPDTAxnIface.tlb" no_namespace
CoInitialize(NULL);
ISpectraPLUS_DTPtr ISP(__uuidof(SpectraPLUS_DTClass));
if
( ISP )
{
ISP->Run();
}
…
execute remainder of program …
ISP
= 0;
戻り値はHRESULTSです。スマートポインターのVisual C++実装は戻り値を妨害し、エラーを除外します。このようにすべてのコードはtry/catchブロックに注意しなければなりません。除外されるタイプは_com_errorです。
try
{
ISP->Run();
}
catch
( _com_error &error )
{
MessageBox( error.ErrorMessage()
);
}
*) サンプルソース ZIP
1. Excelのデベロッパータブを有効にします
Excel 2007:
1) Officeボタンをクリック
2) オプションをクリック
3) Popularをクリック
4) "Show Developer tab in the
Ribbon" ボックスをチェック
Excel 2010:
1) ファイルタブをクリック
2) オプション・コマンドをクリック
3) カスタマイズリボンカテゴリーをクリック
4) メインタブリストの"Developer"ボックスをチェック
2. オートメーションインターフェースに参照を加えます
1) デベロッパータブをクリック
2) ビューコードをクリック
3) ツール| 参照を選択
4) スクロールダウンし"SpectraPLUS-DT
Automation Typelib"をチェック
5) OKをクリック
3. クラスのインスタンスを作成します
Dim SP As SpectraPLUS_DTClass
Set SP = CreateObject("SpectraPLUS_DT.Axn")
4. メソッドを呼び出します
SP.Run
以下はスペクトラルデータ列の取得方法とスプレッドシートでの利用例です。
Dim channel As Integer
Dim startHz As
Single
Dim stopHz As
Single
' 周波数範囲とチャンネルを指定
channel = 0
startHz = 500#
stopHz = 2000#
' スペクトラルデータ列変数の定義
Dim freq() As Single
Dim data() As Single
' アナライザーからデータの読み込み
SP.GetSpectrumInSpan channel, startHz,
stopHz, freq, data
Dim n As Variant
Dim q As Variant
Dim col As
Integer
Dim row As Integer
' セルにデータをロード
col = 1
row = 1
For Each n In freq
Sheet1.Cells(row, col).value = n
row = row + 1
Next n
col = 2
row = 1
For Each q In data
Sheet1.Cells(row, col).value = q
row = row + 1
Next q
*) サンプルソース ZIP