25.03.2015, 15:02
Beitrag #1
|
MKVH28
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
werte_einlesen.vi (Größe: 131,02 KB / Downloads: 290)
|
|
|
25.03.2015, 15:03
Beitrag #2
|
jg
CLA & CLED
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 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.
|
|
|
25.03.2015, 15:14
Beitrag #3
|
MKVH28
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
|
|
|
25.03.2015, 15:37
Beitrag #5
|
MKVH28
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
|
|
|
25.03.2015, 16:03
Beitrag #6
|
GerdW
______________
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?
|
|
|
25.03.2015, 18:23
Beitrag #7
|
MKVH28
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
|
|
|
26.03.2015, 17:39
(Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2015 09:10 von Lucki.)
Beitrag #8
|
Lucki
Tech.Exp.2.Klasse
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.
|
|
|
| |