Serial pour utiliser avec module ESP10 en mode pont

Dependents:   souflerie-sp3-wifi-F411re-2 souflerie-sp2-wifi-F411re-2 souflerie-sp1-wifi-F411re-2 Programme_Final_V6

Committer:
schnf30
Date:
Sun May 23 13:17:47 2021 +0000
Revision:
0:5710255b339d
Bouton

Who changed what in which revision?

UserRevisionLine numberNew contents of line
schnf30 0:5710255b339d 1 #include "mbed.h"
schnf30 0:5710255b339d 2 #include "wifiesp8266.h"
schnf30 0:5710255b339d 3
schnf30 0:5710255b339d 4 /*WifiEsp8266::WifiEsp8266(PinName Txd, PinName Rxd) : RawSerial(Txd,Rxd)
schnf30 0:5710255b339d 5 {
schnf30 0:5710255b339d 6 baud(Baud);
schnf30 0:5710255b339d 7 _DataPtr = 0;
schnf30 0:5710255b339d 8 _DataReady = false;
schnf30 0:5710255b339d 9 // attach(this,&WifiEsp8266::receive, RawSerial::RxIrq);
schnf30 0:5710255b339d 10 }*/
schnf30 0:5710255b339d 11
schnf30 0:5710255b339d 12 WifiEsp8266::WifiEsp8266(PinName Txd, PinName Rxd, PinName En) : RawSerial(Txd,Rxd), _En(En)
schnf30 0:5710255b339d 13 {
schnf30 0:5710255b339d 14 baud(Baud);
schnf30 0:5710255b339d 15 _En = 1;
schnf30 0:5710255b339d 16 _DataPtr = 0;
schnf30 0:5710255b339d 17 _DataReady = false;
schnf30 0:5710255b339d 18 attach(this,&WifiEsp8266::receive, RawSerial::RxIrq);
schnf30 0:5710255b339d 19 }
schnf30 0:5710255b339d 20 char * WifiEsp8266::read(void)
schnf30 0:5710255b339d 21 {
schnf30 0:5710255b339d 22 _DataReady = false;
schnf30 0:5710255b339d 23 return _Data;
schnf30 0:5710255b339d 24 }
schnf30 0:5710255b339d 25
schnf30 0:5710255b339d 26 bool WifiEsp8266::dataready(void)
schnf30 0:5710255b339d 27 {
schnf30 0:5710255b339d 28 return _DataReady;
schnf30 0:5710255b339d 29 }
schnf30 0:5710255b339d 30
schnf30 0:5710255b339d 31 // reception phrase de type '$' "....' "\r\n"
schnf30 0:5710255b339d 32 void WifiEsp8266::receive(void)
schnf30 0:5710255b339d 33 {
schnf30 0:5710255b339d 34 bool _PhraseComplete = false;
schnf30 0:5710255b339d 35 char inChar;
schnf30 0:5710255b339d 36 while (readable() && (_PhraseComplete == false)) {
schnf30 0:5710255b339d 37 inChar = getc();
schnf30 0:5710255b339d 38 switch (inChar) {
schnf30 0:5710255b339d 39 case '$' :
schnf30 0:5710255b339d 40 _DataPtr = 0;
schnf30 0:5710255b339d 41 _DataTmp[_DataPtr++] = inChar;
schnf30 0:5710255b339d 42 _DataTmp[_DataPtr] = 0;
schnf30 0:5710255b339d 43 break;
schnf30 0:5710255b339d 44 case '\n' :
schnf30 0:5710255b339d 45 if (_DataPtr > 1) {
schnf30 0:5710255b339d 46 strcpy(_Data,_DataTmp);
schnf30 0:5710255b339d 47 _PhraseComplete = true;
schnf30 0:5710255b339d 48 }
schnf30 0:5710255b339d 49 _DataTmp[0] = 0;
schnf30 0:5710255b339d 50 _DataPtr = 0;
schnf30 0:5710255b339d 51 break;
schnf30 0:5710255b339d 52 case '\r' :
schnf30 0:5710255b339d 53 break;
schnf30 0:5710255b339d 54 default :
schnf30 0:5710255b339d 55 if (_DataPtr > 0) {
schnf30 0:5710255b339d 56 _DataTmp[_DataPtr++] = inChar;
schnf30 0:5710255b339d 57 _DataTmp[_DataPtr] = 0;
schnf30 0:5710255b339d 58 }
schnf30 0:5710255b339d 59 }
schnf30 0:5710255b339d 60 if (_DataPtr >= maxdata) { // si phrase trop longue vide phrase
schnf30 0:5710255b339d 61 _DataTmp[0] = 0;
schnf30 0:5710255b339d 62 _DataPtr = 0;
schnf30 0:5710255b339d 63 _PhraseComplete = false;
schnf30 0:5710255b339d 64 }
schnf30 0:5710255b339d 65 }
schnf30 0:5710255b339d 66 _DataReady = _PhraseComplete;
schnf30 0:5710255b339d 67 }