为什么TCP连接的保持关闭,而从连接GPRS Adruino到xively与AT命令? [英] Why does TCP connection keep closing while connecting to xively from Adruino GPRS with AT commands?
问题描述
我试图使用AT命令从蜂窝连接的Arduino的温度传感器将数据发送到xively.com。我可以打开的TCP连接,但随后立即关闭。 为什么TCP连接保持关闭?
I'm trying to send data from a cellular-connected arduino temperature sensor to xively.com using AT commands. I can open the TCP connection, but then it immediately closes. Why does the TCP connection keep closing?
设置:
Arduino的乌诺
mackbook
seeedstudio GPRS V2.0
ATT gophone sim卡
setup: arduino uno mackbook seeedstudio gprs v2.0 att gophone sim card
下面是我的终端读出:
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
my setup: SEEEDStudio GPRS shield Arduino Uno macbook
要发送AT命令到sheild,我用下面的code设置串行继电器:
To send AT commands to the sheild, I have set up a serial relay using the following code:
//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串行通信。
I then enter the commands and monitor serial communication with CoolTerm.
推荐答案
这对我的作品:
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
这篇关于为什么TCP连接的保持关闭,而从连接GPRS Adruino到xively与AT命令?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!