Ansteuerung von I/O Karten per USB??
-
Hi, habe mich gerade hier auf der Seite registriert und wollte mal fragen ob sich jemand hier mit dem Ansteuern von USB I/O Karten der Firma Quancom auskennt. Die Libery die QLIB habe ich schon in mein Projekt eingebunden, nur gibt es leider keine vernünftige Erklärung im Handbuch wie man die Befehle genau verwendet.
Hoffe ich nerve Euch mit meinem Problem nicht.
So eine Karte hat 8 Relais die ich ansteuern will. Im Handbuch steht als Beispiel für einen Befehl folgendes:
ULONG QAPIExtWriteDO1 (ULONG cardhandle, ULONG channel, ULONG value, ULONG mode);
Hiermit soll man einen 1 Bit Wert übergeben können um die Relais ansteuern zu können. Es geht auch mit einem 8 Bit wert. Mehr steht da leider nicht drin.
Deshalb hoffe ich das mir hier einer helfen kann.Gruß Ronn
-
Probieren
das cardhandle bekommst du sicherlich aus einem OpenCard-Aufruf. channel könnte das relais beschreiben, und value/ mode was damit gemacht werden soll.
Gibt es keine Beispielanwendung?
-
Mmmhh probieren
das versuche ich schon länger, aber ich bekomme es nicht hin. Ja Beispiele gibt es nur es gibt bei diesen wenig Kommentare, was für mich schwierig ist. Leider bin ich kein Profi um progen.
Hier mal ein Beispiel:
#include <windows.h> #include <stdio.h> #include <conio.h> #include "qlib.h" /*===================== Main program ======================*/ void main () { ULONG handle; /*Handle of the USBREL8 if ((handle=QAPIExtOpenCard(USBREL8,0L)) == 0L) { printf("Couldn´t open USBREL8 \n"); return; } for (;;) { if (kbhit() != 0 && getch() == 27) break; QAPIExtWriteDO8(handle,0L,0x00L,0L); Sleep(500); QAPIExtWriteDO8(handle,0L,0xFFL,0L); Sleep(500); QAPIExtWriteDO8(handle,0L,0x55L,0L); Sleep(500); QAPIExtWriteDO8(handle,0L,0xAAL,0L); Sleep(500); } QAPIExtCloseCard(handle); }
Bei diesem Beispiel wird ein 8 Bit Wert übergeben. Ist im Prinzip wohl fast das gleiche wie beim 1Bit.
Der Sinn der If Klause ist nicht so wichtig, nur halt wie ich die Befehle QAPIExtWriteD0O8 verwenden muß. Habe mir schon ein Programm geschrieben, nur es tut sich nix. Die Karte ist vorhanden, das erkennt das Prog. sonst falls nicht bekomme ich eine Meldung (schon getestet).Die Wert sollen wohl alle ULONG Werte sein, mit welchem ich nun ein Relais ansteuere ist mir schleierhaft. Habe schon mal ein paar verschiedene Werte eingesetzt, aber es tut sich nix. Die Karte Funzt aber, gibt noch ein Beispiel Prog. bei dem man jedes Relais einzel per klick steuern kann, nur das ist zu groß ums reinzustellen und für mich zu schwer.
Hoffe Ihr könnt mir weiter helfen.
Gruß Ronn
PS: es sind ein paar Klammerfehler drin, die einfach ignorieren.
-
sieht aus als würde im vorletzten wert jedes der Bits 0..7 eine Relais-Position angeben
einzelne Positionen werden mit (1 << bitposiiton) bestimmt und mit einem bitweisen oder (a | b) kombiniert.
-
Hi,
kann zwar auch nur Annahmen tätigen, aber so wie ich das sehe tut das so:for (;;) { ... }
Das is schlicht und ergreifend eine Endlosschleife, üblicher ist hier:
while (1) { ... }
Die #include "qlib.h" wird wohl die Verbindung zur Karte über USB herstellen und stellt die Methode QAPIExtWriteDO8() zur Verfügung. Evtl, findest du nähere Infos zur Methode in der Headerdatei selbst, schau dir die mal an. Schätzungsweise funzt sie wie folgt:
QAPIExtWriteDO8(handle,0L,0xFFL,0L);
Wie Peterchen schon schrieb: der Vorletzte Wert scheint anzugeben, welche Relais geschaltet sind und welche nicht.
0x steht für Hxadezimale Schreibweise, die folgenden 2 Zahlen bzw. Ziffern sind in binäres Format umgewandelt ein 8 Bit Wert (für deine 8 Relais), dass L ist für den Compiler, sagt ihm, dass es ein ULONG Wert ist.Hexadezimaler Code:
0x00 --> 0000 0000, alle Relais aus
0x55 --> 0101 0101, jedes zweite Relais an
0xFF --> 1111 1111, alle Relais anZu Umrechnung (kann ich au net im Kopf) gibts den Windows Taschenrechner...
QAPIExtCloseCard(handle);
Schließt die Verbindung zur Karte...
Gruß Squeegee
-
He danke für die Annahme, deckt sich zum teil mit meiner. Gut auf den Hex Wert bin ich nicht gekommen. Die Schleifen waren mir auch schon klar, muß ich morgen noch mal probieren mit den HEX Werten.
Gruß Ronn
-
Noch mal danke für Eure Hilfe. Jetzt funzt es.
Gruß Ronn
-
HI,
ich habe jetzt das gleiche Problem, wie du damals. Ich versuche die USBREL8 mit dem Programm wie oben anzusteuern. Was genau hast du denn an dem PRogramm geändert, dass es Funktioniert?
LG Lara
-
sysmelec schrieb:
HI,
ich habe jetzt das gleiche Problem, wie du damals. Ich versuche die USBREL8 mit dem Programm wie oben anzusteuern. Was genau hast du denn an dem PRogramm geändert, dass es Funktioniert?
LG LaraAlso die Funktionen sind auf der HP für meine Begriffe ausreichend dokumentiert. Weiterhin steht da:
Wenn die QLIB V. 1.9.8s installiert wird werden die Beispielprojekte mitinstalliert.
Sollte eine neuere Version installiert werden, so müssen die Beispielprojekte seperat installiert werden. Das etsprechende Installationspaket befindet sich auch auf der CD und heißt QLIB Samples, gefolgt von der Versionsnummer.
Damit sollte man sich anhand der Beispiele orientieren. Was genau geht denn bei dir nicht?