2015-11-26 2 views
1

У меня проблема с этим простым кодом.SIM900 gprs web с arduino

#include <SoftwareSerial.h> 

SoftwareSerial SIM900(7, 8); // configure software serial port 

void setup() {  
    pinMode(9, OUTPUT); 
    digitalWrite(9, HIGH); 

    SIM900.begin(19200); 
    Serial.begin(19200); 
    Serial.println("power up"); 
    delay(15000); 
} 

void loop() 
{ 
    Serial.println("SubmitHttpRequest - started"); 
    SubmitHttpRequest(); 
    //callSomeone(); 
    Serial.println("SubmitHttpRequest - finished"); 
    delay(10000); 

} 

void SubmitHttpRequest() 
{ 
    SIM900.println("AT+CSQ"); // Signal quality check 
    delay(100); 
    ShowSerialData(); 

    SIM900.println("AT+CSQ"); // Signal quality check 
    delay(100); 
    ShowSerialData(); 

    SIM900.println("AT+CGATT?"); //Attach or Detach from GPRS Support 
    delay(100); 
    ShowSerialData(); 

    SIM900.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\""); 
    delay(1000); 
    ShowSerialData(); 

    SIM900.println("AT+SAPBR=3,1,\"APN\",\"gprs-service.com\""); 
    delay(1000); 
    ShowSerialData(); 

    SIM900.println("AT+SAPBR=1,1"); 
    delay(1000); 
    ShowSerialData(); 

    SIM900.println("AT+HTTPINIT"); //init the HTTP request 
    delay(1000); 
    ShowSerialData(); 

    SIM900.print("AT+HTTPPARA=\"URL\",\"http://xxxxxx.com/master.php"); 
    SIM900.println("\""); 
    delay(1000); 
    ShowSerialData(); 

    SIM900.println("AT+HTTPACTION=0");//submit the request 
    delay(10000); 
    ShowSerialData(); 

    SIM900.println("AT+HTTPREAD");// read the data from the website you access 
    delay(500); 
    ShowSerialData(); 

    SIM900.println(""); 
    delay(100); 

    SIM900.println("AT+HTTPTERM");// read the data from the website you access 
    delay(300); 
    ShowSerialData(); 
} 

void getContent() 
{ 
    String content = ""; 
    while(SIM900.available() != 0) 
    { 
    content = content + String(char(SIM900.read())); 
    Serial.write(char(SIM900.read())); 
    delay(500); 
    Serial.flush(); 
    } 
} 

void ShowSerialData() 
{ 
    while(SIM900.available()!=0) 
    Serial.write(char (SIM900.read())); 
} 

квитанций несколько символов, вывод таков:

power up 
SubmitHttpRequest - started 
AT+CSQ 

+CSQ: 25,0 

OK 
AT+CSQ 

+CSQ: 25,0 

OK 
AT+CGATT? 

+CGATT: 1 

OK 
AT+SAPBR=3,1,"CONTYPE","GPRS" 

OK 
AT+SAPBR=3,1,"APN","gprs-service.com" 

OK 
AT+SAPBR=1,1 

OK 
AT+HTTPINIT 

OK 
AT+HTTPPARA="URL","http://xxxxxx.com/master.php" 

OK 
AT+HTTPACTION=0 

OK 

+HTTPACTION:0,200,66 
AT+HTTPREAD 

+HTTPREAD:66 
Numero de accesos: 77 | Identifica 
AT+HTTPTERM 

OK 
SubmitHttpRequest - finished 

==>"Numero де accesos: 77 | Identifica"

Но, действительно, вывод должен быть:

Количество сотрудников: 77 | Identificador: 4l02pnl828o3kctg4strc87ed1

Точно так же как: HTTPREAD missing characters with Arduino and SIM900

Любые идеи или помочь?

Спасибо!

ответ

1

Numero de accesos: 77 | Identifica - 34 charcters. Это означает, что sim900 возвращает 66 символов, которые являются правильной длиной.

Попробуйте увеличить задержку до ShowSerialData или подождать, пока у вас не будет 66 bytes в последовательном буфере.

Смежные вопросы