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 

Werte in einer Zeile angeben



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!

07.05.2012, 15:35
Beitrag #1

Berdschi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2012

2013
2012
DE


Deutschland
Werte in einer Zeile angeben
Hallo Labview-Profis,

ich hab ein Problem beim anzeigen meiner Messwerte.
Ich hab eine Wägezelle und lese via VISA und RS232 die Daten aus.
Die Zelle sendet mir permanent Werte die ich Byte für Byte auslese.
Jedes Byte enthält ein Zeichen und die häng ich an einen String an.
Sobald eine Zeile (da stehen alle Werte drin die ich haben will) übertragen wurde bekomm ich von der Wägezelle ein CR und die Zelle fängt wieder von vorne an, das soll jetzt auch mein String-Anzeigefenster machen, also vorne anfangen und die Zeile so zusagen aktualisieren.
Genau das ist aber mein Problem. Wenn das CR kommt springt er im String-Anzeigefenster nach vorne und in die nächste Zeile, aber das soll er ja nich er soll nur nach vorne. Das sieht jetzt aus als ob ich ein CR und LF hab.

Mach ich da was falsch oder gibts allgemein ne andere Möglichkeit wie ich Werte in einer Zeile aktualisieren kann?

Im Blockdiagramm Bild hab ich kurz mal die Methode nachgebildet wie ich die Werte einles. Das ganze Vi ist viel umfangreicher aber das ist eigendlich alles was ich beim lesen mach.
Im Frontpanel Bild sieht man wie er es gerade ausliest, also alles schön untereinander was er aber nicht soll.

   

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
07.05.2012, 15:38
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte in einer Zeile angeben
Hallo Berdschi,

benutz doch einfach dein CR als EOT-Zeichen (bei VISA-Init anzugeben und lese mehr Zeichen als, dein zu erwartender String lang ist: dann bekommst du keine Einzelzeichen. sondern gleich deinen kompletten String!

Fangfrage: was machst du, wenn mal mehr als 1 Zeichen im Buffer landet?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2012, 16:11
Beitrag #3

Berdschi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2012

2013
2012
DE


Deutschland
RE: Werte in einer Zeile angeben
Hallo GerdW,

danke für die schnelle Antwort.
Wenn mehr als ein Zeichen im Puffer landet läuft er voll Big Grin darum les ich auch so schnell es geht aus um das zu verhindern.

Ein kompletter String wär natürlich super kann ich aber leider nicht umsetzten da es eigendlich so gedacht ist das die Wägezelle die Darstellung im Terminal steuert (nach unten fortlaufend wie im Bild oder nur in einer Zeile) dazu schickt die Zelle unterschiedliche EOF-Zeichen einmal eben CR (in einer Zeile) und einmal CR plus LF (fortlaufend).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2012, 16:16 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2012 16:17 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte in einer Zeile angeben
Hallo Berdschi,

Zitat:Wenn mehr als ein Zeichen im Puffer landet läuft er voll Big Grin darum les ich auch so schnell es geht aus um das zu verhindern.
Es gibt viele Threads, wo der Umgang mit der seriellen Schnittstelle erklärt wird. Einfach mal suchen...

Zitat:Ein kompletter String wär natürlich super kann ich aber leider nicht umsetzten da es eigendlich so gedacht ist das die Wägezelle die Darstellung im Terminal steuert (nach unten fortlaufend wie im Bild oder nur in einer Zeile) dazu schickt die Zelle unterschiedliche EOF-Zeichen einmal eben CR (in einer Zeile) und einmal CR plus LF (fortlaufend).
???
- Du erhälst also in jedem Fall ein CR, welches du als EOT einsetzen kannst...
- LabVIEW ist kein Terminal, sondern eine Programmiersprache. Du könntest also einen Filter für dein überzähliges LF programmieren... Halt, warte: dafür gibt es ja schon TrimWhitespace...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.05.2012, 19:10
Beitrag #5

Berdschi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2012

2013
2012
DE


Deutschland
RE: Werte in einer Zeile angeben
Hallo GerdW,

das Labview kein Terminal ist, ist mir auch klar.
Das Terminal soll ja auch nur zeigen was die Zelle gerade macht oder bestimmte Statuswerte anzeigen.
TrimWhitespace sagt mir nichts das werd ich mir mal anschauen, danke.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.05.2012, 07:37 (Dieser Beitrag wurde zuletzt bearbeitet: 08.05.2012 07:41 von Lucki.)
Beitrag #6

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: Werte in einer Zeile angeben
Da du in der kompfortablem Lage bist, dass das Gerät ein TermEnd-Zeichen (CR) sendet, geht es viel einfacher. Einfach in der Konfiguration TermEnd (Abschlusszeichen) aktivieren (das ist standardmäßig der Fall), und das richtige Zeichen eingeben (Standard ist LF = 0xA, das mußt Du wahrscheinlich ändern in CR = 0xD).
Dann funktioniert es so:
   
Funktionsweise: Read wartet, bis TermEnd kommt, liest dann die ganze Zeile auf einmal aus und überschreibt die vorher angezeigten Werte in "Terminal". Das ist doch genau das was Du wolltest.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.05.2012, 14:07
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte in einer Zeile angeben
Hallo Berdschi,

sprech bitte mit deinem Kollegen, bevor ihr auch im NI-Forum nach einer Problemlösung fragt...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.05.2012, 14:36
Beitrag #8

Berdschi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2012

2013
2012
DE


Deutschland
RE: Werte in einer Zeile angeben
Hallo,

so hab mir jetzt mal das Trim Whitespace angeschaut. Das kannt ich bereits nur nicht unter dem Namen. Leider bringt mir das hier nichts.

(08.05.2012 07:37 )Lucki schrieb:  Da du in der kompfortablem Lage bist, dass das Gerät ein TermEnd-Zeichen (CR) sendet, geht es viel einfacher. Einfach in der Konfiguration TermEnd (Abschlusszeichen) aktivieren (das ist standardmäßig der Fall), und das richtige Zeichen eingeben (Standard ist LF = 0xA, das mußt Du wahrscheinlich ändern in CR = 0xD).
Dann funktioniert es so:

Funktionsweise: Read wartet, bis TermEnd kommt, liest dann die ganze Zeile auf einmal aus und überschreibt die vorher angezeigten Werte in "Terminal". Das ist doch genau das was Du wolltest.
Danke Lucki, das ist so nicht schlecht leider nicht die Lösung die ich brauch.
Ich muss vielleicht meine Frage genauer stellen.
Den Programmcode auf der Wägezelle kann ich nicht beeinflussen und gewünscht ist von mir das ich ein Terminal realisiere das genau die Zeichen umsetzt die von der Wägezelle kommen. CR also als Wagenrücklauf zum Zeilenanfang und nicht als Zeilenumbruch wie es im Moment ist.
Die Zelle steuert das Erscheinungsbild der Werte. D. h. die Zelle ist standartmäßig so eingestellt das sie mir alle Werte in einer Zeile und im Sekundentakt abschliesend mit einem CR schickt. Das sollte dann eben dazu führen das durch das CR wieder an den Zeilenanfang gegangen wird und dort einfach über die alten Werte geschrieben wird.
Wenn ich jetzt aber die Werte fortlaufend sehen will schick ich der Zelle einen Befehl was zur folge hat das die Wägezelle einfach am Ende ein LF zusätzlich anfügt.
Genauso muss ich mit einem Befehl einen Wert direkt anfordern können, der dann einfach dazwischen ausgegeben wird bevor die Zelle wieder in ihrem alten Muster alles ausgibt.

Ich hab unten nochmal zwei Bilder und das Vi über die ich das zum Teil hinbekommen hab.

   

   


11.0 .vi  SubVI_Terminal_mit_Sonderzeichen.vi (Größe: 19,5 KB / Downloads: 184)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.05.2012, 14:43
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte in einer Zeile angeben
Hallo berdschi,

wenn du ein Terminal emulieren sollst, dann musst du das halt programmieren...

LabVIEW-Stringindikatoren behandeln ein CR genauso wie ein LF: Zeilenvorschub und Wagenrücklauf.
Du musst eine Routine selbst programmieren, wenn du nur den Wagenrücklauf haben willst...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.05.2012, 15:17
Beitrag #10

Berdschi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2012

2013
2012
DE


Deutschland
RE: Werte in einer Zeile angeben
(08.05.2012 14:07 )GerdW schrieb:  Hallo Berdschi,

sprech bitte mit deinem Kollegen, bevor ihr auch im NI-Forum nach einer Problemlösung fragt...
ohhh, sry.
Der Eintrag ist auch von mir nur über den Account von meinem Kollegen.
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
  Warten auf neue Zeile lohr 10 9.918 17.04.2008 10:11
Letzter Beitrag: lohr

Gehe zu: