mein Problem ist einfach beschrieben: innerhalb des Webservers von FreeRTOS habe ich eine serielle Kommunikation eingebaut. Die sendet und die Gegenstelle antwortet. Das funktioniert auch wunderbar. Nur die Auswertung: Na ja... Da ich weiß wie viele Zeichen als Antwort kommen ruf ich folgende Routine eben x mal auf wobei x die Anzahl der Zeichen sind. void UART1Read_String(void) { while ( (UART1_LSR & 0x01) == 0); { HART_Buffer_bin[Telegrammelement] = UART1_RBR; Telegrammelement++; } } } Da die ersten Zeichen nur zur synchronisation diesen überprüf ich deren Anzahl(erstes Zeichen nach der Synchronisation 0x86): x= 0; while (HART_Buffer_bin[x++] != 0x86);{} Header = x; dannach schiebe ich eben um diese Anzahl verschoben: speicher1[y]=Buffer_bin[y + Header]; und schon habe ich nur noch den Teil mit Informationen. Nun mein Problem: Dieses lass ich regelmäßig durchlaufen und beim ersten mal geht es auch gut. Die Informationen die für mich interessant sind lege ich in einem neunen Vector ab um sie so dauerhaft zwischen zu speichern bis ein neuer Messwert kommt um den dann zu überschreiben. Jedoch werden die neunen Messwerte bei Durchläufen nicht mehr korrekt abgelegt sondern dann einfach mit 0x00 gefüllt. Ds schieben funktioniert dann auch das habe ich mit dem hyperterminal überprüft indem ich mir speicher1 aus gegeben habe. Jedoch wenn ich mir Buffer_bin zum Terminal Programm schicken lasse sind die erssten ZEichen schon nciht mehr die zu synchronisation obwohl ich Telegrammelement=0; setzt vor dem aufruf der leseroutine. Ich hoffe das war nicht zu viel und auch noch verständlich. Ausserdem hoffe ich das ihr mir ein Tip geben könnt warum das einlesen nicht so klappt wie es sollte. Grüße an alle lutz
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.