www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Antwort abwarten


Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Horni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!)

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.