Сергей Купавцев
/
GSMandSdWork
gsm and sd card
main.cpp@3:7b76a34e07c0, 2019-07-11 (annotated)
- Committer:
- Sergey_K
- Date:
- Thu Jul 11 11:14:05 2019 +0000
- Revision:
- 3:7b76a34e07c0
- Parent:
- 2:16796fbfa94d
add new SD work
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sergey_K | 0:f7e73515c3fc | 1 | //It is the code of the GPRS communication by the use of the Sim800 module. |
Sergey_K | 0:f7e73515c3fc | 2 | //This code has work is "to upload data on data.sparkfun.com in every 5 seconds. |
Sergey_K | 0:f7e73515c3fc | 3 | //To check the uploaded data the URL is "data.sparkfun.com/streams/roYVdJgWrXUpxVpDYJpA". |
Sergey_K | 0:f7e73515c3fc | 4 | |
Sergey_K | 0:f7e73515c3fc | 5 | #include "mbed.h" |
Sergey_K | 0:f7e73515c3fc | 6 | #include <string> |
Sergey_K | 1:441cdd24333e | 7 | #include "SDBlockDevice.h" |
Sergey_K | 1:441cdd24333e | 8 | #include "FATFileSystem.h" |
Sergey_K | 3:7b76a34e07c0 | 9 | #include "Base64.h" |
Sergey_K | 2:16796fbfa94d | 10 | |
Sergey_K | 0:f7e73515c3fc | 11 | #define GSMRX PA_9 |
Sergey_K | 0:f7e73515c3fc | 12 | #define GSMTX PA_10 |
Sergey_K | 0:f7e73515c3fc | 13 | #define SAMPLE_FLAG1 (1UL << 0) |
Sergey_K | 0:f7e73515c3fc | 14 | #define SAMPLE_FLAG2 (1UL << 9) |
Sergey_K | 1:441cdd24333e | 15 | #define BUFFER_SIZE 50 |
Sergey_K | 0:f7e73515c3fc | 16 | |
Sergey_K | 1:441cdd24333e | 17 | typedef struct { |
Sergey_K | 1:441cdd24333e | 18 | uint8_t *lcdData; |
Sergey_K | 1:441cdd24333e | 19 | char logMessage; |
Sergey_K | 1:441cdd24333e | 20 | } message_t; |
Sergey_K | 2:16796fbfa94d | 21 | //Инициализация ивентов и очереди |
Sergey_K | 1:441cdd24333e | 22 | Queue<message_t, 32> queue; |
Sergey_K | 1:441cdd24333e | 23 | MemoryPool<message_t, 100> mpool; |
Sergey_K | 1:441cdd24333e | 24 | EventQueue evq; |
Sergey_K | 2:16796fbfa94d | 25 | EventQueue sdEvent; |
Sergey_K | 2:16796fbfa94d | 26 | //Инициализация потоков |
Sergey_K | 1:441cdd24333e | 27 | Thread eventThread; |
Sergey_K | 1:441cdd24333e | 28 | Thread gsmTask; |
Sergey_K | 1:441cdd24333e | 29 | Thread sdEventThread; |
Sergey_K | 1:441cdd24333e | 30 | Thread sdLogWrite; |
Sergey_K | 2:16796fbfa94d | 31 | //Флаги |
Sergey_K | 2:16796fbfa94d | 32 | int timeCounter = 0; |
Sergey_K | 1:441cdd24333e | 33 | int c; |
Sergey_K | 2:16796fbfa94d | 34 | bool pressedButton = false; |
Sergey_K | 2:16796fbfa94d | 35 | uint8_t counter=0; |
Sergey_K | 2:16796fbfa94d | 36 | int answerCounter = 0; |
Sergey_K | 2:16796fbfa94d | 37 | int readTimeStart=0; |
Sergey_K | 2:16796fbfa94d | 38 | //Буфферы |
Sergey_K | 1:441cdd24333e | 39 | string timeBuffer; |
Sergey_K | 2:16796fbfa94d | 40 | uint8_t request[50] = "Hello!I am SIM800,I send you message from stm32"; |
Sergey_K | 1:441cdd24333e | 41 | uint8_t *receiveMsg[50]; |
Sergey_K | 0:f7e73515c3fc | 42 | char answer[300]; |
Sergey_K | 2:16796fbfa94d | 43 | char sslBuffer[1402]; |
Sergey_K | 3:7b76a34e07c0 | 44 | char * encoded; |
Sergey_K | 3:7b76a34e07c0 | 45 | string id_Stm; |
Sergey_K | 2:16796fbfa94d | 46 | //Прерывания |
Sergey_K | 1:441cdd24333e | 47 | InterruptIn button(BUTTON1); |
Sergey_K | 3:7b76a34e07c0 | 48 | InterruptIn sd_button(D5); |
Sergey_K | 2:16796fbfa94d | 49 | //Настройка пинов |
Sergey_K | 0:f7e73515c3fc | 50 | DigitalOut myLed(LED1); |
Sergey_K | 3:7b76a34e07c0 | 51 | DigitalOut RedLed(LED3); |
Sergey_K | 3:7b76a34e07c0 | 52 | DigitalIn myButton(D5); |
Sergey_K | 0:f7e73515c3fc | 53 | Serial sim800(GSMRX,GSMTX); //Serial communication of the sim800 and pc. |
Sergey_K | 0:f7e73515c3fc | 54 | Serial pc(SERIAL_TX,SERIAL_RX); |
Sergey_K | 2:16796fbfa94d | 55 | //Инициализации SD карты |
Sergey_K | 1:441cdd24333e | 56 | SDBlockDevice sd(D11, D12, D13, D4); |
Sergey_K | 1:441cdd24333e | 57 | FATFileSystem fs("sd"); |
Sergey_K | 3:7b76a34e07c0 | 58 | Base64 n; |
Sergey_K | 0:f7e73515c3fc | 59 | |
Sergey_K | 3:7b76a34e07c0 | 60 | void encodeBase64() |
Sergey_K | 3:7b76a34e07c0 | 61 | { |
Sergey_K | 3:7b76a34e07c0 | 62 | pc.printf("Read uid !\r\n"); |
Sergey_K | 3:7b76a34e07c0 | 63 | volatile uint32_t *UniqueID = (uint32_t *)0x1FFF7A10; |
Sergey_K | 3:7b76a34e07c0 | 64 | volatile uint32_t __UniqueID[2]; |
Sergey_K | 3:7b76a34e07c0 | 65 | __UniqueID[0] = UniqueID[0]; |
Sergey_K | 3:7b76a34e07c0 | 66 | __UniqueID[1] = UniqueID[1]; |
Sergey_K | 3:7b76a34e07c0 | 67 | __UniqueID[2] = UniqueID[2]; |
Sergey_K | 3:7b76a34e07c0 | 68 | size_t encodedLen; |
Sergey_K | 3:7b76a34e07c0 | 69 | char * encoded = n. Encode ((char*)UniqueID,12 ,&encodedLen); |
Sergey_K | 3:7b76a34e07c0 | 70 | pc.printf("STMuid:{%s} \ r \ n" ,encoded); |
Sergey_K | 3:7b76a34e07c0 | 71 | } |
Sergey_K | 2:16796fbfa94d | 72 | //Настройка времени |
Sergey_K | 1:441cdd24333e | 73 | void simTime() |
Sergey_K | 1:441cdd24333e | 74 | { |
Sergey_K | 2:16796fbfa94d | 75 | sim800.printf("AT\r\n"); |
Sergey_K | 2:16796fbfa94d | 76 | wait(1); |
Sergey_K | 2:16796fbfa94d | 77 | sim800.printf("AT+CLTS=1\r\n"); |
Sergey_K | 2:16796fbfa94d | 78 | wait(1); |
Sergey_K | 2:16796fbfa94d | 79 | sim800.printf("AT+CNTPCID=1\r\n"); |
Sergey_K | 2:16796fbfa94d | 80 | wait(1); |
Sergey_K | 2:16796fbfa94d | 81 | sim800.printf("AT+CNTP=ntp1.vniiftri.ru,7\r\n"); |
Sergey_K | 2:16796fbfa94d | 82 | wait(1); |
Sergey_K | 2:16796fbfa94d | 83 | sim800.printf("AT+CNTP\r\n"); |
Sergey_K | 2:16796fbfa94d | 84 | wait(1); |
Sergey_K | 2:16796fbfa94d | 85 | sim800.printf("AT+CCLK?\r\n"); |
Sergey_K | 2:16796fbfa94d | 86 | wait(1); |
Sergey_K | 2:16796fbfa94d | 87 | sim800.printf("AT&W\r\n"); |
Sergey_K | 2:16796fbfa94d | 88 | wait(1); |
Sergey_K | 1:441cdd24333e | 89 | } |
Sergey_K | 2:16796fbfa94d | 90 | //Отправка команд в модуль СИМ800 |
Sergey_K | 1:441cdd24333e | 91 | void sendAt(const char *AT) |
Sergey_K | 0:f7e73515c3fc | 92 | { |
Sergey_K | 1:441cdd24333e | 93 | sim800.printf("%s\r\n",AT); |
Sergey_K | 1:441cdd24333e | 94 | wait(1); |
Sergey_K | 1:441cdd24333e | 95 | } |
Sergey_K | 2:16796fbfa94d | 96 | //Отправка сообщения с дисплея |
Sergey_K | 3:7b76a34e07c0 | 97 | void lcdStartWork() { |
Sergey_K | 2:16796fbfa94d | 98 | message_t *message = mpool.alloc(); |
Sergey_K | 2:16796fbfa94d | 99 | message->lcdData = request; |
Sergey_K | 2:16796fbfa94d | 100 | queue.put(message); |
Sergey_K | 0:f7e73515c3fc | 101 | } |
Sergey_K | 2:16796fbfa94d | 102 | //Запись сертификата с SD карты |
Sergey_K | 1:441cdd24333e | 103 | void sdReadSsl() |
Sergey_K | 0:f7e73515c3fc | 104 | { |
Sergey_K | 3:7b76a34e07c0 | 105 | |
Sergey_K | 3:7b76a34e07c0 | 106 | pc.printf("Read uid !\r\n"); |
Sergey_K | 3:7b76a34e07c0 | 107 | |
Sergey_K | 3:7b76a34e07c0 | 108 | RedLed = 0; |
Sergey_K | 3:7b76a34e07c0 | 109 | volatile uint32_t *UniqueID = (uint32_t *)0x1FFF7A10; |
Sergey_K | 3:7b76a34e07c0 | 110 | volatile uint32_t __UniqueID[2]; |
Sergey_K | 3:7b76a34e07c0 | 111 | __UniqueID[0] = UniqueID[0]; |
Sergey_K | 3:7b76a34e07c0 | 112 | __UniqueID[1] = UniqueID[1]; |
Sergey_K | 3:7b76a34e07c0 | 113 | __UniqueID[2] = UniqueID[2]; |
Sergey_K | 3:7b76a34e07c0 | 114 | size_t encodedLen; |
Sergey_K | 3:7b76a34e07c0 | 115 | char * encoded = n. Encode ((char*)UniqueID,12 ,&encodedLen); |
Sergey_K | 3:7b76a34e07c0 | 116 | pc.printf("STMuid:{%s} \ r \ n" ,encoded); |
Sergey_K | 3:7b76a34e07c0 | 117 | id_Stm = encoded; |
Sergey_K | 1:441cdd24333e | 118 | sd.init(); |
Sergey_K | 1:441cdd24333e | 119 | fs.mount(&sd); |
Sergey_K | 3:7b76a34e07c0 | 120 | FILE *fp = fopen((string("/sd/")+ encoded +string(".txt")).c_str(), "r"); |
Sergey_K | 1:441cdd24333e | 121 | if (fp == NULL) { |
Sergey_K | 1:441cdd24333e | 122 | printf("Fail open txt file\r\n"); |
Sergey_K | 3:7b76a34e07c0 | 123 | myLed = 1; |
Sergey_K | 1:441cdd24333e | 124 | } |
Sergey_K | 1:441cdd24333e | 125 | fread(sslBuffer, sizeof(sslBuffer), 1, fp ); |
Sergey_K | 1:441cdd24333e | 126 | fclose(fp); |
Sergey_K | 1:441cdd24333e | 127 | printf("File successfully read!\r\n"); |
Sergey_K | 1:441cdd24333e | 128 | printf(" Your data:\n%s\n",sslBuffer); |
Sergey_K | 1:441cdd24333e | 129 | fs.unmount(); |
Sergey_K | 1:441cdd24333e | 130 | sd.deinit(); |
Sergey_K | 1:441cdd24333e | 131 | |
Sergey_K | 0:f7e73515c3fc | 132 | } |
Sergey_K | 0:f7e73515c3fc | 133 | |
Sergey_K | 2:16796fbfa94d | 134 | //Отправка сообщения на сервер через модуль |
Sergey_K | 1:441cdd24333e | 135 | void gsmStartWork() { |
Sergey_K | 1:441cdd24333e | 136 | while(1) |
Sergey_K | 1:441cdd24333e | 137 | { |
Sergey_K | 1:441cdd24333e | 138 | osEvent evt = queue.get(); |
Sergey_K | 1:441cdd24333e | 139 | if (evt.status == osEventMessage) |
Sergey_K | 1:441cdd24333e | 140 | { |
Sergey_K | 2:16796fbfa94d | 141 | message_t *message = (message_t*)evt.value.p; |
Sergey_K | 2:16796fbfa94d | 142 | *receiveMsg = (uint8_t*)message->lcdData; |
Sergey_K | 2:16796fbfa94d | 143 | printf("lcdData: %s\n\r" , *receiveMsg); |
Sergey_K | 3:7b76a34e07c0 | 144 | if(timeCounter == 0) |
Sergey_K | 1:441cdd24333e | 145 | { |
Sergey_K | 1:441cdd24333e | 146 | timeCounter = 1; |
Sergey_K | 3:7b76a34e07c0 | 147 | // simTime(); |
Sergey_K | 1:441cdd24333e | 148 | } |
Sergey_K | 1:441cdd24333e | 149 | |
Sergey_K | 1:441cdd24333e | 150 | sendAt("AT\r\n"); |
Sergey_K | 3:7b76a34e07c0 | 151 | sim800.printf("AT+FSDEL=C:\\USER\\SSL2.CRT\n\r"); |
Sergey_K | 1:441cdd24333e | 152 | wait(0.5); |
Sergey_K | 3:7b76a34e07c0 | 153 | sim800.printf("AT+FSCREATE=C:\\USER\\SSL2.CRT\n\r"); |
Sergey_K | 1:441cdd24333e | 154 | wait(1.5); |
Sergey_K | 3:7b76a34e07c0 | 155 | sim800.printf("AT+FSWRITE=C:\\USER\\SSL2.CRT,0,1402,10\n\r"); |
Sergey_K | 1:441cdd24333e | 156 | wait(0.2); |
Sergey_K | 1:441cdd24333e | 157 | sim800.printf("%s\n\r",sslBuffer); |
Sergey_K | 3:7b76a34e07c0 | 158 | wait(1); |
Sergey_K | 3:7b76a34e07c0 | 159 | sim800.printf("AT+SSLSETCERT=C:\\USER\\SSL2.CRT\n\r"); |
Sergey_K | 1:441cdd24333e | 160 | wait(3); |
Sergey_K | 1:441cdd24333e | 161 | answerCounter=1; |
Sergey_K | 1:441cdd24333e | 162 | sendAt("AT+CCLK?\r\n"); |
Sergey_K | 2:16796fbfa94d | 163 | wait(1.5); |
Sergey_K | 1:441cdd24333e | 164 | answerCounter=0; |
Sergey_K | 1:441cdd24333e | 165 | sendAt("AT+SAPBR=3,1,Contype,GPRS\r\n"); |
Sergey_K | 1:441cdd24333e | 166 | sendAt("AT+SAPBR=3,1,APN,internet.mts.ru\r\n"); |
Sergey_K | 1:441cdd24333e | 167 | sendAt("AT+SAPBR=3,1,USER,mts\r\n"); |
Sergey_K | 1:441cdd24333e | 168 | sendAt("AT+SAPBR=3,1,PWD,mts"); |
Sergey_K | 1:441cdd24333e | 169 | sendAt("AT+SAPBR=1,1"); |
Sergey_K | 1:441cdd24333e | 170 | sendAt("AT+HTTPINIT"); |
Sergey_K | 1:441cdd24333e | 171 | sendAt("AT+HTTPSSL=1"); |
Sergey_K | 1:441cdd24333e | 172 | sendAt("AT+HTTPPARA=URL,157.230.245.76:1880/message"); |
Sergey_K | 3:7b76a34e07c0 | 173 | pc.printf("%s\r\n",id_Stm); |
Sergey_K | 3:7b76a34e07c0 | 174 | sim800.printf("AT+HTTPPARA=UA,%s-1.0.0\r\n",id_Stm); |
Sergey_K | 3:7b76a34e07c0 | 175 | wait(0.5); |
Sergey_K | 1:441cdd24333e | 176 | sendAt("AT+HTTPPARA=CONTENT,application/octet-stream"); |
Sergey_K | 1:441cdd24333e | 177 | sendAt("AT+HTTPDATA=51,10000"); |
Sergey_K | 1:441cdd24333e | 178 | sim800.write(*receiveMsg,51,NULL,SERIAL_EVENT_TX_COMPLETE); |
Sergey_K | 1:441cdd24333e | 179 | wait(0.5); |
Sergey_K | 1:441cdd24333e | 180 | sendAt("AT+HTTPACTION=1"); |
Sergey_K | 1:441cdd24333e | 181 | wait(1.5); |
Sergey_K | 1:441cdd24333e | 182 | sendAt("AT+HTTPTERM"); |
Sergey_K | 1:441cdd24333e | 183 | wait(1.5); |
Sergey_K | 1:441cdd24333e | 184 | sendAt("AT+HTTPTERM"); |
Sergey_K | 1:441cdd24333e | 185 | wait(1.5); |
Sergey_K | 1:441cdd24333e | 186 | sendAt("AT+SAPBR=0,1"); |
Sergey_K | 2:16796fbfa94d | 187 | pc.printf("Time: %s\n\r",timeBuffer); |
Sergey_K | 1:441cdd24333e | 188 | mpool.free(message); |
Sergey_K | 1:441cdd24333e | 189 | } |
Sergey_K | 1:441cdd24333e | 190 | } |
Sergey_K | 0:f7e73515c3fc | 191 | } |
Sergey_K | 0:f7e73515c3fc | 192 | |
Sergey_K | 2:16796fbfa94d | 193 | //Запись логов |
Sergey_K | 1:441cdd24333e | 194 | void sdWriteLog() |
Sergey_K | 0:f7e73515c3fc | 195 | { |
Sergey_K | 1:441cdd24333e | 196 | sd.init(); |
Sergey_K | 1:441cdd24333e | 197 | fs.mount(&sd); |
Sergey_K | 1:441cdd24333e | 198 | printf(" Log write start!\n\n"); |
Sergey_K | 1:441cdd24333e | 199 | FILE *fp2 = fopen("/sd/log.txt", "a+"); |
Sergey_K | 1:441cdd24333e | 200 | fprintf(fp2, "Hello World!%s\r\n",timeBuffer); |
Sergey_K | 1:441cdd24333e | 201 | fclose(fp2); |
Sergey_K | 1:441cdd24333e | 202 | printf(" Log write DONE!\n\n"); |
Sergey_K | 1:441cdd24333e | 203 | fs.unmount(); |
Sergey_K | 1:441cdd24333e | 204 | sd.deinit(); |
Sergey_K | 0:f7e73515c3fc | 205 | } |
Sergey_K | 2:16796fbfa94d | 206 | //Прерывание на нажатие кнопки |
Sergey_K | 1:441cdd24333e | 207 | void buttonPressed() |
Sergey_K | 1:441cdd24333e | 208 | { |
Sergey_K | 1:441cdd24333e | 209 | // sdEvent.call(&sdReadSsl); |
Sergey_K | 1:441cdd24333e | 210 | counter++; |
Sergey_K | 1:441cdd24333e | 211 | evq.call(&lcdStartWork); |
Sergey_K | 1:441cdd24333e | 212 | pressedButton=true; |
Sergey_K | 1:441cdd24333e | 213 | //sdReadSsl(); |
Sergey_K | 0:f7e73515c3fc | 214 | } |
Sergey_K | 3:7b76a34e07c0 | 215 | void sslButtonPressed() |
Sergey_K | 3:7b76a34e07c0 | 216 | { |
Sergey_K | 3:7b76a34e07c0 | 217 | if(pressedButton==false) sdEvent.call(&sdReadSsl); |
Sergey_K | 3:7b76a34e07c0 | 218 | pressedButton==false; |
Sergey_K | 3:7b76a34e07c0 | 219 | //sdReadSsl(); |
Sergey_K | 3:7b76a34e07c0 | 220 | } |
Sergey_K | 2:16796fbfa94d | 221 | //Прерывание на отжим кнопки |
Sergey_K | 1:441cdd24333e | 222 | void buttonReleased() |
Sergey_K | 1:441cdd24333e | 223 | { |
Sergey_K | 3:7b76a34e07c0 | 224 | |
Sergey_K | 1:441cdd24333e | 225 | pressedButton=false; |
Sergey_K | 1:441cdd24333e | 226 | } |
Sergey_K | 3:7b76a34e07c0 | 227 | void sslButtonReleased() |
Sergey_K | 3:7b76a34e07c0 | 228 | { |
Sergey_K | 3:7b76a34e07c0 | 229 | |
Sergey_K | 3:7b76a34e07c0 | 230 | pressedButton=true; |
Sergey_K | 3:7b76a34e07c0 | 231 | } |
Sergey_K | 2:16796fbfa94d | 232 | //Задача для записи логов |
Sergey_K | 1:441cdd24333e | 233 | void sdWork() |
Sergey_K | 1:441cdd24333e | 234 | { |
Sergey_K | 0:f7e73515c3fc | 235 | while(1) |
Sergey_K | 0:f7e73515c3fc | 236 | { |
Sergey_K | 2:16796fbfa94d | 237 | sdEvent.call(&sdWriteLog); |
Sergey_K | 2:16796fbfa94d | 238 | wait(15); |
Sergey_K | 0:f7e73515c3fc | 239 | } |
Sergey_K | 2:16796fbfa94d | 240 | } |
Sergey_K | 0:f7e73515c3fc | 241 | //MAIN----------------------------------------------- |
Sergey_K | 0:f7e73515c3fc | 242 | int main() |
Sergey_K | 0:f7e73515c3fc | 243 | { |
Sergey_K | 1:441cdd24333e | 244 | pc.baud(9600); |
Sergey_K | 0:f7e73515c3fc | 245 | sim800.baud(9600); |
Sergey_K | 2:16796fbfa94d | 246 | |
Sergey_K | 0:f7e73515c3fc | 247 | pc.printf("*******GPRS TEST*******\r\n"); |
Sergey_K | 2:16796fbfa94d | 248 | |
Sergey_K | 3:7b76a34e07c0 | 249 | myButton.mode(PullUp); |
Sergey_K | 1:441cdd24333e | 250 | button.rise(&buttonReleased); |
Sergey_K | 1:441cdd24333e | 251 | button.fall(&buttonPressed); |
Sergey_K | 3:7b76a34e07c0 | 252 | sd_button.rise(&sslButtonReleased); |
Sergey_K | 3:7b76a34e07c0 | 253 | sd_button.fall(&sslButtonPressed); |
Sergey_K | 3:7b76a34e07c0 | 254 | |
Sergey_K | 2:16796fbfa94d | 255 | |
Sergey_K | 0:f7e73515c3fc | 256 | gsmTask.start(gsmStartWork); |
Sergey_K | 3:7b76a34e07c0 | 257 | //sdLogWrite.start(sdWork); |
Sergey_K | 2:16796fbfa94d | 258 | |
Sergey_K | 1:441cdd24333e | 259 | eventThread.start(callback(&evq, &EventQueue::dispatch_forever)); |
Sergey_K | 1:441cdd24333e | 260 | sdEventThread.start(callback(&sdEvent,&EventQueue::dispatch_forever)); |
Sergey_K | 1:441cdd24333e | 261 | while(1) { |
Sergey_K | 1:441cdd24333e | 262 | if(answerCounter==0) |
Sergey_K | 1:441cdd24333e | 263 | { |
Sergey_K | 1:441cdd24333e | 264 | if(pc.readable()) { |
Sergey_K | 1:441cdd24333e | 265 | sim800.putc(pc.getc()); |
Sergey_K | 1:441cdd24333e | 266 | } |
Sergey_K | 1:441cdd24333e | 267 | if(sim800.readable()) { |
Sergey_K | 1:441cdd24333e | 268 | pc.putc(sim800.getc()); |
Sergey_K | 1:441cdd24333e | 269 | } |
Sergey_K | 0:f7e73515c3fc | 270 | } |
Sergey_K | 1:441cdd24333e | 271 | else |
Sergey_K | 0:f7e73515c3fc | 272 | { |
Sergey_K | 2:16796fbfa94d | 273 | if(sim800.readable()) |
Sergey_K | 2:16796fbfa94d | 274 | { |
Sergey_K | 2:16796fbfa94d | 275 | if(readTimeStart == 1) |
Sergey_K | 2:16796fbfa94d | 276 | { |
Sergey_K | 2:16796fbfa94d | 277 | if(readTimeStart == 1) timeBuffer += char(c); |
Sergey_K | 2:16796fbfa94d | 278 | if(char(c) =='+') readTimeStart = 0; |
Sergey_K | 2:16796fbfa94d | 279 | } |
Sergey_K | 2:16796fbfa94d | 280 | if(char(c) =='"') readTimeStart = 1; |
Sergey_K | 2:16796fbfa94d | 281 | c = sim800.getc(); |
Sergey_K | 2:16796fbfa94d | 282 | } |
Sergey_K | 0:f7e73515c3fc | 283 | } |
Sergey_K | 0:f7e73515c3fc | 284 | } |
Sergey_K | 0:f7e73515c3fc | 285 | } |