Beim Close() wußte ich keine andere Lösung.
Code: Alles auswählen
;-TOP
; Kommentar : AD_USB2XX Wrapper
; Author: MK-Soft
; Second Author: Falko-Pure
; Datei : AdWrapper.pb
; Version : 1.01
; Erstellt : 05.03.2006
; Geändert : 07.03.2006
; Scan -------------------------------------------------------------------------------------
Procedure.l Scan(*Obj.IDispatch, DeviceNr.w)
Dim Value.Variant(1)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 1
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($01, ?IID_NULL, 0, #DISPATCH_METHOD, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler Scan"
LastError = $80080101
ProcedureReturn 0
Else
ProcedureReturn Result\bool
EndIf
EndProcedure
; GetAnalogVoltage -------------------------------------------------------------------------
Procedure.d GetAnalogVoltage(*obj.IDispatch, DeviceNr.w, Channel.w)
Dim Value.Variant(2)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = Channel
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 2
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0d, ?IID_NULL, 0, #DISPATCH_PROPERTYGET, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler GetAnalogVoltage"
LastError = $8008010d
ProcedureReturn 0
Else
ProcedureReturn Result\dblVal
EndIf
EndProcedure
; SetAnalogVoltage -------------------------------------------------------------------------
Procedure.d SetAnalogVoltage(*Obj.IDispatch, DeviceNr.w,Channel.w, newValue.d)
Dim Value.Variant(3)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = Channel
Value(2)\vt = #VT_R8
Value(2)\dblVal = newValue
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 3
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0d, ?IID_NULL, 0, #DISPATCH_PROPERTYPUT, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler SetAnalogVoltage"
LastError = $8008010d
ProcedureReturn 0
Else
ProcedureReturn newValue
EndIf
EndProcedure
; GetDigIO----------------------------------------------------------------------------------
Procedure.w GetDigIO(*obj.IDispatch, DeviceNr.w)
Dim Value.Variant(1)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 1
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0e, ?IID_NULL, 0, #DISPATCH_METHOD, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler GetDigIO"
LastError = $8008010e
ProcedureReturn 0
Else
ProcedureReturn Result\iVal
EndIf
EndProcedure
; SetDigIO ---------------------------------------------------------------------------------
Procedure.w SetDigIO(*Obj.IDispatch, DeviceNr.w, NewValue.w)
Dim Value.Variant(2)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = NewValue
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 2
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0e, ?IID_NULL, 0, #DISPATCH_PROPERTYPUT, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler SetDigIO"
LastError = $8008010e
ProcedureReturn 0
Else
ProcedureReturn NewValue
EndIf
EndProcedure
; GetAnalogDiffVoltage --------------------------------------------------------------------
Procedure.d GetAnalogDiffVoltage(*obj.IDispatch, DeviceNr.w, Channel.w)
Dim Value.Variant(2)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = Channel
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 2
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($02, ?IID_NULL, 0, #DISPATCH_PROPERTYGET, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler GetAnalogDiffVoltage"
LastError = $80080102
ProcedureReturn 0
Else
ProcedureReturn Result\dblVal
EndIf
EndProcedure
; GetDeviceType ----------------------------------------------------------------------------
Procedure.w GetDeviceType(*Obj.IDispatch, DeviceNr.w)
Dim Value.Variant(1)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 1
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($03, ?IID_NULL, 0, #DISPATCH_METHOD, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler GetDeviceType"
LastError = $80080103
ProcedureReturn 0
Else
ProcedureReturn Result\iVal
EndIf
EndProcedure
; GetError ---------------------------------------------------------------------------------
Procedure.w GetError(*Obj.IDispatch, DeviceNr.w)
Dim Value.Variant(1)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 1
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($04, ?IID_NULL, 0, #DISPATCH_METHOD, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler GetError"
LastError = $80080104
ProcedureReturn 0
Else
ProcedureReturn Result\iVal
EndIf
EndProcedure
; GetSerialNr ------------------------------------------------------------------------------
Procedure.w GetSerialNr(*Obj.IDispatch, DeviceNr.w)
Dim Value.Variant(1)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 1
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($05, ?IID_NULL, 0, #DISPATCH_METHOD, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler GetSerialNr"
LastError = $80080105
ProcedureReturn 0
Else
ProcedureReturn Result\iVal
EndIf
EndProcedure
; GetAnalogIO ------------------------------------------------------------------------------
Procedure.l GetAnalogIO(*obj.IDispatch, DeviceNr.w, Channel.w)
Dim Value.Variant(2)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = Channel
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 2
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0f, ?IID_NULL, 0, #DISPATCH_PROPERTYGET, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler GetAnalogIO"
LastError = $8008010f
ProcedureReturn 0
Else
ProcedureReturn Result\lVal
EndIf
EndProcedure
; SetAnalogIO ------------------------------------------------------------------------------
Procedure.l SetAnalogIO(*Obj.IDispatch, DeviceNr.w,Channel.w, NewValue.l)
Dim Value.Variant(3)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = Channel
Value(2)\vt = #VT_I4
Value(2)\lVal = NewValue
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 3
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0f, ?IID_NULL, 0, #DISPATCH_PROPERTYPUT, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler SetAnalogIO"
LastError = $8008010f
ProcedureReturn 0
Else
ProcedureReturn NewValue
EndIf
EndProcedure
; EnableCalibration -------------------------------------------------------------------------
Procedure.s EnableCalibration(*Obj.IDispatch, Password.s)
Dim Value.Variant(1)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\bstrVal = *Password
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 1
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($06, ?IID_NULL, 0, #DISPATCH_METHOD, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler EnableCalibration"
LastError = $80080106
ProcedureReturn "0"
Else
ProcedureReturn Password
EndIf
EndProcedure
; GetCalibration ---------------------------------------------------------------------------
Procedure.l GetCalibration(*obj.IDispatch, DeviceNr.w, IO.w,Level.w,Channel.w)
Dim Value.Variant(4)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = IO
Value(2)\vt= #VT_I2
Value(2)\iVal=Level
Value(3)\vt= #VT_I2
Value(3)\iVal=Channel
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 4
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($10, ?IID_NULL, 0, #DISPATCH_PROPERTYGET, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler GetCalibration"
LastError = $80080110
ProcedureReturn 0
Else
ProcedureReturn Result\lVal
EndIf
EndProcedure
; SetCalibration ---------------------------------------------------------------------------
Procedure.l SetCalibration(*Obj.IDispatch, DeviceNr.w,IO.w, Level.w, Channel.w, NewValue.l)
Dim Value.Variant(5)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = IO
Value(2)\vt = #VT_I2
Value(2)\iVal = Level
Value(3)\vt = #VT_I2
Value(3)\iVal = Channel
Value(4)\vt = #VT_I4
Value(4)\lVal = NewValue
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 5
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($10, ?IID_NULL, 0, #DISPATCH_PROPERTYPUT, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "SetCalibration"
LastError = $80080110
ProcedureReturn 0
Else
ProcedureReturn NewValue
EndIf
EndProcedure
; SetSerialNr ------------------------------------------------------------------------------
Procedure.w SetSerialNr(*Obj.IDispatch, DeviceNr.w, NewValue.w)
Dim Value.Variant(2)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = NewValue
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 2
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($11, ?IID_NULL, 0, #DISPATCH_PROPERTYPUT, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler SetSerialNr"
LastError = $80080111
ProcedureReturn 0
Else
ProcedureReturn NewValue
EndIf
EndProcedure
; ReadAnalogVoltage -----------------------------------------------------------------------
Procedure.d ReadAnalogVoltage(*obj.IDispatch, DeviceNr.w,Channel.w)
Dim Value.Variant(2)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = Channel
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 2
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($07, ?IID_NULL, 0, #DISPATCH_PROPERTYGET, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler ReadAnalogVoltage"
LastError = $80080107
ProcedureReturn 0
Else
ProcedureReturn Result\dblVal
EndIf
EndProcedure
; WriteAnalogVoltage ----------------------------------------------------------------------
Procedure.d WriteAnalogVoltage(*Obj.IDispatch, DeviceNr.w,Channel.w, Value.d)
Dim Value.Variant(3)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = Channel
Value(2)\vt = #VT_I2
Value(2)\dblVal = Value
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 3
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($08, ?IID_NULL, 0, #DISPATCH_PROPERTYPUT, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler WriteAnalogVoltage"
LastError = $80080108
ProcedureReturn 0
Else
ProcedureReturn Value
EndIf
EndProcedure
; ReadDigIn -------------------------------------------------------------------------------
Procedure.w ReadDigIn(*obj.IDispatch, DeviceNr.w)
Dim Value.Variant(1)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 1
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($09, ?IID_NULL, 0, #DISPATCH_PROPERTYGET, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler ReadDigIn"
LastError = $80080109
ProcedureReturn 0
Else
ProcedureReturn Result\iVal
EndIf
EndProcedure
; WriteDigOut -----------------------------------------------------------------------------
Procedure.w WriteDigOut(*Obj.IDispatch, DeviceNr.w,Value.w)
Dim Value.Variant(2)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
Value(1)\vt = #VT_I2
Value(1)\iVal = Value
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 2
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0a, ?IID_NULL, 0, #DISPATCH_PROPERTYPUT, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler WriteDigOut"
LastError = $8008010a
ProcedureReturn 0
Else
ProcedureReturn Value
EndIf
EndProcedure
; DataIO ----------------------------------------------------------------------------------
Procedure.b DataIO(*Obj.IDispatch, DeviceNr.w)
Dim Value.Variant(1)
Result.Variant\vt = #VT_EMPTY
Value(0)\vt = #VT_I2
Value(0)\iVal = DeviceNr
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 1
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0b, ?IID_NULL, 0, #DISPATCH_METHOD, @parms, @Result, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler DataIO"
LastError = $8008010b
ProcedureReturn 0
Else
ProcedureReturn Result\bVal
EndIf
EndProcedure
;Close ----------------------------------------------------------------------------------
Procedure.b Close(*Obj.IDispatch)
Dim Value.Variant(0)
Result.Variant\vt = #VT_EMPTY
parms.DISPPARAMS
With parms
\rgvarg = @Value(0)
\rgdispidNamedArgs = 0
\cArgs = 0
\cNamedArgs = 0
EndWith
r1 = *Obj\Invoke($0c, ?IID_NULL, 0, #DISPATCH_METHOD, @parms, 0, 0, 0)
If r1 <> #S_OK
LastMessage = "Fehler Close"
LastError = $8008010c
ProcedureReturn 0
Else
ProcedureReturn 1
EndIf
EndProcedure