Gast
#6061373
Guten Morgen, es ist mal wieder Brett-vorm-Kopf Zeit. Ich gucke jetzt eine halbe Stunden auf meinen Quellcode und verstehe gerade die Welt nicht mehr. Der Fehler muss dermaßen dämlich sein, dass ich nicht drauf komme, was ich falsch mache. Vielleicht hat ja jemand von euch gerade den richtigen Druchblick, aber der Reihe nach. Ich habe einen Ringbuffer, in den ich Daten schreibe. Dazu einen ByteCount wie voll der Buffer ist. Daten werden per UART in den Buffer geschrieben und wenn ich CR/LF Empfangen habe, soll die Nachricht verarbeitet werden. Oder momentan zum Debuggen nur wieder ausgegeben. Klappt auch alles, bis auf ein paar Sonderfälle, die Systembedingt sind. Für die muss ich jetzt passende Workarrounds bauen. Einer dieser Workarrounds ist die Abfrage, dass nicht nur die Nachricht korrekt Empfangen wurde, was ja durch CR/LF erreicht wird, sonder dass auch wirklich Daten im Puffer sind. Könnte ja jemand nur CR/LF senden.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
Also Prüfung auf MessageComplete && Buffer.ByteCount. Im Debugger sehe ich, dass beide Werte ungleich 0 sind. Was meine Erwartungshaltung ist, nur wird die Abfrage nie wahr. Das Programm steht an der Stelle. Nehme ich die Abfrage auf ByteCount raus, klappt die If-Abfrage auf MessageComplete. Die nachfolgende While Schleife wird auch brav abgearbeitet. Buffer_Read zählt den ByteCount runter, die Ausgabe passt. Wie kann es also sein, dass das alles Funktioniert, die vermalledeite if-Abfrage aber nie Erfüllt wird? Gruß und Danke, Thomas
