ESP8266 Senden von AT Befehlen

OP #5169793
Lesenswert?
• ▲
▼
Hallo liebes Forum,

ich hab eine Frage bezüglich des sendens von AT Befehlen und einer 
Wartezeit. Das ESP Antwortet auf die meisten AT Befehle nach einer 
gewissen Zeit mit "OK", daher würde ich auf diese Antwort gerne in einer 
Funktion warten, um nicht immer eine fixe Wartezeit, sondern nur eine 
maximale Wartezeit anzugeben.
Die Funktion soll dann beendet werden, wenn die IF-Bedingung zutrifft 
bzw wenn das ESP die Antwort "OK" gesendet hat.

Der Empfangsbuffer wird durch eine IRQ beschrieben.
Der folgende Code beendet leider nicht richtig, habe ich etwas 
übersehen?

LG Thom
1
int Write_ATCMD(UART_HandleTypeDef *huart,uint8_t *ATCMD, uint32_t Wartezeit)
2
{
3
  uint32_t tickstart = 0;
4
  uint32_t i;
5
  HAL_UART_Transmit(&huart6,ATCMD,strlen(ATCMD),1000);
6
  tickstart = HAL_GetTick();
7
  while((HAL_GetTick() - tickstart) < Wartezeit)
8
  {
9
    if(strstr(empfangsbuffer,"OK"))
10
    {
11
      return 1;
12
    }
13

14
  }
15
  return 0;
16
}
Gast #5169944
Lesenswert?
• ▲
▼
Thom E. schrieb:
> ich hab eine Frage bezüglich des sendens von AT Befehlen und einer
> Wartezeit. Das ESP Antwortet auf die meisten AT Befehle nach einer
> gewissen Zeit mit "OK", daher würde ich auf diese Antwort gerne in einer
> Funktion warten, um nicht immer eine fixe Wartezeit, sondern nur eine
> maximale Wartezeit anzugeben.
> Die Funktion soll dann beendet werden, wenn die IF-Bedingung zutrifft
> bzw wenn das ESP die Antwort "OK" gesendet hat.

Ich glaube, dass du einen einfachen endlichen Automaten bauen möchtest.
Um, das Ganze dann nebenläufig abzuhandeln....
Gast #5170980
Lesenswert?
• ▲
▼
> Diese AT-Firmware ist der größte Schmu und verdient nicht mehr
> Aufmerksamtkeit, als nur irgend nötig.

Erzähle das mal den Herstellern von GSM Modems und Bluetooth Modulen. 
Die Firmware hat IMO durchaus ihre Daseinsberechtigung. Das Benutzen der 
AT-Schnittstelle ist auch gar nicht großartig kompliziert.

Es ist eher eine Frage, ob man asynchrone Schnittstellen mag bzw. 
beherrscht.
Gast #5171254
Lesenswert?
• ▲
▼
Stefan U. schrieb:
> Erzähle das mal den Herstellern von GSM Modems und Bluetooth Modulen.

Nee...
Die weit verbreitete Ablehnung der AT Software ist schon ESP bezogen.

Inkompatibilitäten!
Über die Jahre, unterschiedliche Zeilenenden.
Unterschiedliche Baudraten, nach einem Reset.
Unterschiedliches Antwortverhalten.
Differenzen im Befehlssatz.
Versionsunterschiede, ohne Ende.
Dazu noch einige Instabilitäten.

Das ist eine kleine Hölle.

Und für diese Hölle kann man nicht irgendwelche Hersteller von Bluetooth 
Modulen verantwortlich machen.
Dieses Ei haben sich die Espressif Leute selber ans Knie genagelt.
OP #5171272
Lesenswert?
• ▲
▼
Hallo zusammen, ich glaube das Problem ist nur meine Verwendung der 
HAL-Funktionen, nicht die AT-Befehle an sich, wenn ich eine fixe 
Wartezeit einsetzte, funktioniert ja alles.
Die Frage ist nur, ob ich es so machen kann, dass die Funktion sofort 
beendet, wenn im Empfangsbuffer mittels strstr() zum Beispiel "OK" 
gefunden wird und ansonsten die maximale Zeit warte.

Die Funktion habe ich von HAL_Delay übernommen. Und einfach in deren 
while{}- Schleife die strstr() eingebaut. Vermutlich fehlt da etwas.

Liebe Grüße

Antwort schreiben

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.

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.