私のPCに接続されているこの実験装置を持っています。特別なOCXファイルを使用してデバイスと通信します(読み取り、パラメーターの設定など)。このコードは、機能しているように見えるマニュアルから取得しました。「倍率=1272.814最後のエラー=APIが初期化されていません」というメッセージボックスが表示されます。
<HTML>
<HEAD>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub window_onLoad()
Dim Value
Dim er
call Api1.Initialise("")
call Api1.Get("AP_MAG",Value)
call Api1.GetLastError(er)
call window.alert("Magnification = " + CStr(Value)+"Last error="+er)
call Api1.ClosingControl()
end sub
-->
</SCRIPT>
<TITLE>New Page</TITLE>
</HEAD>
<BODY>
<object classid="CLSID:71BD42C4-EBD3-11D0-AB3A-444553540000" id="Api1">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2096">
<PARAM NAME="_ExtentY" VALUE="1058">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
</BODY>
</HTML>
つまり、vbsの知識は0%、jscriptの知識は約10%なので、Javascriptで同じことを書き直そうとしています。また、必要なコードはすでにjsで記述されています。
<script language="JScript">
var Api1=new ActiveXObject("ApiCtrl");
var value;
var er;
Api1.Initialise("");
Api1.Get("AP_MAG",value);
Api1.GetLastError(er);
window.alert("Magnification = " + value+"\n Last error="+er);
Api1.ClosingControl();
</script>
残念ながら、またはのいずれかのメソッドでタイプの不一致エラーが発生し.Get
ます.GetLastError
。var value; var er;
var value=""; var er="";
これがAPIマニュアルの内容です
long GetLastError(VARIANT *エラー)
[out] Errorは、最後のエラーのエラーコードに関連付けられたエラー文字列です。備考:この呼び出しは、最後のエラーに関連付けられたVT_BSTRVARIANTを返します。戻り値:呼び出しが成功した場合は0を返します。呼び出しが失敗した場合は、関数からエラーコードが返されます。
long Get(LPCTSTR lpszParam、VARIANT * vValue)
[in] lpszParamは、パラメータの名前です。例:「AP_MAG」<br> [in] [out] vValueは、パラメータの値です。備考:この呼び出しは、指定されたパラメータの値を取得し、vValueで返します。C ++では、この関数を呼び出す前に、バリアント型(vValue.vt)をVT_R4またはVT_BSTRのいずれかに指定する必要があります。vValueにバリアントタイプが定義されていない場合、デフォルトでは、アナログパラメータ(AP_XXXX)の場合はVT_R4、デジタルパラメータ(DP_XXXX)の場合はVT_BSTRになります。バリアントタイプがアナログパラメータのVT_R4の場合、浮動小数点表現がバリアントで返されます。VT_BSTRバリアントが渡された場合、アナログ値は、単位が追加されたスケーリングされた文字列として返されます(たとえば、AP_WDは「= 10mm」を返します)。デジタルパラメータの場合、VT_R4バリアントは状態番号になり、VT_BSTRバリアントは状態文字列になります(たとえば、DP_RUNUPSTATEは状態0または「シャットダウン」またはサポートされている言語の同等のものを返します)。C ++では、バリアントタイプがVT_BSTRとして指定されている場合、APIはBSTRを内部的に割り当て、呼び出し元はSDK呼び出し:: SysFreeString(vValue.bstrVal)を使用して割り当てを解除する必要があります。