Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Dies ist mein erster Beitrag in diesem Forum und ich versuche mein Problem best möglich zu beschreiben, damit mir hoffentlich effizient geholfen werden kann.
Ich benutze Labview 2010 und möchte die 4xRelais-USB-Karte von Conrad (vgl. Anhang) ansteuern.
Ich würde mich selbst als fortgeschrittenen Anfänger bezeichnen und habe allerhand Dinge ausprobiert. Zu dieser Karte/ diesem Treiber habe ich vom Hersteller "Silicon labs" leider kein fertiges VI finden können.
Also habe ich versucht die Relais mit einem auf Visa-basierenden Labview-Programm anzusteuern. Dabei habe ich mich an den vielen Threads aus diesem Forum und den diversen Beispielen aus Labview selbst (und das tolle Visa-Einführungsvideo von YT) orientiert.
Die einzelnen Paramater wie Baudrate usw. habe ich aus der Dokumentation (393905-up-01-ml-Development_Examples_and_Documentation), die man von Conrad herunterladen kann. Allerdings bezieht sich die Dokumentation ausschließlich auf die herunterladbare dll-Datei und die einzelnen auf C++ basierenden Programmfetzen (Dazu später mehr).
Wenn ich jetzt mit Visa-Write einen Test-String losschicke bekomme ich von Visa-Read keine Antwort und die ausgelesenen Bytes sind Null. Ich habe "Byte at Port" für den Bytecount verwendet. Weil ich Timeout-fehler bekomme, wenn ich eine feste Konstante dafür vorgebe (egal wie groß).
Um zumindest oberflächlich auszuschließen, dass es an meinen rudimentären Visa-Kenntnissen liegt, habe ich mit dem selben Programm einen A/D-Wandler mit serieller USB-Schnittstelle angesteuert.
Hier scheint alles zu funktionieren. Ich kann Strings einlesen und bekomme Strings heraus.
Außerdem habe ich bei der USB-Relais-Karte vor die einzelnen Komponenten auch diverse Delays eingebaut, die aber auch nichts verändert haben. Im MAX wird die Karte zumindest erkannt, allerdings funktioniert das read dort auch nicht.
Jetzt habe ich hier im Forum herausgefunden, dass manche Schnittstellen nicht ohne weiteres mit Visa kooperieren. Also dachte ich mir "auf zur beiliegenden dll-Datei" und in die Materie einlesen. Kleine C++ Kenntnisse besitze ich nämlich, aber als ich die dll-Datei mit zugehörigen Header in Labview eingelesen habe, habe ich 6 VIs erhalten mit denen ich so nichts anfangen kann, da die einzelnen Funktionswerte/Formate usw. noch nicht richtig eingestellt sind.
2 der VIs sind fürs Lesen und Schreiben und brauchen jeweils drei Funktionswerte. (cy handle, mask und latch). Soweit ich das verstanden habe, muss über "cy handle" irgendwie die Verbindung mit der seriellen Schnittstelle erstellt werden, aber in der Dokumentation gibt es nur folgenden C++-Code dafür:
Jetzt weiß ich nicht wie man dies in Labview implementiert und jetzt kommt meine Hauptfrage:
Hat irgendjemand hier schonmal DIESE USB-Relais-Karte von Conrad mit Labview zum laufen gebracht (fertiges VI). Bzw habt ihr ein paar Tipps, wie ich mich jetzt Stück für Stück zur einer Verbindung mit der USB-Karte heranarbeiten kann? (ggf über die dll)
Die diversen Tutorials für das einlesen und verwenden von dll habe ich mir bereits durchgelesen und gesichtet. Die einfachen Beispiele, wie "den Namen des Computers ausgeben lassen", verstehe ich auch ganz gut.
Aber das HANDLE zeug aus der Dokumentation übersteigt bisjetzt mein Wissen.
Mir ist klar, dass ich mit dieser Beschreibung mehrere Baustellen aufmache und entschuldige mich hiermit dafür, dass ich zwei verschiedene Kategorien in einem Thread anspreche.
Ich möchte allerdings beschreiben, welche Wege ich bis wohin versucht habe, um einen besseren Überblick zu erzeugen. Wenn weitere Informationen fehlen oder ich mich an manchen Stellen etwas ungenau ausgedrückt habe lasst es mich wissen.
Und jetzt weitere 1 1/2 Jahre später könnte ich evtl. eine Lösung anbieten (wenn es noch jemanden interessiert).
Die Treiber Datei ins user.lib, darin ist auch ein Beispiel für das Conrad USB Relais enthalten.
Ich bin mir zwar nicht sicher ob der Knoten Close Handle des kernel32.dll im "CP210x Close.vi" so korrekt ist, aber es funktioniert nur so bei mir.
Ich habe sie ausprobiert, und ich gelange immer wieder zu einer Meldung von LabView: "The library selected is not valid for the current platform. For example, you are running 64-bit LabVIEW and the library might be a 32-bit library."
Hast Du eine Idee, was ich da machen kann? Ich benutze 64-bit LabView.
07.02.2018, 13:13 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2018 13:15 von GerdW.)
Ich habe die Bibliothek überarbeitet, die Librarys wurden aktualisiert und die VI's etwas überarbeitet, zudem habe ich die CP210x Treiber für alle aktuellen LabView Versionen (LV 2019 32/64bit, LabViewNXG 3.1) konvertiert.
Ich kann keine Zusicherung für alle Funktionen geben da ich nur die Conrad Ralaiskarte zum testen hier hatte, aber die Ralaisfunktionen gehen und es ist schon mal eine Basis.