- CLSID und IID stimmen.
- Treiber sind Installiert und Registriert.
Habe das Programm mit meinen Code abgeglichen und getestet.
Code: Alles auswählen
;- Konstanten CLSCTX
#CLSCTX_INPROC_SERVER = $1
#CLSCTX_INPROC_HANDLER = $2
#CLSCTX_LOCAL_SERVER = $4
#CLSCTX_REMOTE_SERVER = $10
Interface AdUSB
Scan(Adr)
GetSerialNr(Adr)
GetDeviceType(Adr)
GetError (Adr)
DigIO (Adr,NewValue)
AnalogIO (Adr,Cha,NewValue)
AnalogVoltage (Adr, Cha, NewValue)
ReadAnalogVoltage(DeviceNr, Channel)
ReadDigIn(DeviceNr)
WriteAnalogVoltage(DeviceNr, Channel, Voltage)
WriteDigOut(DeviceNr, Value)
DataIO(DeviceNr)
Close()
EndInterface
;- Structure IID
Structure IID ; Interface Identifier structure. a IID is a 16byte value, that uniquely
Data1.l ; identifys each interface.
Data2.w
Data3.w
Data4.b[8]
EndStructure
Global LastMessage.s
Global LastError.l
; *********************************************************************************************************
Procedure.l CreateUC(MultiByteStr.s)
Protected *MemoryID.l , len1.l, len2.l
len1 = Len(MultiByteStr)
len2 = len1 * 2 + 2
*MemoryID = AllocateMemory(len2)
If MultiByteToWideChar_( #CP_ACP, 0, @MultiByteStr, len1, *MemoryID, len2) = 0
PokeW(*MemoryID, 0)
EndIf
ProcedureReturn *MemoryID
EndProcedure
; *********************************************************************************************************
Procedure FreeUC(*MemoryID)
If *MemoryID
FreeMemory(*MemoryID)
EndIf
EndProcedure
; *********************************************************************************************************
Procedure AdrUC(*MemoryID)
ProcedureReturn *MemoryID
EndProcedure
; *********************************************************************************************************
Procedure.l SetUC(*MemoryID, MultiByteStr.s)
FreeUC(*MemoryID)
CreateUC(MultiByteStr)
EndProcedure
; *********************************************************************************************************
Procedure.l AdUSBConnect()
Protected *Server.AdUSB
Protected r1, Server.s
r1 = CoInitialize_(#Null);
If (r1 <> #S_OK)
If (r1 = #S_FALSE)
LastMessage = "COM Library already initialized"
LastError = r1
Else
LastMessage = "Initialisation of COM Library failed. ErrorCode= " + Hex(r1);
LastError = r1
ProcedureReturn 0
EndIf
EndIf
r1 = CLSIDFromProgID_(CreateUC("ADUSB2XX.ADUSB2XXCtrl.1"), @clsid.IID)
If (r1 <> #S_OK)
LastMessage = "Retrival of CLSID failed: ErrorCode= " + Hex(r1);
LastError = r1
ProcedureReturn 0
EndIf
r1 = CoCreateInstance_(@clsid, #Null, #CLSCTX_LOCAL_SERVER, ?IID_AD_USB2XX, @*Server)
If (r1 <> #S_OK)
LastMessage = "Creation of Server-Object failed: ErrorCode= " + Hex(r1);
LastError = r1
ProcedureReturn 0
Else
LastMessage = "Connect to Server " + Server
LastError = 0
ProcedureReturn *Server
EndIf
EndProcedure
; *********************************************************************************************************
hServer = AdUSBConnect()
Debug LastMessage
DataSection
CLSID_AD_USB2XX: ;{3FA65AAD-3DF5-4D30-8FA7-799205B01C91}
Data.l $3FA65AAD
Data.w $3DF5, $4D30
Data.b $8F , $A7 , $79 , $92 , $05 , $B0 , $1C , $91
IID_AD_USB2XX : ; {279E968D-F134-464E-ACE8-FC0D23958063}
Data.l $279E968D
Data.w $F134, $464E
Data.b $AC , $E8 , $FC , $0D , $23, $95 , $80 , $63
EndDataSection
Mehr weiss ich auch nicht mehr.
