UART Antwort abwarten

Gast #163410
Hallo Forum...
nachdem ich Euch nun einen Tag mit der Modemverbindung zu meinem Handy
genrvt habe, geht's jetzt weiter :-)

Wenn ich im Terminalprogramm eine SMS absetzen möchte, gebe ich erst
den Befehl AT+CMGS="01711234567" gefolgt von <CR>
Jetzt kommt der Text.
Im Terminalprogramm bekomme ich eine Eingabeaufforderung in Form von
'>'.
Wie kann ich diese im MC abwarten, bevor ich den Text übers UART
sende?
Bis jetzt sende ich den Text direkt hinterher, bekomme aber nur einen
Teil des Textes in der SMS. Vermutlich gehen hier die ersten Zeichen
verloren, weil das Handy noch nicht bereit ist.
Hat da jemand einen Tipp?
Gast
Hallo Carsten,

wieso frägst Du nicht einfach in Deiner Empfangsroutine ab, ob Du das
'>' empfangen hast und schickst erst anschließend Deine SMS Botschaft
raus?

Mfg

Horni
Gast
Probiers doch einfach mal mit ein wenig Verzögerung aus...

So ca. 1 Sekunde sollte fürs erste Reichen.
Oder Du baust wirklich eine Erkennung für das > ein.
Das würde ich in etwa so machen:

2. modem_send("AT+CMGS=...");
3. while(!findstr(modem_rxbuf, ">"));
4. modem_send(sms_buffer);

(so ähnlich jedenfalls, Pseudocode!)
Gast
...mhh
eigentlich muss ich ja nur irgendeine Antwort abwarten...
Hab das jetzt mal so versucht:
zuerst UART initialisieren:

  ldi Temp1,0b00011000  ;TX und RX einschalten
  out UCR,temp1    ;
  ldi Temp1,25    ;Baudrate auf 9600
  out UBRR,Temp1

Senden:

;Modem
  ldi ZL, LOW(Sendbefehl*2)
  ldi ZH, HIGH(Sendbefehl*2)
  rcall print_Modem

        rcall nextline
Antwort1:
  sbis USR,RXC
  rjmp Antwort1

...hier bleibt der MC aber offensichtlich in der Schleife hängen.
Muss ich vor dem Empfangen noch was machen ?
Im Terminal funktioniert es beim ersten mal.
Sobald ich ein Zeichen sende, kommt der zweite Text.
Wenn ich aber den Befehl ein zweites mal sende, kommt der Text sofort
hinterher.

Die Eingabaufforderung wird aber doch vom Handy geschickt oder macht
das der Terminal alleine?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.