2017-02-10 5 views
0

...Windowsスクリプトホスト - COMオブジェクトとのJScriptおよびVBScriptのここStuggling

VBScriptの

私がロードされたDLLを持っており、オブジェクトを作成することができます。私はその後、objServerのプロパティに基づいて新しいオブジェクトを作成することができます

Set objServer = CreateObject("Matrikon.OPC.Automation.1") 

(私は右のことを言っていると思う?)

Set objGroups = objServer.OPCGroups 
Set objGroup = objGroups.Add("Group001") 

マニュアルはOPCGroupsOPCServerPropertyであることを示しています。このPropertyを呼び出すと、OPCGroups型の新しいObjectが残っています。プロパティとメソッドを呼び出すことができます。

Syntax OPCGroups As OPCGroups 

これは問題なく動作します。私はこの機能を呼び出すときに続き、止まってしまいます。

Syntax AddItems (Count As Long, ItemIDs() As String, ClientHandles() As Long, ByRef ServerHandles() As Long, ByRef Errors() As Long, Optional RequestedDataTypes As Variant, Optional AccessPaths As Variant) 

文字列の配列が必要です。しかし、VBScriptでは、私は常にバリアントの配列(VarType = 8204)で終わります。配列を渡して渡すと、型の不一致エラーが発生します。私は強くそれを文字列の配列にタイプする方法を見つけることができません。私はそれが可能であるかどうかもわからない。以上のJScript

のJScript

Iは上記と同じ第1のステップを実行し、私はOPCGroupsオブジェクトを作成するときに、

var objGroups = objServer.OPCGroups; 

何かが機能しませんでした。すべての関連するプロパティ/メソッドを持つOPCGroupsオブジェクトは実際には作成されていません。メソッドを呼び出すときに呼び出すとき

var objGroup = objGroups.Add(); 

「オブジェクトはこのプロパティまたはメソッドをサポートしていません」と表示されます。あたかも汎用/空白のオブジェクトを作成したようなものです。 OPCGroupsオブジェクトとして型指定されたものではありません。

So.回避策をこの問題のにすることはできますか?

+0

VBScriptのバージョンを使用すると、CSTRで文字列に配列の各項目を強要しようとしませんでした関数? –

+0

確かにしました。 は 'objTextFile.AtEndOfStream \t ReDimステートメントまでarrFileLines(I) \t arrFileLines(i)を保存くださいCStr関数(objTextFile.Readline) \t I = I + 1 Loop' – mriksman

+0

は、ここではいくつかの情報=:https://support.microsoft .com/en-us/help/244012/info-type-mismatch-errors-you-you-pass-parameters-aspからvisual-basic-componentへ –

答えて

0

このQ &では、私は仲間の自動化の専門家を見て以来、しばらくしています。 Matrikonと仕事をしていますか?私はautosolまたはkepwareを個人的に好む。とにかく、あなたのコードに。参照しているマニュアルはvbscriptではなくVBA用に書かれていて、 "As xxxx"ディスクリプタを提供しています.VBScriptではこれらのディスクリプタは必要ありません。これを.vbsファイルに投げる前に、excelを開き、COMオブジェクトをExcelリファレンスに添付し、以下の記事/コードを読んでテストしてください。ここで

Dim TestServer As OPCServer 
Dim TestGroupCollection As OPCGroups 
Dim WithEvents Group1 As OPCGroup 
Dim ItemCollection1 As OPCItems 

Dim OPCItemIDs() As String 
Dim ClientHandles() As Long 
Dim ReadWriteHandles() As Long 

Dim ItemServerHandles() As Long 
Dim ItemServerErrors() As Long 
Dim RequestedDataTypes As Variant 
Dim AccessPaths As Variant 
Dim MaxItems As Integer 

' Start monitoring the value 
Private Sub StartBtn_Click() 
    Dim ItemTag As String 
    ItemTag = "D57PT201.AI_MEAS" 

    Dim ItemValues() As Variant 
    Dim ItemQualities As Variant 
    Dim ItemTimeStamps As Variant 
    Dim idx As Integer 

    MaxItems = 1 
    ReDim OPCItemIDs(MaxItems) 
    ReDim ClientHandles(MaxItems) 
    ReDim ReadWriteHandles(MaxItems) 

    ' Create connection to the OPC server 
    Set TestServer = CreateObject("Matrikon.OPC.Automation.1") 

    TestServer.Connect "Matrikon.OPC.Simulation.1" 

    ' Create a group to contain the tag 
    Set TestGroupCollection = TestServer.OPCGroups 
    Set Group1 = TestGroupCollection.Add("group1") 
    Group1.ClientHandle = 100 
    Group1.UpdateRate = 1000 

    Set ItemCollection1 = Group1.OPCItems 
    ItemCollection1.DefaultAccessPath = "" 

    ' Add the tag 
    For idx = 1 To MaxItems 
    ClientHandles(idx) = idx 
    OPCItemIDs(idx) = ItemTag 
    Next idx 

    ItemCollection1.AddItems MaxItems, OPCItemIDs, ClientHandles, ItemServerHandles, ItemServerErrors, RequestedDataTypes, AccessPaths 
    MsgBox "Success" 
End Sub 

MATRIKON OPCエンジンと正しく初期化ポーリングセッションの例です:

AutomationException: 0x80070057 - One or more arguments are invalid

+0

Matrimon自体ではありません。しかしOPCDAAuto.dll。ええ、私はVBAでExcelを実行していましたが、コンパイルの必要なしに、スクリプトファイルに収めたいと考えていました。 Powershellはオプションですが、私はPowershellの何も知りません。 OPCにはDLLの.NET実装もありますが、.NETについては何も知らず、仕様を企業メンバーにのみ公開しています。 – mriksman

関連する問題