LabVIEWForum.de
Antwort Visa Read falsch!!! - 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: Antwort Visa Read falsch!!! (/Thread-Antwort-Visa-Read-falsch)



Antwort Visa Read falsch!!! - Gisele - 10.12.2012 12:23

Hallo an alle,

Ich habe ein Problem in der beiliegenden Labview Programm. Dieses Programm hat immer gut funktioniert. Aber Ich weiß nicht, welche Veränderungen ich getan habe, damit Read Visa nicht mehr gut funktioniert. Ich schicke eine Anfrage über Write Visa und erwartet, dass Read Visa die Bytes von Abfrage plus eine Antwort Zurückschickt. Ich bekomme genau dem gesendeten Byte nur die Byte von der Antwort sind falsch. Die Byte von Antwort, die ich bekomme sind die Bytes von dem Ereignis, das vorher war und nicht für das aktuelle Ereignis. Beispiel:

TX: 0xA0, 0x11, 0x00, 0x0A -------> (gesendete Bytes)

RX: 0xA1, 0x11, 0x03, 0x0A -------> (erwartete Antwort)

aber ich lese in den Puffer

RX: 0xA1, 0x11, 0x02, 0x0A -------> (erhaltene Antwort, was die vorherige Abfrage war)

Ich dachte, vielleicht ist schon ein Puffer bereits vorhanden, bevor sich die Visa öffnet.
Ich habe die Anzahl der Bytes an Port Überprüft, bevor der ersten Lese/Schreibfunktionen durchgeführt werden. Aber ich bekomme 0 Bytes at Port.

Weiß vielleicht Jemand voran liegt diese Verzögerung beim Lesen (Besonders für die Bytes von Antwort)?
Vielen Dank im Voraus für Ihre Reaktionen
MfG

Gisele


RE: Antwort Visa Read falsch!!! - GerdW - 10.12.2012 12:54

Hallo Gisele,

- auch LV8.6 hat einen Aufräumknopf!
- du hast immer noch die VISA-Referenz mit deinem (hier fehlenden) subVI verbunden!
- du hast eine RaceCondition mittels deiner lokalen Variablen "transmitted Byte" geschaffen...
- warum öffnest du schon wieder einen neuen Thread zum gleichen VI?

- Nutzt du nun das TermChar? Dann brauchst du die ganzen "Bytes at port" nicht - da gibt es schon genügend Threads zu, die das erläutern!


RE: Antwort Visa Read falsch!!! - Y-P - 10.12.2012 12:56

Ich habe jetzt die Hardware nicht zum Testen, aber was soll denn die For-Schleife nur mit einem Durchgang? Die kannst Du genauso gut auch weglassen.

Gruß Markus


RE: Antwort Visa Read falsch!!! - Gisele - 10.12.2012 13:47

Hallo,
ich habe die For schleife weggelassen.
Zitat:auch LV8.6 hat einen Aufräumknopf!
soll ich die VI in eine andere Version laden? ich arbeite mit LV 2012, deswegen habe ich LV 8.6 gewählt, damit alle zugreifen kann.
Zitat:du hast immer noch die VISA-Referenz mit deinem (hier fehlenden) subVI verbunden!
Ich habe die SubVI nicht geladen, weil ich dort keine Probleme mehr habe. Das Problem liegt jetzt nur an die Bytes an read Puffer besonders die Bytes Antwort, die mit A1 anfängt. Soll ich auch die SubVI laden?
Zitat:- du hast eine RaceCondition mittels deiner lokalen Variablen "transmitted Byte" geschaffen...
Ja, ich prüfe, ob es genau was ich geschickt habe(ohne Antwort) bekommt!
Zitat:- warum öffnest du schon wieder einen neuen Thread zum gleichen VI?
Entschuldigung, nächste mal mache ich in dem gleichen Thread.
Zitat:Nutzt du nun das TermChar? Dann brauchst du die ganzen "Bytes at port" nicht - da gibt es schon genügend Threads zu, die das erläutern!
ja ich nutze das Termchar, ich habe schon viele Threads gelesen, aber hab noch keine Antwort gelesen Warum die Bytes von Antwort nicht aktuell sind.
Vielen Dank
MfG
Gisele


RE: Antwort Visa Read falsch!!! - GerdW - 10.12.2012 13:53

Hallo Gisele,

wenn du das TermChar verwendest, dann verzichte auf die BytesAtPort-Abfragen!

Kannst du bisher sicherstellen, dass du auch immer die passende Antwort auf gesendeten Befehl abfragst?

Nachtrag mit Links zu älteren Threads:
hier und hier


RE: Antwort Visa Read falsch!!! - Gisele - 10.12.2012 14:18

Hallo GerdW,
Zitat:Kannst du bisher sicherstellen, dass du auch immer die passende Antwort auf gesendeten Befehl abfragst?
das ist , was ich in meinem Programm versuche. Dies hatte seit ein paar Wochen immer richtig funktionniert.Blush
wenn ich mich auf mein Programm verlasse, frage ich immer die passende Antwort auf gesendeten Befehl ab.
MfG
Gisele


RE: Antwort Visa Read falsch!!! - Lucki - 10.12.2012 14:24

Es ist wie der Kampf Don Quichotes gegen die Windmühlenflügel: Es wird immer wieder flasch gemacht und ich korrigiere es hier immer wieder.

Die Schuld daran gebe ich inzwischen den Beispielen in der Labview-Hilfe. Mit Zeilenendeerkennung (TermChar) ist die serielle Kommunikation nämlich so einfach, dass die Experten von NI sich geschämt haben, so etwas als Beispiel zu bringen. Und weil es das einfache Beispiel nicht gibt, wird weithin vermutet, dass alles noch komplizierter sein muss als all die aufgeblasenen NI-Beispiele zur seriellen Kommunikation.

Also: Weg mit solchen Funktionen wie Bytes on Board, Pufferkonfiguration, Wait. So einfach erhälst Du die richtige Antwort:
[attachment=42584]


RE: Antwort Visa Read falsch!!! - Gisele - 10.12.2012 14:59

Hallo Lucki,
habe ich genau gemacht wie in deinem Bild. Ich bekomme die Anzahl der Bytes, die ich erwarte. aber nur die 4 letzte Bytes sind falsch (Bytes für die Antwort auf Abfrage) und ich weiß nicht warum.
Vielen Dank
Gisele


RE: Antwort Visa Read falsch!!! - Lucki - 10.12.2012 15:41

Read liest den Pufferinhalt bis zum nächsten Zeilenende aus. Wenn dieser aus irgendeinem Grund schon vor dem Write nicht leer war (z.B weil die Gegenseite schon vor dem write-Kommando etwas in den Puffer geschickt hatte), dann liest man zwar etwas aus, aber das ist nicht die aktuelle Antwort auf das Write-Kommando. Die steckt dann immer noch im Puffer.
Du kannst ja sicherheitshalber unmittelbar vor dem Write immer den Empfangspuffer leeren.