Seite 2 von 12
Verfasst: 19.02.2006 18:46
von mk-soft
Hi,
Bei COM objeken mußt du den Result anders vergleichen
Code: Alles auswählen
Result = CoCreateInstance_(?CLSID_AD_USB2XX,0,1,?IID_AD_USB2XX,@object.AdUSB)
If Result = #S_OK
Endif
Denn #S_OK ist Gleich Null
Habe denn Code Etwas geändert
Code: Alles auswählen
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
If CoInitialize_(0) <> #S_OK
MessageRequester("Error","Dat will wohl net")
End
EndIf
Result = CoCreateInstance_(?CLSID_AD_USB2XX,0,1,?IID_AD_USB2XX,@object.AdUSB)
If Result = #S_OK
For i= 0 To 126
Debug object\scan(i)
Debug object\GetSerialNr(i)
Debug i
Next i
Debug object\GetError(0)
Else
MessageRequester("Error","Dat will wohl net " + Hex(Result))
Debug Hex(result)
EndIf
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
Bekomme den Fehlercode 80040154 zurück
Nach MSDN auszug:
the 80040154 error indicates REGDB_E_CLASSNOTREG, or "class not registered."
FF

Verfasst: 19.02.2006 19:16
von Falko
Ist ja nicht einfach zu verstehen. Vorallem wenn man ein Modul, eine OCX und nur die Befehlsbeschreibung dazu hat und dieses nicht einzueins in PB benutzen kann.
Ich danke dir schonmal für die Hilfe. Man, wär ich froh, wenn ich mit dem Modul etwas messen könnte bzw. es in meine weiteren PB-Programme einbinden könnte. Doch leider erhalte ich auch eine Fehlermeldung, die etwas anders ist: 80004002. In der Googlesuche habe ich dazu folgendes gefunden.
In diesem Szenario schlägt die Interface Methode für die ITransactionOptions-Schnittstelle einen E_NOINTERFACE-Fehler 80004002 fehl und Sie erhalten einen E_NOINTERFACE-Fehler 80004002.
http://support.microsoft.com/default.as ... e%3B900464
Irgendwie ist dieses OCX-Control verhext
Viele Grüße Falko
Verfasst: 19.02.2006 19:59
von mk-soft
Standard COM Errors
S_OK 00000000 The standard return value used to communicate successful completion.
S_FALSE 00000001 An alternate success value, typically used to communicate successful, but non-standard completion. The precise meaning depends on the method or property in question.
E_UNEXPECTED 8000FFFF Catastrophic failure error.
E_NOTIMPL 80004001 Not implemented error.
E_OUTOFMEMORY 8007000E Out of memory error.
E_INVALIDARG 80070057 One or more arguments are not valid error.
E_NOINTERFACE 80004002 Interface not supported error.
E_POINTER 80004003 Pointer not valid error.
E_HANDLE 80070006 Handle not valid error.
E_ABORT 80004004 Operation aborted error.
E_FAIL 80004005 Unspecified error.
E_ACCESSDENIED 80070005 General access denied error.
Habe ein Link
http://support.microsoft.com/default.as ... e%3B148373
Verfasst: 19.02.2006 20:22
von Falko
Dann kann ich davon ausgehen, daß das Interface entweder von PB nicht
unterstützt wird, oder evt. noch was hier falsch ist?
Verfasst: 19.02.2006 20:28
von mk-soft
An PB liegt es nicht. Habe schon COM Anwendungengeschrieben.
Entweder ist bei der Installation des USB gerät etwas fehlgelaufen oder im Interface, Datasection bedindet sich noch ein fehler.
Schick mir doch mal eine beschreibung an meine Mail.
Verfasst: 19.02.2006 20:41
von mk-soft
Habe bei mir noch etwas gewült
Code: Alles auswählen
;- Konstanten CLSCTX
#CLSCTX_INPROC_SERVER = $1
#CLSCTX_INPROC_HANDLER = $2
#CLSCTX_LOCAL_SERVER = $4
#CLSCTX_REMOTE_SERVER = $10
#CLSCTX_ALL = $17 ;#CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER
Verwende mal Local_Server
CoCreateInstance_(@clsid, #Null, #CLSCTX_LOCAL_SERVER, ...
Verfasst: 19.02.2006 20:44
von Falko
Bei der Installation glaube ich nicht. Es gab schon mal eine ältere Version davon (V1.15) die von Abbacom.de in Profilab verwendet wird. Leider habe ich eine neuere Version V2.00, die wohl anders funktioniert.
Mit Profilabexpert konnte ich das ActiveX-Control auch nicht ansprechen. Wohl aber mit dem beiliegenden Programm Monitor, welches wohl in VB geschrieben wurde.
Hab dir mal was zugeschickt. Nicht wundern, wenn es soviel MB sind. Ich hoffe dein Postfach kommt damit klar.
MfG Falko
Verfasst: 19.02.2006 20:49
von mk-soft
Mein Postfach ist Gross genug.
Habe noch ein fehler gefunden. Man bekommt bei CoCreateInstance einPointer zurück.
Teste mal die änderung.
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
If CoInitialize_(0) <> #S_OK
MessageRequester("Error","CoInitalize")
End
EndIf
Result = CoCreateInstance_(?CLSID_AD_USB2XX,#Null,#CLSCTX_LOCAL_SERVER,?IID_AD_USB2XX,@*object.AdUSB)
If Result = #S_OK
For i= 0 To 126
Debug *object\scan(i)
Debug *object\GetSerialNr(i)
Debug i
Next i
Debug *object\GetError(0)
Else
MessageRequester("Error","Dat will wohl net " + Hex(Result))
Debug Hex(result)
EndIf
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
Verfasst: 19.02.2006 20:52
von Falko
Gut mit deinem Postfach.
Hier jetzt ein anderer Fehlercode: 80070005 nach dem letzten Source.
MfG Falko
Verfasst: 19.02.2006 21:12
von Falko
Ich hoffe die komplette Mail ist bei dir eingetroffen.
Habe noch mal alles deinstalliert und den Treiber sowie das Monitorprogramm, welches mit VB geschrieben wurde installiert.
Das Monitorprogramm funktioniert einwandfrei.
Ich habe auch ein sehr gutes Programm von abacom-online.de ,
welches sich ProfilabExpert 3.0 nennt. Das funktionierte damit auch nicht, obwohl es das Voltcraft AD-USB 4 unterstützen sollte. Hatte denen auch eine Mail geschickt und die meinten der Treiber sei nicht in Ordnung. Auch die warten auf eine Antwort auf den Programmierer.
Habe beide angeschrieben und erhalte von denen keine Antwort. Solangsam bin ich darüber enttäuscht, das man soeine teuere Hardware
kauft, die angeblich mit jedem beliebigen Compiler unterstützt werden sollte und doch nicht geht.
Hoffentlich findest du eine gute Lösung, wenn überhaupt möglich

.
Viele Grüsse Falko