2014-09-03 84 views
2

我试图使用AT命令将蜂窝连接的arduino温度传感器的数据发送到xively.com。我可以打开TCP连接,但它会立即关闭。 为什么TCP连接继续关闭?为什么TCP连接在使用AT命令从Adruino GPRS连接到xively时保持关闭状态?

设置: 的Arduino UNO mackbook seeedstudio GPRS V2.0 ATT gophone SIM卡

这里是我的终端读出:

Call Ready 
AT 

OK 
AT+CPIN? 

+CPIN: READY 

OK 
AT+CGATT? 

+CGATT: 1 

OK 
AT+CIPSHUT 

SHUT OK 
AT+CIPSTATUS 

OK 

STATE: IP INITIAL 
AT+CIPMUX=0 

OK 
AT+CSTT="wap.cingular" 

OK 
AT+CIICR 

OK 
AT+CIFSR 

10.52.49.206 
AT+CIPSTART="TCP","api.xively.com","80" 

OK 

STATE: TCP CLOSED 

我的设置: SEEEDStudio GPRS屏蔽 Arduino的乌诺 macbook

发送AT命令S到sheild,我已经设置了一个串行中继使用以下代码:

//Serial Relay - Arduino will patch a 
//serial link between the computer and the GPRS Shield 
//at 19200 bps 8-N-1 
//Computer is connected to Hardware UART 
//GPRS Shield is connected to the Software UART 

#include <SoftwareSerial.h> 

SoftwareSerial GPRS(7, 8); 
unsigned char buffer[64]; // buffer array for data recieve over serial port 
int count=0;  // counter for buffer array 
void setup() 
{ 
    GPRS.begin(19200);    // the GPRS baud rate 
    Serial.begin(19200);    // the Serial port of Arduino baud rate. 

} 

void loop() 
{ 
    if (GPRS.available())    // if date is comming from softwareserial port ==> data is comming from gprs shield 
    { 
    while(GPRS.available())   // reading data into char array 
    { 
     buffer[count++]=GPRS.read();  // writing data into array 
     if(count == 64)break; 
    } 
    Serial.write(buffer,count);   // if no data transmission ends, write buffer to hardware serial port 
    clearBufferArray();    // call clearBufferArray function to clear the storaged data from the array 
    count = 0;      // set counter of while loop to zero 


    } 
    if (Serial.available())   // if data is available on hardwareserial port ==> data is comming from PC or notebook 
    GPRS.write(Serial.read());  // write it to the GPRS shield 
} 
void clearBufferArray()    // function to clear buffer array 
{ 
    for (int i=0; i<count;i++) 
    { buffer[i]=NULL;}     // clear all index of array with command NULL 
} 

我然后输入命令和监视与CoolTerm串行通信。

回答

1

这个工作对我来说:

send AT+CGREG? until you get +CGREG: 0,1 
send AT+CGATT? response +CGATT: 1 
send AT+CSTT="internet","","" response OK 
send AT+CIICR response OK 
send AT+CIFSR response IP address 
send AT+CIPSTART="TCP","api.xively.com","80" response CONNECT OK 
+0

你能够保持TCP连接开放? – Goodword 2014-10-29 13:28:24

+0

只要我记得,我能够保持连接打开,但肯定不会永远:)。 – 2014-10-30 13:34:48