| 
	
		
			| 
					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: 349) 
				
				
				 |  
    |  
			|  |  
	
		
			| 
					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.529
 Registriert seit: May 2009
 
 LV2019 (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.
				 
				
				 |  
    |  
			|  |  |  |