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 :wink:

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 :oops:

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 :wink: .

Viele Grüsse Falko