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 

letzte Zeile eines Strings anzeigen



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.06.2010, 08:58
Beitrag #1

greglemond Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 90
Registriert seit: Mar 2009

8.6
2008
de

1067
Deutschland
letzte Zeile eines Strings anzeigen
Ich habe einen String, in den während einer Messung immer wieder neue Daten geschrieben werden. Dabei benutze ich eine vertikale Bildlaufleiste. Nun soll der String immer den untersten Bereich seines Inhalts anzeigen. Aber irgendwie finde ich nicht wie das geht. Auch bei den Eigenschaftsknoten finde ich nichts. Weis da jemand weiter? Danke schon mal.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.06.2010, 09:07 (Dieser Beitrag wurde zuletzt bearbeitet: 23.06.2010 09:08 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
letzte Zeile eines Strings anzeigen
Hallo Greg,

dann probier die Property mal aus...

Alternativ kann man neue Zeilen auch am Stringanfang einfügen, dann erspart man sich das Scrollen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.06.2010, 09:17
Beitrag #3

greglemond Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 90
Registriert seit: Mar 2009

8.6
2008
de

1067
Deutschland
letzte Zeile eines Strings anzeigen
So hat's geklappt. Danke.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.07.2012, 19:15
Beitrag #4

fabqu Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 84
Registriert seit: May 2011

9
2011
DE



RE: letzte Zeile eines Strings anzeigen
Hi!
Ich habe ein ähnliches Problem, komme aber mit der oben stehenden Antwort nicht weiter.
Ich habe einen String, der endlos von einem Router abgegeben wird und verschiedene Messwerte der Form "MesswertA:0123" enthält.
Ich möchte nun stets die vorletzte Zeile dieses Strings (ist die frischeste Zeile, und dabei KOMPLETT - die letzte Zeile kann häufig unvollständig sein) weiterverarbeiten und auf den ":" durchsuchen.
Nun: Wie bekomme ich die Vorletzte Zeile eines nach jedem While-Durchgang längeren Strings?????


Danke euch!
Fabian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.07.2012, 21:21 (Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2012 21:22 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: letzte Zeile eines Strings anzeigen
Hallo Fabian,

die bekommt man, indem man sich merkt, wie weit man den String schon verarbeitet hat und erst ab dieser Stelle nach neuen Werten sucht. Wobei das Konzept eines stetig anwachsenden Strings vielleicht nochmal überdacht werden sollte...

Außerdem hat deine Frage wenig mit der Originalfrage zu tun, anzeigen und verarbeiten ist halt nicht das Gleiche!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.07.2012, 21:45
Beitrag #6

fabqu Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 84
Registriert seit: May 2011

9
2011
DE



RE: letzte Zeile eines Strings anzeigen
Hi!
Jo, das mit dem andauernd laufenden String geht leider schlecht anders.
Mir gehts aber erst mal nicht um die Verarbeitung, sondern ich brauche wirklich nur die Vorletzte Zeile des Strings in einer Variablen, welche ich dann weiterverarbeiten kann...
Ich will auch nicht von "oben nach unten" verarbeiten (Zeile für Zeile), sondern nur die neueste, noch ganze Zeile. Denn wenn ich, wie Du meintest, nur die letzte, noch nicht verarbeitete Zeile verwende, kann es möglich sein, dass dieser Wert ja schon wieder veraltet ist - was für meinen Programmablauf dann natürlich nicht gut wäre.

Alternativ kann ich auch das gesamte, zuletzt empfangene Paket verarbeiten, ehe ich ein neues hole.
Dieses kann dann aber so aussehen:
"enA:209543
DatenB:4923
DatenC:44532
DatenE:5432
DatenF:325256
Date"
Auch hier ist das Problem: erste und letzte Zeile sind unvollständig...

Was tun?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.07.2012, 21:57 (Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2012 21:59 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: letzte Zeile eines Strings anzeigen
Hallo Fabian,

Zitat:Jo, das mit dem andauernd laufenden String geht leider schlecht anders.
Das bezweifel ich doch sehr stark: das gute alte Konzept eines Ringbuffers könnte dir weiterhelfen. Neue empfangene Daten am Ende des Strings anfügen, vom Anfang des Strings jeweils ganze Zeilen entfernen und verarbeiten. Wenn man schneller auswertet als neues empfängt, hat man immer die bis dahin letzte vollständige Zeile verarbeitet...

Zitat:Denn wenn ich, wie Du meintest, nur die letzte, noch nicht verarbeitete Zeile verwende
Das habe ich weder gemeint noch geschrieben...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.07.2012, 23:01
Beitrag #8

fabqu Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 84
Registriert seit: May 2011

9
2011
DE



RE: letzte Zeile eines Strings anzeigen
Hmm... Das hilft mir leider nur bedingt weiter...
Ich habs versucht, aber es scheinen zu viele Daten zu kommen. Ich schaffe es mittlerweile wenigstens, mir die zwei Einträge "DatenA" und "01234" gesondert voneinander anzeigen zu lassen.
Allerdings scheinen die Daten so häufig zu kommen, dass ich nie alle Messwerte bearbeite, sondern nur immer einen aus einem Datenblock. Daher muss ich vielleicht doch Zeile für Zeile abarbeiten, aber schneller, als die neuen Daten kommen.

Aber ich komme einfach nicht dahinter, wie ich mir den gesamten Block (siehe mein letzter Beitrag) nehme und ihn Zeile für Zeile abarbeite!
Dafür muss ich die Zeilenlänge wissen, aber die weiß man ja nie!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.07.2012, 08:33 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2012 08:35 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: letzte Zeile eines Strings anzeigen
Hallo Fabian,

nur eine Idee:
   
Dieser "Receiver" wäre die Producer-Schleife in einem Producer-Consumer-Schema. Das Schieberegister sammelt die empfangenen Strings, mit dem MatchPattern wird jeweils eine Zeile abgetrennt und zur weiteren Verarbeitung in die Queue gepackt. Du musst selbst noch ein bisschen Fehlerbehandlung einfügen, z.B. für den Fall, das gerade keine ganze Zeile im Buffer zur Verfügung steht. Evtl. musst du auch das Zeilenende-Zeichen, nach dem gesucht wird, anpassen...

Zitat:Allerdings scheinen die Daten so häufig zu kommen, dass ich nie alle Messwerte bearbeite, sondern nur immer einen aus einem Datenblock. Daher muss ich vielleicht doch Zeile für Zeile abarbeiten, aber schneller, als die neuen Daten kommen.
Du schreibst ja nicht, wo die Daten herkommen. Du sagst nicht, wie du die Daten empfängst. Du zeigst nicht, wie du die Daten verarbeitest. Du sammelst Daten in einem stetig anwachsenden String, wodurch dein VI auch stetig langsamer werden wird. Aber du willst nicht auf mich hören:
Zitat:Jo, das mit dem andauernd laufenden String geht leider schlecht anders.

Tipp:
Falls die neuen Daten wirklich so schnell kommen, wie du beschreibst, dass du mit der Bearbeitung nicht hinterherkommst, kann man die Queue in der Länge begrenzen und "Lossy" verwenden oder einen Notifier verwenden, der immer nur den aktuellsten Werte speichert...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.07.2012, 08:34 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2012 09:25 von Lucki.)
Beitrag #10

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: letzte Zeile eines Strings anzeigen
(27.07.2012 21:45 )fabqu schrieb:  Alternativ kann ich auch das gesamte, zuletzt empfangene Paket verarbeiten, ehe ich ein neues hole.
Dieses kann dann aber so aussehen:
"enA:209543
DatenB:4923
DatenC:44532
DatenE:5432
DatenF:325256
Date"
Auch hier ist das Problem: erste und letzte Zeile sind unvollständig...
Was tun?
Das ist Flickschusterei, wenn das Problem der unvollständigen Zeilen im Nachinein über Datenauswertung gelöst wird. Die saubere Löung ist eine bessere Konfiguration beim Datenempfang. Einfach in der seriellen Konfiguration "Abschlusszeichen aktivieren". Dann wartet VisaRead so lange, bis eine Zeile vollständig im Buffer ist, und es werden unvollständige Zeilen überhaupt nicht erst empfangen.
Die Unvollständigkeit der ersten Zeile ist allerdings etwas anderes. Das passiert, wenn zuerst der Sender, und dann erst der Empfänger eingeschalten wird. Es kann dabei sogar passieren, dass es anfänglich zu Frame-Error kommt, weil mitten in ein Byte hineingehört wurde. Hiergegen hilft Abfangen der Fehler, bis sich der Empfang synchronisiert hat. (Mit anderen Worten: Diese verstümmelte erste Zeile darf gar nicht erst in den Empfangsstring gelangen)
NB: Ich kenne diese dämliche VISA-Konfigurationen aus tausend falschen Forumsbeispielen. Abchlusszeichen ist ja standardmäßig aktiviert und wird auch so gelassen - soweit OK. Dann aber wird vor ViseRead überflüssigerweise "Bytes on Board" gesetzt und damit das zeilenweise Lesen außer Kraft gesetzt. Die Lösung ist: "Bytes on Board" weglassen und an VisaRead eine feste Bytezahl anschließen, die größer ist als die größte Länge einer empfangenen Zeile.
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
  Letzte Ergebnisse anzeigen (Highscore) bolze 34 17.130 18.12.2014 10:48
Letzter Beitrag: GerdW
  Einfügen eines Strings bei Tastendruck im aktiven Feld dali4u 2 3.409 21.08.2014 05:51
Letzter Beitrag: sccompu
  Eingabeaufforderung behält letzte Werte Nick Name 4 3.866 22.07.2014 14:56
Letzter Beitrag: Nick Name
  Zeile löschen im Array Headskiiert 17 13.107 05.02.2014 19:53
Letzter Beitrag: Headskiiert
  Über letzte Array Werte mitteln dbuckl 3 4.056 03.12.2013 13:06
Letzter Beitrag: GerdW
  Cluster Zeile löschen Masterg4941 17 11.016 12.09.2013 12:13
Letzter Beitrag: Masterg4941

Gehe zu: