为什么TCP连接的保持关闭,而从连接GPRS Adruino到xively与AT命令? [英] Why does TCP connection keep closing while connecting to xively from Adruino GPRS with AT commands?

查看:398
本文介绍了为什么TCP连接的保持关闭,而从连接GPRS Adruino到xively与AT命令?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆