所有工作都很好地发送数据到服务器,但30分钟后,我得写像PDP:DEACT,无法发送数据,错误发送数据,我想当PDP:DEACT或无法发送数据,它将setup_kartusim() ; sim900模块本身,代码如何?

void setting_kartusim()
    {
      sim900.println(F("AT+CREG=1"));
      delay(100);
      Serial.println(sim900.readString());
      sim900.println(F("AT+CGATT=1"));
      delay(100);
      Serial.println(sim900.readString());
      sim900.println(F("AT+CIPSHUT"));
      delay(100);
      Serial.println(sim900.readString());
      sim900.println(F("AT+CIPMUX=0"));
      delay(100);
      Serial.println(sim900.readString());
      sim900.println(F("AT+CSTT=\"internet""\""));
      delay(100);
      sim900.println(F("AT+CSTT?"));
      delay(1000);
      Serial.println(sim900.readString());
      sim900.println(F("AT+CIICR"));
      delay(5000);
      Serial.println(sim900.readString());
      sim900.println(F("AT+CIFSR")); 
      delay(1000);
      Serial.println(sim900.readString());
    }

这段代码发送数据

void koneksi()
{
 sim900.println(F("AT+CIPSTART=\"TCP\",\"testtest.com""\",80"));
  delay(1000);
  Serial.println(sim900.readString());

String link = "GET /test.php?test="+String(test)+"&testt="+String(testt)+"&testtt="+String(testtt)+" HTTP/1.1\r\nHost: testtest.com\r\n\r\n"; 

  sim900.print(F("AT+CIPSEND=")); 
  sim900.println(link.length()); 
  delay(500);
  if(sim900.find(">"))
  {
    sim900.print(link); 
    if(sim900.find("SEND OK"))
    {
      delay(100);
      while (sim900.available())
      {
        Serial.println(sim900.readString()); 
      }
      sim900.println(F("AT+CIPCLOSE"));

    }
    else
    {
    }
  }
}

这是错误

+PDP: DEACT
AT+CIPSTART="TCP","teste
5191
AT+CIPSTART="TCP","testes.com",80

ERROR

5234
AT+CIPSTART="TCP","testes.com",80

ERROR

5464
AT+CIPSTART="TCP","testes.com",80

ERROR

5597
AT+CIPSTART="TCP","testes.com",80

ERROR

5734
AT+CIPSTART="TCP","testes.com",80

ERROR

我想要的是代码,这样当PDP:DEACT或发送数据时出错时,它将运行程序setting_kartusim();再次工作,或者如果有,我如何制作PDP:不显示DEACT,以便GPRS模块始终开启?