INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

VISA Termination Char



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!

10.03.2008, 17:37
Beitrag #1

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
VISA Termination Char
Hi!

In der Hilfe zum Terminationchar steht:
Abschlusszeichen führt zur Beendigung des Lesevorgangs. Der Lesevorgang wird beendet, wenn das Abschlusszeichen vom seriellen Gerät empfangen wird. 0xA ist das hexadezimale Äquivalent eines Zeilenvorschubzeichens (n). Ändern Sie das Abschlusszeichen in 0xD bei Nachrichten, die mit einem Wagenrücklauf ® enden.

Wenn ich also einen Befehl abschicke und eine Stringkette mit mehreren Bytes erwarte, die am Schluss ein <CR> beinhaltet, setze ich den Termination Char auf 0xD (für Carriage Return).

Was mir nicht ganz klar ist: Ich weiss nicht, wann das Abschlusszeichen kommt. Wenn ich nun die serielle Schnittstelle so konfiguriere, dass sie auf den Termination Char wartet, muss ich dann nach dem Sendevorgang eine bestimmte Zeit lang warten oder kann ich gleich dahinter ohne Verzögerung (ohne Wait) den Lesevorgang setzen, der aber wirklich erst dann liest, wenn dieser Char da is oder der Timeout erreicht ist?

Is das also wie im angehängten Bild möglich?
Was passiert hier, wenn nach 12ms "HalloIchBin" und nach 24ms "DieAntwort<CR>" zurückkommt. Lese ich dann nur "HalloIchBin" aus oder "HalloIchBinDieAntwort<CR>"?


Danke euch!
Lg,
Tommy!


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.03.2008, 10:21
Beitrag #2

RoLe Offline
LVF-Guru
*****


Beiträge: 1.236
Registriert seit: Jul 2007

-
1997
en

0
Schweiz
VISA Termination Char
Wenn du weisst wieviele Bytes als Antwort kommen, wartest du in einer Schleife, bis die entsprechenden Byte am Ser.Port sind. Dann kannst du diese auf einmal lesen, wenn der Serielle Puffer (FIFO) genug gross ist.
Ansonsten braucht es fast immer eine Lese-Schlaufe mit Shiftregister.

Die Daten werden in den Seriellen Buffer geschrieben (ByteAtSer.Port), wenn du einen Teil davon gelesen hast (READ) wird er da gelöscht.

Ev. verstehe ich auch das Problem nicht ganz.

.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2008, 12:15 (Dieser Beitrag wurde zuletzt bearbeitet: 11.03.2008 12:17 von rolfk.)
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
VISA Termination Char
' schrieb:Hi!

In der Hilfe zum Terminationchar steht:
Abschlusszeichen führt zur Beendigung des Lesevorgangs. Der Lesevorgang wird beendet, wenn das Abschlusszeichen vom seriellen Gerät empfangen wird. 0xA ist das hexadezimale Äquivalent eines Zeilenvorschubzeichens (n). Ändern Sie das Abschlusszeichen in 0xD bei Nachrichten, die mit einem Wagenrücklauf ® enden.

Wenn ich also einen Befehl abschicke und eine Stringkette mit mehreren Bytes erwarte, die am Schluss ein <CR> beinhaltet, setze ich den Termination Char auf 0xD (für Carriage Return).

Was mir nicht ganz klar ist: Ich weiss nicht, wann das Abschlusszeichen kommt. Wenn ich nun die serielle Schnittstelle so konfiguriere, dass sie auf den Termination Char wartet, muss ich dann nach dem Sendevorgang eine bestimmte Zeit lang warten oder kann ich gleich dahinter ohne Verzögerung (ohne Wait) den Lesevorgang setzen, der aber wirklich erst dann liest, wenn dieser Char da is oder der Timeout erreicht ist?

Is das also wie im angehängten Bild möglich?
Was passiert hier, wenn nach 12ms "HalloIchBin" und nach 24ms "DieAntwort<CR>" zurückkommt. Lese ich dann nur "HalloIchBin" aus oder "HalloIchBinDieAntwort<CR>"?
Danke euch!
Lg,
Tommy!

Wenn Du ein Instrument hast das Termination Character sendet und VISA darauf eingestellt hast kannst Du grundsätzlich gleich nach dem Senden des Kommandos zu lesen versuchen. Du musst nur darauf achten, dass das Timeout bei der Read Node grösser ist als die Zeit die das Instrument benötigt um die komplette Antwort zu senden. VISA Read kehrt nämlich zurück nachdem entweder:

1) Die verlangten Anzahl Character empfangen sind (kein Fehler)
2) Der Termination Character empfangen ist (kein Fehler)
3) Das Timeout abgelaufen ist (entsprechender Fehler erscheint im Error Cluster)
4) Ein Fehler aufgetreten ist (entsprechender Fehler erscheint im Error Cluster)

Ob Du gleich nach dem Senden Lesen sollst hängt ganz davon ab wie schnell Dein Gerät ist und ob Du noch andere Dinge zu tun hast die quasi gleichzeitig erledigt werden sollten. Bei schnellen geräten ist ein direktes Lesen sicher iO und wenn Du eh nichts anderes sinnvolles zu tun hast dann bleibt Dir auch nicht viel mehr übrig.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2008, 13:55
Beitrag #4

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
VISA Termination Char
' schrieb:Du musst nur darauf achten, dass das Timeout bei der Read Node grösser ist als die Zeit die das Instrument benötigt um die komplette Antwort zu senden. VISA Read kehrt nämlich zurück nachdem entweder:

Hey! Danke für deine Antwort!

Welches Timeout bei der Read Node meinst du? Da gibts nirgends nen Eingang...

und

Was meinst du mit VISA Read kehrt zurück? Meinst du damit, falls einer dieser 4 Punkte zutrifft, gibt VISA Read nen Fehler aus und der Datenfluss geht weiter?

Lg,
Tommy!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2008, 15:12
Beitrag #5

RoLe Offline
LVF-Guru
*****


Beiträge: 1.236
Registriert seit: Jul 2007

-
1997
en

0
Schweiz
VISA Termination Char
' schrieb:Welches Timeout bei der Read Node meinst du? Da gibts nirgends nen Eingang...

und

Was meinst du mit VISA Read kehrt zurück? Meinst du damit, falls einer dieser 4 Punkte zutrifft, gibt VISA Read nen Fehler aus und der Datenfluss geht weiter?

Das Timeout gibst du bei Config SerialPort an.

Rolf hat ja geschrieben, wann es einen Fehler gibt und wann nicht.

.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.03.2008, 15:26
Beitrag #6

mctommson Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 99
Registriert seit: Mar 2007

8.6
2007
de

1210
Oesterreich
VISA Termination Char
' schrieb:Das Timeout gibst du bei Config SerialPort an.

Rolf hat ja geschrieben, wann es einen Fehler gibt und wann nicht.

Mir war nur nicht ganz klar, was er mit "kehrt zurück" meinteWink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Visa Termination Gottimp 12 9.119 11.03.2021 19:23
Letzter Beitrag: GerdW
  Doppeltermination Char hulk 19 12.838 08.07.2016 11:13
Letzter Beitrag: hulk
  VISA: (Hex 0xBFFF0015) bei VISA read und im VISA Test Panel rick 3 14.221 10.11.2013 12:16
Letzter Beitrag: Y-P
  Termination Character an VISA write dbuckl 17 13.312 01.10.2013 11:16
Letzter Beitrag: dbuckl
  TCP/IP Read liest nicht bis zum Termination Character Gabs 9 10.069 06.02.2009 19:19
Letzter Beitrag: rolfk
  visa write; visa read zeitgesteuert ThomasDipl 8 11.451 20.11.2008 06:46
Letzter Beitrag: Achim

Gehe zu: