Seite 3 von 4

Verfasst: 18.12.2005 02:54
von Unimatrix Zero
Kaeru Gaman hat geschrieben:Ein anständiges Tut für die Nutzung von Interfaces würde da schon einiges helfen...
Gute Idee :allright:

Verfasst: 18.12.2005 03:04
von MVXA
Ein Interface ist nichts weiter als eine Maske für einen Speicherbereich
bestückt mit Pointern zu Funktionen :freak:.

Verfasst: 18.12.2005 03:17
von Unimatrix Zero
Gibts da im IN irgendwo eine Erklärung mit der ein Anfänger wie ich was anfangen könnte?
Mit Interfaces hatte ich bisher noch nie wirklich was zu tun.

Verfasst: 18.12.2005 03:29
von Falko
MVXA hat geschrieben:Ein Interface ist nichts weiter als eine Maske für einen Speicherbereich
bestückt mit Pointern zu Funktionen :freak:.
Na dann, erklär mal. Ich würde mich auch sehr gerne dafür interessieren.
Ein Interface mit Objekten über eine AD_USB2XX.OCX habe ich ja schon, die sich aber nicht über den Interfacegenerator, ausser einen auskommentierten Text, auslesen lässt.

DarkDragon hat sie schon gesehen :mrgreen:

Dazu, habe ich eine Beschreibung in Textform, die ich gleich mal hier poste.
Ich habe sogar den Hersteller zur Hardware angeschrieben, ob man nicht über die DLL direkt das progen könne. Da bekam ich nocheinmal die OCX mit der Readme.TXT geschickt.
:freak:
Beschreibung des Steuerelementes AD_USB.OCX
===========================================

Bei der Installation von Monitor wird auf Ihrem System
automatisch ein ActiveX-Steuerelement installiert und registriert,
mit dem Sie mit selbst entwickelter Software auf des Gerät zugreifen
können.
Dieses Steuerlement beinhaltet auch den Windows-Treiber, der WDM-
konform für die Betriebssysteme Win98 und Win2000 realisiert ist.

Dieses Steuerelement kann in Ihren eigenen Programmen benutzt werden.
Das Steuelement wurde in VC++ Version 6 entwickelt, und kann in allen
Entwicklungsumgebungen eingesetzt werden, die Steuerelemente
unterstützen.

Beschreibung der Methoden und Eigenschaften
===========================================

1. BOOL Scan (short Adr)
Mit der Methode Scan kann ermittelt werden, ob ein AD-USB am
PC angeschlossen ist. Es wird nach dem Gerät mit der überge-
benen Adresse gesucht. Der zulässige Bereich für Adr liegt
zwischen 0 und 126. Wird ein Gerät unter dieser Adr gefunden
liefert die Methode TRUE. Mit Scan können auch mehrere AD-USBs
am PC lokalisiert werden. Diese Methode muß immer zuerst benutzt
werden, bevor mit einem Gerät kommuniziert werden kann.
Bei allen nachfolgenden Methoden und Eigenschaften muß die Adresse
des Gerätes als 1. Parameter übergeben werden.

2. short GetSerialNr (short Adr)
Mit dieser Methode können Geräte identifiziert werden, falls
mehrere Geräte gleichzeitig am PC betrieben werden. Die Geräte
müssen vorher mit Scan gefunden worden sein.

3. short GetDeviceType (short Adr)
Mit dieser Methode kann unterschieden werden, welcher Gerätetyp
unter übergebener Adr gefunden wurde. Rückgaben 1 oder 2.

4. BOOL GetError (short Adr)
Nach jeder Kommunikation mit dem AD-USB kann überprüft werden,
ob die Kommunikation erfolgreich war. Liefert diese Methode die
Rückgabe TRUE, so liegt eine Kommunikationsstörung zwischen Gerät
und PC vor.

5. short DigIO (short Adr, short NewValue)
Übermittelt die Signalzustände der digitalen Ein-/Ausgänge als
short zwischen PC und AD-USB.

6. long AnalogIO (short Adr, short Cha, long NewValue)
Übermittelt die Signalzustände der analogen Ein-/Ausgänge als
long zwischen PC und AD-USB. Cha ist die Kanalnummer und muß bei
den analogen Eingängen zwischen 0 und 7 liegen, bei den analogen
Ausgängen 0 oder 1.

Meßwert Ergebnis AD-USB 3
10V ca. 4000
0V 2048
-10V ca. 100


7. double AnalogVoltage (short Adr, short Cha, double NewValue)
Um sich die Unterscheidung der Gerätevarianten zu erleichtern und den
Spannungswert der Ein- und Ausgänge direkt in Volt bearbeiten kann diese
Eigenschaft benutzt werden. Sie arbeitet identisch zu AnalogIO, aber die
Ein-/Ausgangswerte werden als double-Wert direkt in Volt ausgetauscht.

8. double ReadAnalogVoltage(short DeviceNr, short Channel)
Liest den Eingangskanal aus dem Steuerelement (nicht aus dem AD-USB),
ohne einen Datenaustausch mit dem AD-USB durchzuführen. Diese Methode
empfielt sich um nach dem Aufruf von DataIO (siehe unten) die Werte
möglichst schnell einzulesen.

9. short ReadDigIn(short DeviceNr)
Liest die digitalen Eingangskanäle aus dem Steuerelement (nicht aus dem AD-USB),
ohne einen Datenaustausch mit dem AD-USB durchzuführen. Diese Methode
empfielt sich um nach dem Aufruf von DataIO (siehe unten) die Werte
möglichst schnell einzulesen.

10. void WriteAnalogVoltage(short DeviceNr, short Channel, double Voltage)
Schreibt einen Ausgangswert in das Steuerelement. Der Wert wird nur im
Steuerelement gespeichert, nicht an das AD-USB übertragen. Beim nächsten
Aufruf von DataIO wird der Wert am Analogausgang des Gerätes sichtbar.

11. void WriteDigOut(short DeviceNr, short Value)
Schreibt die digitalen Ausgangswerte in das Steuerelement. Der Wert wird nur im
Steuerelement gespeichert, nicht an das AD-USB übertragen. Beim nächsten
Aufruf von DataIO wird der Wert an den digitalen Ausgängen des Gerätes sichtbar.

12. void DataIO(short DeviceNr)
Es wird ein kompletter Datenaustausch zwischen dem PC und dem AD-USB
durchgeführt. Die Daten, die mit den Methoden 10 und 11 vorher in dem
Steuerelement gespeichert wurden, werden zum Gerät übermittelt. Gleichzeitig
erhält der PC mit dem Datenaustausch alle Eingangswerte des Gerätes. Diese
Werte sind dann mit den Methoden 8 und 9 aus dem Steuerlement entnehmbar, ohne
einen weiteren Austausch durchzuführen.
Um möglichst hohe Datendurchsätze zu erzielen, empfielt es sich die Methoden
8 bis 10 zu verwenden.

13. void Close (void)
Die Verbindung zu allen geöffneten Geräten wird geschlossen.
Ich vermute mal, das sind die Methoden und Objekte zur OCX.

Und wie geht es dann weiter? Z.B. so?

Code: Alles auswählen

Interface Ad_USB 
  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
Danach habe ich irgendwo gelesen mit cocreate... oder ähnlich.
Achja, die OCX ist durch das Setup ins System eingebunden. Wo bzw. welche Werte muss man da jetzt für die CSLID suchen?

Und da hört das Wissen was man sich im alten Archiv durchlesen konnte wieder auf. Ein richtiges Tut wäre echt schön, damit man anhand eines Beispiels sowas nachmachen könnte. Also ich würde mich freuen, wenn ich dieses ActiveX-Steuerung in Pb benutzen könnte.
Doch leider habe ich keinen gefunden, der mir weiterhelfen kann.

Im OLE/COM-Viewer der SDK sieht das sehr schön aus. Man findet dort alles schön grafisch aufgelistet über diese OCX wieder.
Vielleicht wäre es in naher Zukunft über den Visualdesigner möglich dort Steuercontrols, die in Windows angemeldet wurden auch in einen PB-source umzuwandeln so das man sie nutzen kann. :allright:

Gruss Falko

Verfasst: 18.12.2005 03:40
von Unimatrix Zero
Hi Falko,

dann könnte wir auch mal wieder das Projekt mit Excel aufnehmen ;) .

Verfasst: 18.12.2005 04:48
von Falko
Hi Unimatrix Zero,

stimmt genau :wink: . Wie du siehst, das ist auch sehr lange her, wo wir hier beide mal darüber diskutiert hatten, aber leider gescheitert waren, mangels PB-Möglichkeiten die so einfach sein könnten wie z.B. VCC oder VBA, wenn z.B. der VD dort angesetzt hätte. Also ähnlich wie der Ole-Com-Viewer die passenden Einträge anbietet, die dann als Interfaces und generierten Source dieser Objekte und Methoden, die ja vorgegeben sind, einzubauen. :wink:

Zwar ist das Fantasie, aber es wäre doch eine Überlegung wert.

MfG Falko

Verfasst: 18.12.2005 13:58
von PAMKKKKK
[Ontopic]
Ich nutze PB auch für keinere Tools ohne aufw[e|ä]ndige Oberflächen und ohne COM/ActiveX - Nutzung.
Keine Spiele
[/Ontopic]

[Offtopic]
PB muss nicht unbedingt zur OOP sprache mutieren. Die schnittstelle zu Objekten muss aber viel besser werden!
(siehe Falkos Problem)
Visual Basic ist ja auch keine OOP sprache, man kann damit aber Prima Objekte nutzen.
[/Offtopic]

Verfasst: 19.12.2005 16:45
von Kaeru Gaman
PAMKKKKK hat geschrieben:PB muss nicht unbedingt zur OOP sprache mutieren. Die schnittstelle zu Objekten muss aber viel besser werden!
(siehe Falkos Problem)
Visual Basic ist ja auch keine OOP sprache, man kann damit aber Prima Objekte nutzen.
full ack!

Verfasst: 19.12.2005 22:09
von PAMKKKKK
Kaeru Gaman hat geschrieben:
PAMKKKKK hat geschrieben:PB muss nicht unbedingt zur OOP sprache mutieren. Die schnittstelle zu Objekten muss aber viel besser werden!
(siehe Falkos Problem)
Visual Basic ist ja auch keine OOP sprache, man kann damit aber Prima Objekte nutzen.
full ack!
Tja kurz knapp und ....Was meint der kerl da doch noch gleich ?? Ach..... bestimmt nichts wichtiges, sonst würde er ja mehr schreiben!? :?

Verfasst: 19.12.2005 22:11
von Programie
Ich verwende PB zum Programmieren von normalen Programmen (Browser, Editor, etc.) :lol: