LabVIEWForum.de - Zeilenumbruch bzw. Wordtauschen funktioniert nicht wie erwartet

LabVIEWForum.de

Normale Version: Zeilenumbruch bzw. Wordtauschen funktioniert nicht wie erwartet
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen ich habe Probleme mit dem Zeilenumbruch bzw. den Word tauschen und bräuchte Eure Hilfe,

ich habe das Frontpanel und das Blockdiagramm als png angefügt, damit man meine Ausführungen besser verstehen kann.

1. String 8000401440bf eingeben und neben das Eingabefeld geklickt dann wurde in beiden Felder richtig angezeigt.
2. Im Eingabefeld hinter der Eingabe Enter gedrückt und den String 4001cd14c0bf eingegeben und wieder neben das Eingabefeld geklickt Im Textfeld wurde die Zeile richtig umgebrochen im Word getauscht Feld leider nicht.

Viele Grüße
Roland
Hallo Roland,

es wäre sehr hilfreich, wenn du dein VI anhängen würdest oder wenigstens sagst, welches VI du dort im Blockdiagramm verwendest, aber durch die Anzeige des ConnectorPanes "versteckst"...

Edit - falls es sich um SearchAndReplacePattern handelt (die passt vom ConnectorPane her):
- Du löscht alle Leerzeichen (falls deine Stringkonstante auf \-Code-Anzeige steht) aus deinem Inputstring. Da waren vorher keine enthalten, was willst du also löschen?
- Du kannst dir die String-Funktion auch anschauen, um zu verstehen, was sie macht...
Hallo Gerd,

das mit den Leerzeichen habe ich falsch dargestellt. In meinem Gesamtprojekt lese ich einen Beschleunigungssensor über USB ein. In dem String sind immer nach zwei Zeichen ein Leerzeichen, welches ich durch Labview entfernen lasse. Mein Beispiel habe ich einfachkeitshalber aus dem Gesamtprojekt rauskopiert und mit einer Eingabe versehen.

Anbei nun das VI bitte falls Sie es verändern unter 8.5 abspeichern, damit ich es einlesen kann.

Vielen Dank
Roland
(24.10.2013 16:53 )LabviewRoland schrieb: [ -> ]Anbei nun das VI bitte falls Sie es verändern unter 8.5 abspeichern, damit ich es einlesen kann.
Wo? Ich sehe nur dieselben Screenshots wie im ersten Beitrag. Hmm

Gruß, Jens
Hallo Jens,

sorry falsche Dateien hochgeladen.

Nun das angesprochene VI. Aber bitte wenn Änderungen einfliessen, dann bitte unter 8.5/8.5.1 abspeichern.

Viele Grüße
Roland
Hallo Roland,

du solltest einfach mal genauer hinschauen, was dein VI da so macht!

Stell doch mal den Anzeigemodus beider String-Ausgaben auf "\-Code" oder auch Hexcode, dann wirst du sehen, dass in beiden Stringanzeigen ein LF enthalten ist und das LF (dein Enter) durch das Wordtauschen auch seine Position ändert! Das siehst du auch, wenn du einfach mal die Stringanzeigen schmaler/breiter machst: der Zeilenumbruch bleibt an seiner Stelle...

Es ist eher fragwürdig, einen String inkl. aller enthaltener "Non-printable chars" mit SwapWord bearbeiten zu wollen. Vielleicht solltest du mal darlegen, warum du denkst, diesen Weg gehen zu müssen...
Hallo Gerd,

ich werde Deine Anmerkungen wenn ich wieder daheim bin anschauen.

Zu der Frage warum ich SwapWord durchführe folgende Erklärung:

80 00 40 14 40 BF swape ich im Endergebniss in die HEX-Werte 0080 = X-Wert, 1440 = Y-Wert, BF40 = Z-Wert und im Anschluss in Dezimal um. Da für je Achse (x,y,z) der Beschleunigungswert immer Low Word und dann High Word übertragen wird führe ich SwapWord durch.

Viele Grüße
Roland
Hallo Roland,

Zitat:Da für je Achse (x,y,z) der Beschleunigungswert immer Low Word und dann High Word übertragen wird führe ich SwapWord durch.
Das ist gut und verständlich.
Nur warum musst du unbedingt einen Zeilenumbruch einfügen? Und warum wunderst du dich hinterher über das zusätzliche (und störende) Zeichen in deinem Datenstrom?

Mach dir eine Funktion (VI), welche eine String aus 12 Zeichen erwartet und dir daraus 3 U16-Werte (oder schon umgerechnet&skaliert DBL-Werte) berechnet und diese als Array oder Cluster ausgibt. Die Stringeingabe sollte hier immer einzeilig geschehen, das kann man in den Eigenschaften des String-Controls einstellen...

P.S.: Bekommst du wirklich einen String aus 12 Hex-Zeichen? Oder vielleicht doch 6 Byte mit den entsprechenden Daten (lo1HI1lo2HI2lo3HI3)?
Hallo Gerd,

es sind 6 Byte (je 0-Fh) - mir ist jetzt nur der Unterschied nicht bekannt.

Das Zerlegen auf dreimal zwei Byte bekomme ich hin. Aber wenn ich den nächsten Wert vom Beschleunigungsensor einlese, dann ist da ein Zeilenumbruch da, der sich genauso wie mein Beispiel verhält d.h. ich weiß nicht wie ich das Problem umgehen soll. Aktuell kann ich einmal die Werte einlesen, danach läuft aber alles aus dem Ruder - wegen einem Steuerzeichen / Leerzeichen.

Wie umgeht man das ?

Oder wie sollte man ein VI einstellen, das Daten einliest damit jemand anderes es bewerten kann ?

Viele Grüße
Roland
Hallo Roland,

werden die Daten per RS232 eingelesen? Dann stelle das LF als Trennzeichen ("TermChar") ein und es wird automatisch weggefiltert.

Oder: Wenn du weißt, dass da ein LF als 7.Zeichen kommt, warum löscht du es dann nicht einfach weg? Hmm
Referenz-URLs