08.07.2013, 13:29
(Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2013 13:54 von jg.)
Beitrag #1
|
Marcusius
LabView-Nutzer
Beiträge: 37
Registriert seit: Jan 2008
7.00, 8.61, 2010, 2019
2005
EN
18057
Deutschland
|
Visa Open löscht Eingangspuffer
Hallöle,
kann es sein, dass das Öffnen einer Visa-Session (COM-Port) den Eingangspuffer löscht?
Ich habe hier einen Aufbau mit einem RS232-Teilnehmer, der in bestimmten Zeitabständen selbstständig Daten an den PC sendet. Öffne ich den Port nachdem das Telegramm eingetroffen ist, so finde ich keine Daten im Puffer.
Kennt ihr dieses Verhalten?
Kann man das Abstellen?
Besten Dank und Grüße
Marcusius
|
|
|
08.07.2013, 13:52
(Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2013 13:53 von Achim.)
Beitrag #2
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
RE: Visa Open löschet Eingangspuffer
(08.07.2013 13:29 )Marcusius schrieb: Öffne ich den Port nachdem das Telegramm eingetroffen ist, so finde ich keine Daten im Puffer.
Woher weißt du dass das Telegramm eingetroffen ist, wenn die Schnittstelle nicht "bereit" ist?
Das Verhalten kenne ich jetzt nicht...aber ich käme auch nie im Leben auf die Idee zu erwarten, dass ein Gerät Daten irgendwie "hält", wenn ich es vorher nicht in Bereitschaft versetzt hätte...
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
08.07.2013, 14:12
Beitrag #3
|
Marcusius
LabView-Nutzer
Beiträge: 37
Registriert seit: Jan 2008
7.00, 8.61, 2010, 2019
2005
EN
18057
Deutschland
|
RE: Visa Open löscht Eingangspuffer
Moin Achim,
ich merke ich habe einen Denkfehler. Solange keine Visa-Schnittstelle geöffnet ist, gehen die Daten, die mein Teilnehmer sendet verloren.
Das bedeutet, dass ich meine Schnitzstelle solange offen halten muss, bis Daten eingetroffen sind.
Hintergrund: Ich wollte ein ständiges "Pollen" via Visa Event und Timeout vermeiden.
Nun gut, dann werde ich die Schnitzstelle nicht gleich nach dem Event-Timeout schließen, sondern erneut das Event setzen.
Marcusius
|
|
|
09.07.2013, 10:40
Beitrag #4
|
Marcusius
LabView-Nutzer
Beiträge: 37
Registriert seit: Jan 2008
7.00, 8.61, 2010, 2019
2005
EN
18057
Deutschland
|
RE: Visa Open löscht Eingangspuffer
Hi.
So richtig klappt das hier bei mir noch nicht. Lasst mich meine Situation noch einmal kurz erklären:
Via 'VISA write' versetze ich meinen Teilnehmer in den Zustand, dass er selbstständig alle paar Sekunden ein Telegramm an den PC sendet. (Funktioniert, via Hyperterminal überprüft). Das genannte Schreiben steckt in einem Sub-VI.
Nun wird Timeout-gesteuert (Event-Struktur) ein Lese-Sub-VI gestartet. Darin befindet sich ein' VISA open', 'Clear', 'Enable Event', 'Discard Event' und schließlich 'Wait on Event'. Am 'Wait on Event' scheitert es aber. Es werden keine eintreffenden Daten erkannt und folglich auch kein Event ausgelöst. Mit den Eventtypen habe ich schon rumprobiert, daran liegt es nicht.
Generelle Frage: Setzt eine' VISA Read' Aktion IMMER eine Write-Aktion vorraus?
Dazu folgende Beoachtung: Wenn ich in meinem Lese-Sub-VI eine kleine Write-Aufforderung unterschummle, die eine Antwort des Teilnehmer erzwingt wird die Antwort ausgelesen (d.h. 'Wait on Event' funktionert). Ich beende dann das Sub-VI aber noch nicht, sondern Lese erst dann alles aus, wenn "Bytes at port" größer als die Schummelantwort ist, was bedeutet, dass ein selbstständiges Telegramm eingetroffen ist. Auf diese Weise erhalte ich mein gewünschtes Telegramm.
Diese Beobachtung führt mich zu der oben gestellten Frage. Aber kann das sein? Es muss doch möglich sein, einen Port zu öffnen und aus eintreffende Daten zu warten! ICh wollte gerade die 'Wait on Event' Funktion nutzen um nicht althergebracht den Port nach der Byte-Anzahl zu pollen.
Marcusius
PS: Achja, nach dem Lesen noch 'VISA Close'
|
|
|
09.07.2013, 12:37
Beitrag #5
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Visa Open löscht Eingangspuffer
Hallo Marcesius,
- Warum wird der Port ständig aufs Neue geööfnet und geschlossen?
- Wozu brauchst du überhaupt BytesAtPort? Entweder man hat ein TermChar oder man weiß, wieviele Zeichen zu lesen sind...
|
|
|
09.07.2013, 12:44
Beitrag #6
|
Marcusius
LabView-Nutzer
Beiträge: 37
Registriert seit: Jan 2008
7.00, 8.61, 2010, 2019
2005
EN
18057
Deutschland
|
RE: Visa Open löscht Eingangspuffer
Hallo.
Kann man alles machen mit TermChar. Habe ich auch schon probiert. Es liegt ja in erster Näherung nicht am Read. 'Wait on event' liefert mir nichts. Was macht diese Funktion intern? Fragt die auch nur 'Bytes at port' ab?
Das mit dem Öffnen und Schließen habe ich schon beachtet. 'Wait on Event' liegt in einer While-Schleife mit nem Timeout. da wird also nicht ständig geöffnet und geschlossen.
Kann das jemand beantworten: Reagiert 'Wait on event' nur, wenn vorher auf den gleichen seriellen Port geschrieben wurde?
|
|
|
09.07.2013, 13:08
Beitrag #7
|
Marcusius
LabView-Nutzer
Beiträge: 37
Registriert seit: Jan 2008
7.00, 8.61, 2010, 2019
2005
EN
18057
Deutschland
|
RE: Visa Open löscht Eingangspuffer
Hmmm.....
Ich habe etwas mit der Parität rumgespielt und siehe da, plötzlich geht es. D.h. ich habe die Parität zunächst falsch eingestellt und nach dem zurücksetzen auf None (wie bei dem Schreib - VI auch) geht es plötzlich. None ist aber immer die Std.einstellung. Erst durch gezieltes verstellen und rücksetzen kommt klappt es erst mit dem 'Wait on Event'.
Kann das einer mal erklären? ...
|
|
|
09.07.2013, 20:32
Beitrag #8
|
|
|
10.07.2013, 10:33
Beitrag #9
|
Marcusius
LabView-Nutzer
Beiträge: 37
Registriert seit: Jan 2008
7.00, 8.61, 2010, 2019
2005
EN
18057
Deutschland
|
RE: Visa Open löscht Eingangspuffer
Moinsen.
Dass VISA open nicht die Schnittstelle konfiguriert ist bekannt. Einen entsprechenden Property-node habe ich im Blockdiagramm. Das hatte ich nicht erwähnt in meinem Posting.
An der Parität lag es auch nicht, aber das hat mich zumindest auf die Spur gebracht. Es war letztlich ein Timing-Problem. Dass es daran lag, deckt sich mit meinem ersten Posting in diesem Thread.
Nun läuft die Sache.
Danke für die Hinweise.
Marcusius
|
|
|
| |