Erstellen einer Benutzeroberfläche für ein DMM der Marke Uni T UT804 inkl Steuerung - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA) +---- Thema: Erstellen einer Benutzeroberfläche für ein DMM der Marke Uni T UT804 inkl Steuerung (/Thread-Erstellen-einer-Benutzeroberflaeche-fuer-ein-DMM-der-Marke-Uni-T-UT804-inkl-Steuerung) |
RE: Erstellen einer Benutzeroberfläche für ein DMM der Marke Uni T UT804 inkl Steuerung - SantaKrass - 18.02.2012 14:02 Guten Tag die Herren, so ich bin bei meinem Projekt schon etwas weiter gekommen.... nun folgendes: ich habe ein grundlegendes Verständnisproblem bei der Kommunikation mit einem USB-RAW Gerät über NI VISA. Ich habe nach einem Tutorial eine .inf Datei erstellt. Diese korrekt installiert und bekomme mein Gerät auch in einem LabView VI ausgewählt. Nun das DMM schickt mir ASCII Codes. Diese möchte ich mit LabView einlesen und anschließend weiterverarbeiten. Nur wenn ich mit VISA READ arbeite bekomme ich generell eine Fehlermeldung und wie ich mit den USB VISA Elementen umgehe habe ich absolut keine Ahnung, hoffe mir kann da jemand der Guru´s weiterhelfen. RE: Erstellen einer Benutzeroberfläche für ein DMM der Marke Uni T UT804 inkl Steuerung - GerdW - 19.02.2012 18:15 Hallo Santa, schauen wir uns mal dein VI an: [attachment=38713] Was ist daran so alles falsch? - Du nutzt eine While-Schleife mit autoindizierendem Eingang. Je nachdem, wieviele Devices bei dir über VISA verwaltet werden, ist also nach evtl. 200ms nichts sinnvolles mehr vom VI zu erwarten. - Du öffnest in jeder Iteration einen VISA-Port, den du nirgends schließt. - Du fragst direkt nach dem Port-Öffnen die Anazhl der gelesenen Bytes ab. Viel mehr als 1 oder 2 Bytes würde ich da nicht erwarten... - Wozu fragst du die Byteanzahl ab, wenn du dann doch 11 Bytes lesen willst? - Du wandelst den String explizit in ein Array - wozu? - Wozu nutzt du eine Schleife, wenn dich (mangels Autoindizierung) nur der letzte gelesene Wert interessiert? (Mehr kommt in deinem "Array" auch nicht an...) - Du lässt dir die Baudrate anzeigen - wozu? Das Gerät wird die nicht selbst setzen, dass musst du erledigen... - Ein Klick auf den Aufräumknopf vor dem Posten hätte auch nicht geschadet... Hast du dir mal einen der vielen Threads zum Thema "Serielle Schnittstellen" durchgelesen? Lucki hat da schon des öfteren gute Erläuterungen geschrieben... RE: Erstellen einer Benutzeroberfläche für ein DMM der Marke Uni T UT804 inkl Steuerung - SantaKrass - 20.02.2012 10:42 (19.02.2012 18:15 )GerdW schrieb: Hallo Santa, Guten Tag GerdW, danke für deinen Post. Wie du siehst bin ich noch am lernen, wie die Programmierung über LabView geht. Du hast recht, habe einen Port bei jeder Iteration geöffnet und nicht geschlossen, da der "Close" Befehl außerhalb der Schleife ist. Ich habe mit einem Programm (Termite) herausgefunden, dass das DMM mir 11 Bytes pro Paket sendet. Diese wollte ich eigentlich in einem Array abspeichern und dann weiterverarbeiten. Deshalb sollte der String in ein Array umgewandelt werden. Ist meine Denkens weise so falsch ? Die Baudrate war "Schwachsinn" an dieser Stelle, wollte schauen ob mir die das DMM auch übergibt. Ich möchte derzeit nur, das ich den ASCII Code des DMM´s in Labview übertragen bekomme und abspeichern kann. Nur wird mein DMM in LabView als RAW Gerät angezeigt und ich weiß noch nicht so recht wie ich das Programmieren muss. Bzw. wie ich an diese Problematik herangehen muss. Werde das nächste mal den Besen benutzen, hatte mit ihm nur schlechte Erfahrungen gemacht..... RE: Erstellen einer Benutzeroberfläche für ein DMM der Marke Uni T UT804 inkl Steuerung - SantaKrass - 20.02.2012 11:03 Was ich vergessen habe, so wird meine Schnittstelle angegeben, vielleicht Hilft das : USB0::0x1A86::0xE008::NI-VISA-40002::RAW RE: Erstellen einer Benutzeroberfläche für ein DMM der Marke Uni T UT804 inkl Steuerung - rolfk - 13.03.2012 12:17 (27.01.2012 10:46 )SantaKrass schrieb: Hallo, So etwas gibt es meines Wissens nicht und dürfte beinahe unmöglich sein zu machen. Stell es Dir so vor: USB Raw ist die unterste Ebene. Hier gibt es Endpoints und Controlchannels über die man Bytes verschicken und lesen kann. Was diese Bytes bedeuten ist nicht festgelegt sondern Bestandteil der höher liegenden USB Protokolle. USB COMM ist eine Device Klasse die ein serielles Gerät implememtiert und gewisse Endpoint Addressen und Controlcodes definiert um so Dinge wie Handshaking und bidirektionele Datenübertragung mit einem Datenkanal machen zu können. Windows (und alle anderen modernen Betriebssysteme) hat einen Treiber der so eine Device Klasse in einen virtuellen COM Port umsetzt. USB HID ist eine ziemlich einfache Device Klasse. Die ist ein wenig mehr restriktiv als USB Raw, aber was die Bytes genau bedeuten ist da noch nicht festgelegt. Das bestimmt die Unterklasse Maus, Keyboard, Joystick, etc genauer, aber jeder Hersteller ist frei um dabei Erweiterungen anzubringen, wobei er dann natürlich spezifische Treiber für die verschiedenen Betriebssysteme liefern muss um diese extra Features (extra Buttons, Multimedia Keys, etc) zu unterstützen. Die Verwendung von HID für ein Messgerät ist gelinde gesagt komisch, aber eigentlich schon als dumm anzusehen, sofern es nicht ein Gerät ist das ähnliche Funktionen wie ein Keyboard oder eine Maus haben kann. Da die Control und Datenbytes bei HID an sich ja nicht standardisiert sind (oder soll Dein Gerät sich als Maus anmelden und einen Mausklick schicken wenn es 0V misst?) kann man auch keinen generieken Converter von HID nach COMM machen. Man kann aber einen Treiber schreiben der sich das HID Interface dieser Klasse von Windows reservieren lässt und dann das geratespezifische Protokoll umsetzt nach einem API. Solche Treiber sind am einfachsten in C(++) zu machen und dann als DLL in LabVIEW zu importieren. NI VISA unterstützt direkten Zugang zu HID Devices nicht, aber man kann sich im Prinzip mit USB Raw Zugang dazu verschaffen muss dann aber das HID Protokoll und darauf aufbauend das gerätespezifische Protokoll ganz in LabVIEW selbst programmieren. Für HID ginge das zwar theoretisch noch da dieser Standard offen ist und vom USB Konsortium bezogen werden kann, aber ohne eine genaue Beschreibung der Addressen und Datenbytes die Dein Gerät im HID Deviceprofil benützt ist das sinnlose Liebesmühe. RE: Erstellen einer Benutzeroberfläche für ein DMM der Marke Uni T UT804 inkl Steuerung - rolfk - 13.03.2012 12:35 (19.02.2012 18:15 )GerdW schrieb: Hallo Santa, Für ein USB Raw Device sollte da immer 0 rauskommen. Bytes At Serial Port ist ein interfacespezifisches Property das nur für, man höre und staune, Serielle Schnittstellen verfügbar ist. Dasselbe gilt für Baudrate. Eigentlich sollte das sogar schon beides einen Fehler geben. Zudem wird das HID Device wahrscheinlich nicht einfach Daten rausschmeissen sondern sollte wohl durch irgend ein Kommando auf irgendeine Addresse im HID Interface dazu aufgefordert werden. Und die Daten dürften dann auf einer anderen Adresse im HID Interface geliefert werden. Aber was da durch VISA rein kommt ist noch nicht HID sondern halt nur USB Raw, also muss da noch einiges and Arbeit gemacht worden um an die HID Interface Informationen zu kommen. Alles in allem lässt sich nur wieder wiederholen: Ein beinahe sinnloses Projekt, ausser man hat selber schon ziemlich viel Erfahrung mit der Programmierung eines USB Devices (also nicht in LabVIEW sondern die Firmware davon!!). Aber was ist denn die VISA Resource die Du verwendest? Ich denke mal, dass das möglicherweise doch einfach eine serielle Schnittstelle ist und Du schon länger einsichtig geworden bist und von USB Raw abgesehen hast, auch wenn Du das im Beitrag #31 nicht so schreibst. Sehe in Beitrag #34 dass Du doch USB Raw zu machen scheinst. Damit bleibt alles oben gesagte voll gültig. |