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 

Problem: Empfangene Byte Anzahl ändert sich



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!

25.03.2015, 15:02
Beitrag #1

MKVH28 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Mar 2015

2014 StudentenVersion
2015
DE_EN



Problem: Empfangene Byte Anzahl ändert sich
Hallo,

ich arbeite neuerdings mit LabView und konnte bis jetzt, dank des Forums, alle meine Fragen lösen.
Jetzt stehe ich gerade vor einem Problem, welches ich nicht lösen bzw. verstehen kann.

Ich sende mit meinem Controller 2 float-Zahlen über RS232 an den PC. Diese lasse ich mir dann in einem Graphen darstellen. Mein Problem ist jetzt, dass sich nach einer festen Zeit die Byte Reihenfolge ändert und ich dann falsche Werte kriege. Wenn ich jetzt mein .VI kurz stoppe und neustarte (bis ich wieder die richtige Byte-Reihenfolge erwischt habe), läuft alles bis wieder die Byte-Reihenfolge spinnt. Das bedeutet mein Controller sendet immer noch das richtige. Das Verhalten sieht man in den beiden Bildern, die ich mit hinzugefügt habe. Die Zeit ist abhängig von der Byte Anzahl. Das ist das einzige, was ich festellen konnte.

Ich hoffe, ich konnte mein Problem gut genug beschreiben und bin für jede Hilfe dankbar !

       

Version: LabView 2014 StudentenVersion


14.0 .vi  werte_einlesen.vi (Größe: 131,02 KB / Downloads: 290)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2015, 15:03
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Problem: Empfangene Byte Anzahl ändert sich
Ohne Blick auf dein VI Glas1 Du hast den Termination Char bei der Einstellung der RS232 nicht deaktiviert.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2015, 15:14
Beitrag #3

MKVH28 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Mar 2015

2014 StudentenVersion
2015
DE_EN



RE: Problem: Empfangene Byte Anzahl ändert sich
Hallo Jens,

danke für deine Hilfe !

'Termination Char' habe ich deaktiviert, daran liegt es nicht.

Gruß MKVH28
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2015, 15:16 (Dieser Beitrag wurde zuletzt bearbeitet: 25.03.2015 15:20 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem: Empfangene Byte Anzahl ändert sich
@Jens: Das TermChar ist deaktiviert - und das ist hier das Problem…

Hallo MKVH,

dein µC sendet also fortlaufend Werte, jeweils 7 Byte (1Byte Kennung, 6 Byte Payload). Da es keine Termminierung mittels TermChar gibt, kann es bei Problemen mit der Schnittstelle zu "Aussetzern" kommen - es fehlt einfach die Möglichkeit, sich auf die Botschaft zu synchronisieren! (Wieso zeigt dein "unsigned byte array" 9 Elemente an, wenn du nur 7 Array-Elemente auswertest?)

Wie sieht denn deine Payload genau aus? Du dekodierst sie mittels TabstringToArray und dem Komma als Trennzeichen. Wieviele Zahlen packst du denn da in diese 6 Bytes hinein? (Wie kann man aus nur 6 Bytes inkl. Trennzeichen ein 2D-Array generieren?)

Wie wäre denn folgendes Format im String deines µC: 1 Byte Kennung (ASCII 0-9), 6 Byte Payload (ASCII wie bisher), 1 Byte TermChar (LF)?
Alternativ kann man seine Daten auch alle mit gelöschtem MSB senden und die Kennung durch ein gesetztes MSB markieren. Dann kann man auch wieder den Botschaftsempfang synchronisieren…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2015, 15:37
Beitrag #5

MKVH28 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Mar 2015

2014 StudentenVersion
2015
DE_EN



RE: Problem: Empfangene Byte Anzahl ändert sich
Hallo GerdW und danke für deine Hilfe !

(25.03.2015 15:16 )GerdW schrieb:  (Wieso zeigt dein "unsigned byte array" 9 Elemente an, wenn du nur 7 Array-Elemente auswertest?)

Das war nur zum testen, dachte mein Controller, würde einfach mehr Bytes senden ...

(25.03.2015 15:16 )GerdW schrieb:  Wie sieht denn deine Payload genau aus?

Was ich sende: xxx.xx (3 Vorkommazahlen, Komma, 2 Nachkommazahlen)

(25.03.2015 15:16 )GerdW schrieb:  Wie wäre denn folgendes Format im String deines µC: 1 Byte Kennung (ASCII 0-9), 6 Byte Payload (ASCII wie bisher), 1 Byte TermChar (LF)?
Alternativ kann man seine Daten auch alle mit gelöschtem MSB senden und die Kennung durch ein gesetztes MSB markieren. Dann kann man auch wieder den Botschaftsempfang synchronisieren…

Ich werde das einmal ausprobieren und melde mich dann wieder !

Gruß MKVH28
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2015, 16:03
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Problem: Empfangene Byte Anzahl ändert sich
Hallo MKVH,

Zitat:Was ich sende: xxx.xx (3 Vorkommazahlen, Komma, 2 Nachkommazahlen)
Sendest du nun ein Komma oder einen Punkt?
Dein VI spricht für die Variante "Punkt"…

Wieso verwendest du dann nicht einfach ScanFromString, um deinen einzelnen Wert von String nach DBL umzuwandeln? Warum dieser Umweg über SpreadsheetStringToArray und ein 2D-Array?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.03.2015, 18:23
Beitrag #7

MKVH28 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Mar 2015

2014 StudentenVersion
2015
DE_EN



RE: Problem: Empfangene Byte Anzahl ändert sich
(25.03.2015 16:03 )GerdW schrieb:  Hallo MKVH,

Zitat:Was ich sende: xxx.xx (3 Vorkommazahlen, Komma, 2 Nachkommazahlen)
Sendest du nun ein Komma oder einen Punkt?
Dein VI spricht für die Variante "Punkt"…

Mein Fehler ! Meinte natürlich 'Punkt'.

(25.03.2015 16:03 )GerdW schrieb:  Wieso verwendest du dann nicht einfach ScanFromString, um deinen einzelnen Wert von String nach DBL umzuwandeln? Warum dieser Umweg über SpreadsheetStringToArray und ein 2D-Array?

Weil ich den Block noch nicht kannte, habe ihn jetzt eingesetzt, noch habe ich einen Fehler drinne (das Format am Eingang ist falsch), sobald ich den behoben habe, lade ich es hoch.

Das mit dem 'Termination Char' hat den Fehler nicht behoben, aber nun muss ich nicht nach der richtigen ByteReihenfolge suchen, danke für diesen Tipp ! Irgendwie sagt mir mein Gefühl, dass in LabView ein Speicher überläuft oder ähnliches, falls das Sinn macht.

Gruß MKVH28
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.03.2015, 17:39 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2015 09:10 von Lucki.)
Beitrag #8

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: Problem: Empfangene Byte Anzahl ändert sich
(25.03.2015 18:23 )MKVH28 schrieb:  Irgendwie sagt mir mein Gefühl, dass in LabView ein Speicher überläuft oder ähnliches, falls das Sinn macht.
Dein Gefühl wird Dich da nicht täuschen. Es hängt aber davon ab, welchen Wert Du der Wait-Funktion zugewiesen hast. Anfänger wissen oft nicht, wann eine Wait-Funktion in einer Schleife sein sollte und wann nicht. Hier jedenfalls nicht! Die Lesefunktion wartet selbst mit Lesen, bis eine geforderte Bedingung eingetroffen ist uund synchronisiert damit den Lesvorgang.
Mit aktivierter Zeileenderkennung würde Dein aufgeblähtes Vi in quasi Nichts zusammenschrumpfen, es sähe dann etwa so aus:
   
Edit: Das funktioniert aber nur, wenn man zuerst das Programm aufruft, und dann das Gerät einschaltet. Für den umgekehrt Fall wäre noch eine Fehlerbehandlung erforderlich, denn dann ist zu erwarten, dass man bei Start mitten in einem Datensatz oder sogar mitten in einem gerade gesendetem Byte mit dem Empfang beginnt.
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
  dynamische Byte-Anzahl einer Nachricht Gottimp 6 4.953 23.03.2021 18:15
Letzter Beitrag: GerdW
  Empfangene Daten aus VISA filtern (Tiefpass) bboygro 8 7.413 17.05.2017 16:07
Letzter Beitrag: jg
  Byte (hex) erzeugt Timeout im VISA Lolleg 2 4.263 06.06.2014 13:26
Letzter Beitrag: Lolleg
  Jeweiliges High und Low Byte richtig zusammenfügen rookieNo.x 2 7.957 29.10.2012 18:43
Letzter Beitrag: rookieNo.x
  Spezielles Byte nach Eingang weiterverarbeiten, RS232 Maxix 16 14.263 06.02.2012 16:34
Letzter Beitrag: Maxix
  Delay nach jedem gesendeten Byte hans75 5 6.074 21.09.2010 16:13
Letzter Beitrag: GerdW

Gehe zu: