GPRS POS-запросы, несколько подряд за минимальное время.
- Войдите на сайт для отправки комментариев
Чт, 06/08/2015 - 14:07
Столкнулся с ситуацией: плохая мобильная сеть, данные для отправки POST-запроса хочу накопить, а после при появлении хорошего мобильного интеренета все данные отправить POST-запросами поочерёдно. Как я понял в моём коде нужно для POST-запроса каждый раз инициализировать GPRS заново, это занимает много времени. Хочу раз инициализировать Плату, а после быстренько скинуть все даннные.
Вопрос: как укоротить POST-запрос по времени, чтобы можно было за минимально времея POST-запросами отправить все данные на сервер.
Спасибо.
#include "SIM900.h" #include <SoftwareSerial.h> #include "inetGSM.h" //#include "sms.h" //#include "call.h" //To change pins for Software Serial, use the two lines in GSM.cpp. //GSM Shield for Arduino //www.open-electronics.org //this code is based on the example of Arduino Labs. //Simple sketch to start a connection as client. InetGSM inet; //CallGSM call; //SMSGSM sms; char msg[50]; int numdata; char inSerial[50]; int i=0; boolean started=false; void setup() {digitalWrite(9, HIGH); //Serial connection. Serial.begin(9600); Serial.println("GSM Shield testing."); //Start configuration of shield with baudrate. //For http uses is raccomanded to use 4800 or slower. if (gsm.begin(2400)){ Serial.println("\nstatus=READY"); started=true; } else digitalWrite(9, HIGH); Serial.println("\nstatus=IDLE"); if(started){ //GPRS attach, put in order APN, username and password. //If no needed auth let them blank. if (inet.attachGPRS("internet.beeline.ru", "", "")) Serial.println("status=ATTACHED"); else digitalWrite(9, HIGH); Serial.println("status=ERROR"); delay(1000); //Read IP address. gsm.SimpleWriteln("AT+CIFSR"); delay(5000); //Read until serial buffer is emapty. gsm.WhileSimpleRead(); //TCP Client GET, send a GET request to the server and //save the reply. //Print the results. numdata=inet.httpPOST("m-ark.org", 80, "/temperature ", "{\"t\": \"26\", \"d\":\"44.752095\",\"g\":\"34.554844\", \"i\":\"8\"}",msg,50); Serial.println("\nNumber of data received:"); Serial.println(numdata); Serial.println("\nData received:"); Serial.println(msg); } }; void loop() { //Read for new byte on serial hardware, //and write them on NewSoftSerial. serialhwread(); //Read for new byte on NewSoftSerial. serialswread(); }; void serialhwread(){ i=0; if (Serial.available() > 0){ while (Serial.available() > 0) { inSerial[i]=(Serial.read()); delay(10); i++; } inSerial[i]='\0'; if(!strcmp(inSerial,"/END")){ Serial.println("_"); inSerial[0]=0x1a; inSerial[1]='\0'; gsm.SimpleWriteln(inSerial); } //Send a saved AT command using serial port. if(!strcmp(inSerial,"TEST")){ Serial.println("SIGNAL QUALITY"); gsm.SimpleWriteln("AT+CSQ"); } //Read last message saved. if(!strcmp(inSerial,"MSG")){ Serial.println(msg); } else{ Serial.println(inSerial); gsm.SimpleWriteln(inSerial); } inSerial[0]='\0'; } } void serialswread(){ gsm.SimpleRead(); }