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!
Ich habe ein Problem beim Einlesen von Daten via VISA-Read. Bei meinem Programm sende ich zwei Strings der Länge 13 (12 Nachrichtenbytes und 1 Prüfsummenbyte) an meinen PIC-Mikrocontroller. Der PIC liest die Daten ein und überprüft anschließend mit der Prüfsumme, ob die Daten richtig empfangen wurden. Ist das geschehen, so sendet der PIC ein Byte an LabVIEW zurück, welches ich nun einlesen muss.
Nun habe ich das Problem, dass ich das Byte nur einlesen kann, wenn mir der PIC das Byte sofort zurücksendet (also bevor er die Prüfsumme verarbeitet). Sendet der PIC das Byte erst nach dem Verarbeiten zurück, so kommt es im Programm nicht an.
Ich habe mein LabVIEW-Programm hochgeladen, die Version ist 8.5 Professional.
Der Fehler muss am LabVIEW-Programm liegen, denn die Kommunikation via RS485 funktioniert und die Funktion des uC-Programms am PIC wurde mit diversen Terminalprogrammen ausgetestet.
' schrieb:...sende ich zwei Strings der Länge 13 ....wäre nicht unangenehm, wenn diese auch im VI enthalten wären...könnte man vielleicht auch mal gebrauchen
...so sendet der PIC ein Byte an LabVIEW zurück ...und das passiert sofort?=> VISA-Event oder Anzahl bestimmen und wenn gleich 1 dann erst lesen und was für ein Zeichen ist es? nix?
viel Erfolg
1Postingempfehlungen, 2Motivation Fragen und Anpassungswünsche per PM werden, gegen Rechnungsstellung gerne beantwortet und realisiert ....wenn's dann doch kostenlos sein soll... bitte hier im LVF unter Berücksichtigung der voranstehenden Links posten.
So jetzt habe ich mein ganzes VI einmal hochgeladen (LV 8.5).
Es ist ein Programm, mit dem man bis zu 8 Arbeitsplätze mit Funktionsgeneratoren und Netzteilen bedienen kann, als Kommunikationsprotokoll über RS485 zwischen Mikrocontroller (in den Endgeräten als Steuereinheit) und LabVIEW verwende ich ein Modbus ähnliches Protokoll (13 Zeichen lang) mit einer Prüfsumme. Normalerweise funktioniert alles, außer das Programm VISA Write And Read. Beim Checksum-Sub-VI bin ich mir auch noch nicht ganz sicher, ob das passt.
Aber bitte schaut euch einmal bitte das Programm an, vielleicht seht ihr ja auch noch ein paar andere Fehler, das wäre super!
29.03.2010, 12:51 (Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2010 14:21 von Lucki.)
Beziehe moch auf Dein erstes VI (Das ZIP zu verarbeiten ist mit zu kompliziert).
Du solltest den Eigenschaftsknoten "Bytes at Port" weglassen und statt dessen eine "1" an Visa Read als Konstante anschließen. Dann entfällt der ganze Kokolorus mit mehrfachen Leseversuchen in der Schleife, bis das Byte eingetroffen ist. Dann wartet VISA Read nämlich, ohne daß man noch eine Schleife braucht, bis das erwartete eine byte im Buffer ist. Ob das mit Deinem eigentlichen Problem im Zusammenhang steht, weiß ich allerdings nicht.
' schrieb:Beziehe moch auf Dein erstes VI (Das ZIP zu verarbeiten ist mit zu kompliziert).
Du solltest den Eigenschaftsknoten "Bytes at Port" weglassen und statt dessen eine "1" an Visa Read als Konstante anschließen. Dann entfällt der ganze Kokolorus mit mehrfachen Leseversuchen in der Schleife, bis das Byte eingetroffen ist. Dann wartet VISA Read nämlich, ohne daß man noch eine Schleife braucht, bis das erwartete eine byte im Buffer ist. Ob das mit Deinem eigentlichen Problem im Zusammenhang steht, weiß ich allerdings nicht.
So ich habe jetzt das bei meinem Sub-VI laut deinem Ratschlag ausgebessert. Das Ganze sollte jetzt so funktionieren:
- ersten String senden
- mit VISA-Read das erste Acknowledge einlesen
- warten (damit der uC eine Verarbeitungszeit hat)
- zweiten String senden
- mit VISA-Read das zweite Acknowledge einlesen
der IO-Assistent greift auch wieder auf VISA zurück, kannste also auch selbst lösen (theoretisch)...
Deine Fehlerbeschreibung ist allerdings auch noch ausbaufähig: "Funktioniert leider immer noch nicht der blöde Dreck."
-Fehlermeldung/-nummer?
-Funktionierts mit Hyperterminal?
-Funktioniert dein PIC?
-Kabel gecheckt?