Guten Tag Ich habe ein problem weshablb ich hier schreibe^^ Also: Ich bekomme einen String von der länge 81 über die UART-Schnittstelle. (mit Interruupt. Wie kann ich mein Programm warten lassen (also das es nichts anderes macht ausser die Interrupts und halt warten bis der String die Länge 81 hat?) Hier mein Code Do D = Right(a , 1) If D = Chr(010) Then If Len(a) = 17 Then B = Right(a , 14) B = Left(b , 4) If B = "CMTI" Then Cls Lcd "CMTI" A = "" Print "at+cmgr=1" Do If Len(a) = 81 Then Until Len(a) = 81 A = Right(a , 9) A = Left(a , 1) Cls Lcd A Do Print A; Loop Wait 1 End If End If End If End If Loop (nur die wichtige Stelle...) Zur Erklärung: Der Atmega wird über einen 17 Zeichen langen String darüber informiert, dass es Neuigkeiten gibt. Dieser String zeichnet sich durch nen LF am Ende aus. Um die Neuigkeiten zu erhalten, schickt er dann den AT-Command "at+cmgr=1" und erhält darauffolgend den String, allerdings soll er warten bis der vollständig angekommen ist (81 Zeichen) Oder gibts fürs ganze noch ne schönre Lösung? Grüsse habs glaub geschafft jungs, danke trotzdem!
dim laenge as byte Do D = Right(a , 1) If D = Chr(010) Then If Len(a) = 17 Then B = Right(a , 14) B = Left(b , 4) If B = "CMTI" Then Cls Lcd "CMTI" A = "" Print "at+cmgr=1" Do If Len(a) = 81 Then Until Len(a) = 81 <- ??????????????? A = Right(a , 9) A = Left(a , 1) Cls Lcd A Do Print A; Loop Wait 1 End If End If End If End If laenge = len(a) Loop until laenge = 81 viel erfolg
Oder gibts fürs ganze noch ne schönre Lösung? Ja. Gibt es. Ich nehme an diese Aufgabe laeuft repetitiv durch. Was geschieht wenn jemand den Stecker zieht ? Mach einen Timeout rein, von 1 Sekunde oder so. Der Timeout started mit dem Anfang der Meldung. Wenn vor Ablauf des Timeouts, das Ende nicht kam, beginn von vorne.
Wollte das vielleicht mal ein Ringpuffer werden...?
Im Bascom gibt unter c:\programme\mcs...\sample\ rs232buffer Programme wäre ggf. eine bessere Lösung http://www.comwebnet.de
Okay lohnt sich manchmal hallt doch nochmal in den Thread reinzuschauen;) Danke, werd mir die Beispiele anschaun. Was ist ein Ringpuffer? :S
> Was ist ein Ringpuffer? :S
Eine Warteschlange für "vernachlässigte" Bytes. ;-)
...
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.