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 

RS232 oder VISA



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!

23.02.2010, 16:08
Beitrag #21

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RS232 oder VISA
Das sind Fehler, wie sie typischerweise auftreten: Auf em Kabal get hat ab und zu mal ein Zeichen verlore.

Diese Fehler werden aber von VISA nicht abgefangen! Dafür wäre ein Treiber auf einer höheren Ebene zuständig. An dir liegt es nun, solche Fehler zu erkennen und möglicherweise zu beheben.

Erkennen ist einfach: Alles was nicht ins Format passt, ist ein fehlerhafter Datensatz. Und das Format ist eben festgelegt. Wenn du sagt, /n reicht, dann will ich dem zustimmen: Dann musst du deine Fehlerprüfung aber wie folgt machen: Lies mit VISA-Read den Puffer bis zum Endezeichen /n ein (das kann VISA, guckst du "Trennzeichen"). Jetzt musst du den String testen: vor /n muss eine Zahl im Format (z.B.) +##.## stehen. Du musst das so genau machen. Wie willst du sonst feststellen, dass der Punkt (siehe eines deiner Fehlerbeispiele) verloren gegangen ist? Vor diesem String muss dann ein ';' stehen usw.

Die Frage ist nun, was tun, wenn ein Fehler erkannt worden ist. Ohne ein entsprechend gutes Protokoll kannst du nur eins tun: den Datensatz ersatzlos verwerfen. Kaputte Daten kannst du ohne entsprechende Sicherung nicht reparieren. (In besonderen Fällen kann man anstelle des aktuellen, aber kaputten Datensatzen den vorhergehenden, aber ganzen Datensatz wiederholen als aktuell übernehmen.)

Was du eigenlich brauchst, ist ein fehlertolerantes Protokoll. Normalerweise würde man einen Datensatz mit mehreren Sicherheitsstufen verwenden: STX REP LEN <data> BCC ETX. Außerdem würde man die Datenpackete mit ACK respektive NAK quittieren. Ein solches Protokoll hat zwar den Vorteil, dass dir garantiert keine Datenpakete verloren gehen. Aber es macht halt viel Aufwand. Auf beiden Seiten der Datenübertragung. Wenn du dir diesen vielen Aufwand aber sparen willst, muss du damit Leben, dass ab und zu mal ein Datensatz fehlt.

Auf der anderen Seite: Normalerweise ist es eher unwahrscheinlich, dass ein Zeichen auf dem Kabel kaputt geht. Bei funktionsfähiger Hardware ist die Ausfallrate erfahrungsgemäß höchstens ein Promille. Wenn dir eins von zwanzig kaputt geht, stimtm was mit deiner Hardware nicht.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.02.2010, 09:31
Beitrag #22

tetef Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 76
Registriert seit: Jun 2009

2010
2008
de_en

76133
Deutschland
RS232 oder VISA
Zitat:Jetzt musst du den String testen: vor /n muss eine Zahl im Format (z.B.) +##.## stehen
das, woran ich gedacht habe. Ich moechte jede einzelene Zeile pruefen, ob es meine Format entsprecht. Meine Zeile soll so aussehen: [+/-#.##;+/-#.##] und muss 14 Bytes sein. Nun wie kann ich das in LabVIEW formulieren?????
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.02.2010, 10:04 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2010 10:05 von IchSelbst.)
Beitrag #23

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RS232 oder VISA
' schrieb:Meine Zeile soll so aussehen: [+/-#.##;+/-#.##] und muss 14 Bytes sein. Nun wie kann ich das in LabVIEW formulieren?????
Nicht formulieren, programmieren!

Mit "Formulieren", also z.B. als Formatstring in einem Scan-Element, bekommst du höchstwahrscheinlich bei diversen Fehlerbildern falsche Ergebnisse. Nur ein successives Scannen des Strings von links nach rechts (oder umgekehrt) wird Erfolg bringen. Und das heißt dann "Programmieren".

Programme für User schreibe ich und andere im Forum aber nur sehr ungerne. Du machst einen Vorschlag und hier im Forum sagt dir einer, warum was nicht so geht.

Du kannst folgendes machen: Zerlege den String in ein Array of Char. Dieses Array gehst du mit einer For-Schleife zeichenweise durch. Indexabhängig machst du eine Case-Sequenz, in der du die einzelnen Chars kontrollieren kannst. Für den 2. Case gibt es ein Element "Ist ASCII-Zahl?". Im ersten Case musst du explizit auf '+' und '-' abfragen. Und so weiter. Wenn alle Cases true ergeben, entspricht der String dem Vorgabeformat.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  RS232 Kommunikation per VISA auf RTtarget kzr_kratos 5 6.335 11.07.2014 10:17
Letzter Beitrag: kzr_kratos
  VISA: (Hex 0xBFFF0015) bei VISA read und im VISA Test Panel rick 3 13.624 10.11.2013 12:16
Letzter Beitrag: Y-P
  RS232 mit VISA, kein Signal Blinky_Bill 16 13.302 23.09.2013 15:02
Letzter Beitrag: Blinky_Bill
  lese mit VISA RS232 komische Werte ein gassd3 8 6.120 05.09.2013 08:29
Letzter Beitrag: RadioactiveMan
  Keine Daten kommen an vom Hameg 8115 über VISA RS232 USB fsg4u 3 5.616 09.08.2012 14:33
Letzter Beitrag: fsg4u
  Visa RS232 mit 2MBit pimbolie1979 3 3.950 16.07.2012 20:02
Letzter Beitrag: pimbolie1979

Gehe zu: