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 

Dieses Thema hat akzeptierte Lösungen:

Format für Regulärer Ausdruck



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!

28.02.2016, 10:26
Beitrag #1

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
Format für Regulärer Ausdruck
Hallo

Ich habe hier ein kleines Verständnisproblem mit dem Format für reguläre Ausdrücke im String suchen/ersetzen vi.
Ich habe hier ein Gerät (GPS Simulator) der via Telnet angesteuert werden kann, die Ansteuereung habe ich mit dem im Internet Toolkit entahltenen Telnet vi's realisiert (ist out of Date aber funktioniert).
Am Telnet Read vi kommen jedoch etwas seltsame Zeichen zurück, (siehe Anhang, normale und \-code Anzeige).
Im Prinzip sind die Zeichen ein Backslash \B und dann diese eigenartige Kombination [1m oder [22m
Die Zahlen nach der Klammer können vareieren datum wollte ich mit dem String Suchen\Ersetzern vi diese Zeichen Filtern und grundsätzlich funktioniert das auch aber wie bekomme ich es hin das alle Zeichenfolgen [0-9m entfernt werden?


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

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Format für Regulärer Ausdruck

Akzeptierte Lösung

(28.02.2016 10:26 )hansi9990 schrieb:  Im Prinzip sind die Zeichen ein Backslash \B und dann diese eigenartige Kombination [1m oder [22m
Gibt's das auch noch: VT100-Escape-Sequenzen (guckst du Wikipedia). Eine ESC-Sequenz dieser Art beginnt immer mit \1B[ und endet mit einem "Kommando", hier das kleine M. Dazwischen stehen die Parameter dieses Kommandos.

Zitat:Die Zahlen nach der Klammer können vareieren datum wollte ich mit dem String Suchen\Ersetzern vi diese Zeichen Filtern und grundsätzlich funktioniert das auch aber wie bekomme ich es hin das alle Zeichenfolgen [0-9m entfernt werden?
Nimm nicht "String suchen und ersetzen", sondern "Muster suchen und ersetzen". Als Muster gibst du "\\1B\\5B[0-9]+\\m" an - und zwar in einen String, der auf "\-Code-Anzeige" steht. In der Hilfe zu diesem VI findest du die Erklärung zu den Zeichen im Muster-String.

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
28.02.2016, 12:52 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2016 13:06 von hansi9990.)
Beitrag #3

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: Format für Regulärer Ausdruck
Ach so, ich habe mich schon gefragt was das für blöde Zeichen sindWink
So funktioniert es, herzlichen Dank Smile

Jetzt müsste ich nur noch eine Möglichkeit finden die "Bytes to Read" dynamisch zu setzen da diese sich ändern, als Workaround müsste ich diese einfach sehr hoch setzen und nach dem Telnet Read ein "Fehler aufheben" einbauen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2016, 13:54
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Format für Regulärer Ausdruck
Hallo Hansi,

Zitat:Jetzt müsste ich nur noch eine Möglichkeit finden die "Bytes to Read" dynamisch zu setzen da diese sich ändern, als Workaround müsste ich diese einfach sehr hoch setzen und nach dem Telnet Read ein "Fehler aufheben" einbauen.
Weder noch!
Einfach das TermChar aktivieren und verwenden, d.h. die "Bytes to read" auf einen unrealistisch hohen Wert setzen. Wenn man nach deinen Beispielbildern geht, hast du immer wieder CR/LF im Datenstrom und keine Botschaft mit mehr als "99" Zeichen ausreichen…

Tipp: Schau mal hier nach den vielen Threads zum Thema "serielle Schnittstelle" und deren effektive Handhabung!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2016, 14:35 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2016 14:37 von hansi9990.)
Beitrag #5

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: Format für Regulärer Ausdruck
Ich habe aber keine serielle Schnittstelle sondern LAN, wie ich schon oben geschrieben habe verwende ich dazu die Telnet vi's aus dem internet Toolkit, was anderes habe ich nicht gefunden und das SSH Tool von Labwerx funktioniert auch nur mit SSH und nich Telnet. Ein Beispiel ist im Anhang.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.02.2016, 18:24
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Format für Regulärer Ausdruck
Ok, bei Telnet/LAN fehlt natürlich das TermChar. Habe ich auf dem kleinen Handydisplay nicht gesehen…

Dann bleibt wohl nur
- größere Byteanzahlen abfragen und mit dem TimeOut-Fehler arbeiten
- kleinere Byteanzahlen abfragen (z.B. erst 8 Byte, danach Einzelbytes) und dort nach dem Zeilenende suchen

Unterstützen die Telnet-Funktionen einen Lesebuffer wie bei VISA?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.02.2016, 06:35
Beitrag #7

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: Format für Regulärer Ausdruck
Zumindest kann man zwischen normal, line und buffered wählen.
http://zone.ni.com/reference/en-XX/help/...lnet_read/
Übersicht aller Telnet vi's:
http://zone.ni.com/reference/en-XX/help/...elnet_vis/

Nach dem Manual wäre es am einfachsten den Modus auf normal zu setzen die Anzahl der "bytes to read" hoch zu setzen und einen erträglichen Timeout einzustellen aber ich befürchte fast das es da ein Problem gibt, denn das habe ich schon versucht aber dann kommt nichts zurück, verhält sich also genau so wie der buffered Modus beschrieben ist.
Muss ich nochmal checken, evtl. hatte ich bei dem Versuch einen Fehler gemacht.
Die Beschreibung zu buffered hört sich für mich auch nicht ganz logisch an denn ich würde eigentlich gerade im buffered Modus erwarten das alle bis zum Timeout empfangenen Daten angezeigt würden, also gepuffert werden. Wer lässt sich denn immer diese Umschreibungen einfallen? Big GrinBig Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.02.2016, 08:16
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Format für Regulärer Ausdruck
Hallo hansi,

der Beschreibung nach solltest du den Lesemodus "line" verwenden: der arbeitet lt. deinem Link genau so wie das VISARead mit TermChar!
Also "line"-Modus mit LF als "line separator"…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.02.2016, 19:04 (Dieser Beitrag wurde zuletzt bearbeitet: 29.02.2016 20:20 von hansi9990.)
Beitrag #9

hansi9990 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 180
Registriert seit: Mar 2015

2019
2014
DE

96xxx
Deutschland
RE: Format für Regulärer Ausdruck
Hallo Gerd

Danke für die Unterstützung.
Also ich habe es jetzt so ähnlich gemacht wie von dir vorgeschlagen.
Da dieses Gerät (GPS Simulator der Fa. Racelogic) allerdings etwas eigenartig in der Rückgabe ist habe ich als line separator das > Zeichen verwendet da dies nach jeder Eingabe die Eingabezeile darstellt und als letztes Zeichen erscheint. Die Antowert auf einen einzelnen Befehl sieht meist so aus:


OK

LABSAT>

Einzige Ausnahem ist wenn ich den quit Befehl zum beenden senden muss, hier erhalte ich keine Rückgabe, darum habe ich das Telnet Read VI mit einem Case deaktiviert wenn ich das quit sende.

   
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
  Muster suchen, RegEx Ausdruck String innerhalb Klammern dali4u 2 5.020 23.09.2014 10:30
Letzter Beitrag: dali4u
  Muster vergleichen / Regulärer Ausdruck Mak 9 8.283 02.12.2011 10:17
Letzter Beitrag: R2wo
  Doppelseitiger Ausdruck M Nussbaumer 5 4.875 18.08.2011 08:37
Letzter Beitrag: M Nussbaumer
  XY Graph, Rahmenfarbe für Ausdruck ändern jan91 3 4.567 30.11.2009 08:33
Letzter Beitrag: jan91
  Beispiel regulärer Ausdruck jojo2203 1 4.736 05.08.2009 15:36
Letzter Beitrag: ImExPorty
  Timestamp-Format Usen6521 5 8.748 18.11.2007 17:46
Letzter Beitrag: Lucki

Gehe zu: