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
wifiesp8266.cpp@0:5710255b339d, 2021-05-23 (annotated)
- Committer:
- schnf30
- Date:
- Sun May 23 13:17:47 2021 +0000
- Revision:
- 0:5710255b339d
Bouton
Who changed what in which revision?
User | Revision | Line number | New 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 | } |