Warten bis String A eine gewisse Länge hat (BASCOM)

OP #1426839
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!
#1426850
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
Gast #1426900
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.