LabVIEWForum.de
RS232 Stringauswertung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: RS232 Stringauswertung (/Thread-RS232-Stringauswertung)

Seiten: 1 2


RS232 Stringauswertung - adamo - 27.12.2013 12:13

Hallo LVF User,

versuche mit meiner VI aus einem Datenstring über RS232 zwei ADC Werte
auszugeben, erhalte aber eine Fehlermeldung, die ich nicht verstehe.
Danke für Eure Hilfe!


RE: RS232 Stringauswertung - Y-P - 27.12.2013 12:45

Was für eine Fehlermeldung?

Gruß Markus


RE: RS232 Stringauswertung - adamo - 27.12.2013 13:39

Hallo Markus,
die Fehlermeldung lautet:

"Fehler 1 bei In String suchen (arg1) in adc_mk2board.vi"

Gruß


RE: RS232 Stringauswertung - Lucki - 27.12.2013 13:55

Das heißt: Der Formatstring passt nicht zum String. Wie lautet denn der aus VisaRead herauskommende String genau?


RE: RS232 Stringauswertung - adamo - 27.12.2013 16:32

Das Programmfragment für die Datensendung (ATMega8) lautet

if(count1>10) // Zykluszeit 10*10ms,Timersteuerung
{
count1=0;
adc_init(3); // Wandlerkanal an PC3
adc_value[0]=adc_single_conversion();
adc_init(4); // Wandlerkanal an PC3
adc_value[1]=adc_single_conversion();

sprintf(buffer_out,"%4d,%4d",adc_value[0],adc_value[1]);
lcd_gotoxy(0,0); // Kontrollanzeige mit LCD Einheit auf MC-Seite
lcd_puts(buffer_out);
uart_puts(buffer_out); // Wandlerwert Wert senden
uart_putc(0xa);
}


RE: RS232 Stringauswertung - Lucki - 27.12.2013 17:32

Ich hatte mir Deine Antwort eigentlich so vorgestellt, dass Du am String-Ausgang von Visa Read eine Anzeige anschließt und uns den Inhalt mal postest. Was ist schwierig daran?


RE: RS232 Stringauswertung - jg - 27.12.2013 18:27

Offtopic2
Fragen im Bereich Testforum werden im Normalfall ohne Vorwarnung gelöscht.
Such dir das nächste Mal bitte ein passendes Unterforum aus.

Gruß, Jens


RE: RS232 Stringauswertung - GerdW - 27.12.2013 21:17

Hallo adamo,

dank
Zitat:sprintf(buffer_out,"%4d,%4d",adc_value[0],adc_value[1]);
uart_puts(buffer_out); // Wandlerwert Wert senden
uart_putc(0xa)
sieht der VISA-Readbuffer wohl (beispielhaft) so aus:
Code:
123, 456<LF>
Das sollte man mit "%d, %d" als Formatstring scannen können...

Wenn das bei dir nicht funktioniert, musst du einfach mal den empfangenen String kontrollieren!

Wurdest du schon mal gebeten, den String im Readbuffer hier zu zeigen?


RE: RS232 Stringauswertung - adamo - 28.12.2013 00:47

Die Kommunikation funktioniert mit dem Terminalprogramm
Hterm dauerhaft!
Mit Labviewbricht erfolgt nach kurzer Zeit ein Abruch mit
Fehlermeldung (siehe Sendeprotokoll)


RE: RS232 Stringauswertung - Lucki - 28.12.2013 08:35

(28.12.2013 00:47 )adamo schrieb:  Die Kommunikation funktioniert mit dem Terminalprogramm
Hterm dauerhaft!
Also noch mal, damit Du kapierst: Fehlermeldung und Programmabbruch kommen von der Funktion "In String Suchen", und das hat mit den Visa-Funktionen überhaupt nichts zu tun - jedenfalls nicht direkt. Der VISA-Code innerhalb des Labview-Programms funktioniert fehlerfrei. Wenn Du also die nachfolgende String-Auswertung deaktivieren würdest, würde das Labview-Programm genaus so gut funktionieren wie das Terminalprogramm.

Aber immerhin kann man jetzt am Sondenüberwachungsfenster sehen, woran es liegt:
Die Steuerung mit Abschlusszeichen funktioniert entweder nicht (obwohl es richtig konfiguriert scheint), oder das Abschlußzeichen 0xA wird nicht mit gesendet.
Schau doch mal im Terminalprogramm nach: Wenn das Abschlußzeichen richtig gesendet wird, müßte nach je zwei gesendeten Werten ein neue Zeile geschrieben werden. Wenn das nicht der Fall ist, kann das Labview - Progamm so nicht funktionieren.

Nachtrag: Was sieht man im Sendpuffer-String?
Richtig wäre:
549161, 549161
Man sieht aber:
...... 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 549161, 54916
D.h eine quasi unendlich lange Folge von Werten ohne Zeilenwechsel. Vias Read hat den Puffer nicht ausgelesen, weil ein Zeilenendezeichen kam, sondern weil das programmierte Limit von 150 Zeichen erreicht war. Dieses Limit wurde - wie sollte es anders sein - mitten in einem Wert erreicht, so dass die letzte Zahl verstümmelt übertragen wurde (54916 statt 549161).