OCX und das, mit dem Cocreate usw.

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Habe das ganze noch einmal getestet.
- 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
Bekomme immer noch einen Fehler. Muss eindeutig am OCX liegen.

Mehr weiss ich auch nicht mehr. :|
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Hast Recht, es ist immer noch der selbe Fehler vorhanden.

Creation of Server-Object failed: ErrorCode= 80070005


Ich habe auch das Gefühl, das es an der OCX liegen muss. Mal schauen,
ich habe von der Fa. Abacom noch eine ältere Version bekommen V. 1.51, die bei dessen Programm laufen soll, aber irgendwie zu meinem Modul wohl nicht kompatibel ist. Denn das funktioniert dann nur als
AD-USB 3 und das hat einen DA/AD von nur 12Bit Auflösung.

Ich danke dir aber trotzdem für die Mühe und Hilfe, das du dir die
Zeit für mich genommen hast.

Ich hoffe, ich kann dir irgendwann entgegenkommen :allright:

[Edit]
Wenn das der Fehlercode ist, dann ist es ein Verbotener Zugriff. Vielleicht
muss ich da noch was in Windows ändern.
Code Error 80070005 - Access Denied

Habe ich hier auf dieser Seite gefunden.
http://www.computerperformance.co.uk/Lo ... y_Norbert_

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

An der Berechtigung liegt es nicht. Nachdem ich die Treiber in das System32 Verzeichnis kopiert habe und die xxx.inf aufgerufen habe ist der Treiber bereit. Aber das Objekt aus den OCX kann nicht angelegt werden. FehlerCode 80040154 (Class not Registriert). Habe danch noch einmal von Hand das OCX registriert. "regsvr32 AD_USB2XX.OCX". Das OCX wurde erfolgreich registriert aber immer noch das gleiche ergebnis. Das OCX scheint nur mit VB zu Funktionieren, was aber nicht in Ordnung ist.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Den gleichen Fehler erhalte ich, wenn ich das Modul nicht gesteckt habe. Wenn es aber gesteckt ist, dann erhalte ich den Fehler

Creation of Server-Object failed: ErrorCode= 80070005


Ich habe heute morgen den Programmierer noch eine Mail geschrieben.
Die Antwort von ihm war dann folgende.
Friedrich Lorenz hat geschrieben:Sehr geehrter H. XXX,

die OCX-Datei wurde mit Visual C von Microsoft mit den neuesten Updates
entwickelt.
Ich kenne Anwender die über diese Datei da Gerät in den
Programmierumbegungen ansprechen:
- VB
-VC
- Delphi
- LabView
- C vom National Instruments
- Excel
- Access
Diese Anwender haben keine Probleme damit. Vielleicht liegt Ihr Problem
nicht in der OCX,
sondern am Betreiber.

Mit freundlichen Grüßen
Friedrich Lorenz
Also liegt es am Betreiber, der mit Purebasic diese OCX ansprechen will. :roll:

Achja, ich habe noch den IIS nachinstalliert, weil ich meinte, es könnte wegen dem Serverzugriff damit zu tun haben. Aber ich erhalte den gleichen Fehler, wie oben.

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Lade dir mal die COMlib aXend herrunter.
http://www.purearea.net/pb/download/use ... lg damit.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Danke, die hatte ich schon drauf (PB3.94) und damit geht es leider nicht. Die comblib musste ich dann aber auch rausnehmen wegen DroopyLib. Die Variants-Resident habe ich gelassen.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Falko hat geschrieben:Die comblib musste ich dann aber auch rausnehmen wegen DroopyLib.
Aha :mrgreen: , vielleicht ist die comblib ja bald in droopylib drin, den source wird er wohl noch finden :mrgreen:

Diverse IDs darfste auch nicht verwenden, die verwendet die Lib bereits, zum Beispiel OpenLibrary(1 usw. Am besten man schreibt sich mal ein Buch, was
mit der Lib dann nicht geht oder man nicht benutzen sollte.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

ts-soft hat geschrieben:
Falko hat geschrieben:Die comblib musste ich dann aber auch rausnehmen wegen DroopyLib.
Aha :mrgreen: , vielleicht ist die comblib ja bald in droopylib drin, den source wird er wohl noch finden :mrgreen:

Diverse IDs darfste auch nicht verwenden, die verwendet die Lib bereits, zum Beispiel OpenLibrary(1 usw. Am besten man schreibt sich mal ein Buch, was
mit der Lib dann nicht geht oder man nicht benutzen sollte.
Ah, hast schon ausprobiert :mrgreen: :mrgreen: . Dann wusstest du schon das die im Zusammenhang mit der Droopy-Lib nicht funst. :mrgreen:


MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich hab nur gemerkt, das die in der Lib verwendeten Sources, nicht optimal für eine Lib angepasst wurden. Einige Namen sind zu allgemein, #PB_Any wird nicht durchgehend verwendet, und es wurde nicht versucht, die Unabhängikeit von PB-Libs so gering als möglich zu halten (z.B. LoadLibrary_ anstatt OpenLibrary)
Ich nutze nur den Source der Lib, ist schön Dokumentiert :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

ts-soft hat geschrieben:... Ich nutze nur den Source der Lib, ist schön Dokumentiert :mrgreen:
:mrgreen:

Aber trotzdem wird der gute Herr Lorenz keine Abweichung von seinem
OCX-Kram schicken, die das Modul AD-USB 4, welches jetzt auch nicht
mehr in der Conrad-Produktpallette mehr vorhanden ist.

Ich hatte ihm danach wieder eine Mail geschrieben, ob er nicht eine
Standard-DLL compilieren könne.

Keine Antwort ist auch eine Antwort. Komische Developement-Firma, die
sich Lorenz GmbH schimpft. Sucht man in google nach dieser,
findet man alles Andere als diese. Eine Suche nach einer Homepage von denen, mit ihrer Software bzw. aktuellen Updates etc. ist vergeblich.

Das wahr wohl leider ein Fehlkauf. Mit Meilhaus.de wäre es kein Problem gewesen, da diese Library, die sich universal-Library nennt, leicht über PB
anzusprechen ist. Diese kann ich jeden wärmstens empfehlen.

Falls jemand es nur per Software testen möchte kann über ein Demoboard alles über die Library, welche sich InstaCall befindet, ausprobieren! Die Universallibrary wird damit auch installiert und die Beschreibung dazu ist hier zu bekommen.

ftp://ftp.measurementcomputing.com/down ... ical32.exe

und hier die Referenz.

Ich verstehe nur nicht, warum die dann noch die Unilib extra verkaufen, wenn man hiermit alles downloaden kann :mrgreen:

http://www.measurementcomputing.com/PDF ... ctions.pdf

http://www.measurementcomputing.com/PDF ... -guide.pdf

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten