Sim 900a all invio mi da Error

“ATD+60XXXXXXXXX;” quanto ho provato ho messo il mio numero
Ho provato con un AT tester il sms esce tranquillamente mentre se lo collego ad un arduino non funziona piu niente non so piu dove andare a sbattere la testa

#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 10);
char msg;
char call;

void setup()
{
  mySerial.begin(9600);   // Setting the baud rate of GSM Module  
  Serial.begin(9600);    // Setting the baud rate of Serial Monitor (Arduino)
  Serial.println("GSM SIM900A BEGIN");
  Serial.println("Enter character for control option:");
  Serial.println("h : to disconnect a call");
  Serial.println("i : to receive a call");
  Serial.println("s : to send message");
  Serial.println("c : to make a call");  
  Serial.println("e : to redial");
  Serial.println();
  delay(100);
}

void loop()
{  
  if (Serial.available()>0)
   switch(Serial.read())
  {
    case 's':
      SendMessage();
      break;
    case 'c':
      MakeCall();
      break;
    case 'h':
      HangupCall();
      break;
    case 'e':
      RedialCall();
      break;
    case 'i':
      ReceiveCall();
      break;
  }
 if (mySerial.available()>0)
 Serial.write(mySerial.read());
}

void SendMessage()
{
  mySerial.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode
  delay(1000);  // Delay of 1000 milli seconds or 1 second
  mySerial.println("AT+CMGS=\"+60XXXXXXXXX\"\r"); // Replace x with mobile number
  delay(1000);
  mySerial.println("sim900a sms");// The SMS text you want to send
  delay(100);
   mySerial.println((char)26);// ASCII code of CTRL+Z
  delay(1000);
}

void ReceiveMessage()
{
  mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to recieve a live SMS
  delay(1000);
  if (mySerial.available()>0)
  {
    msg=mySerial.read();
    Serial.print(msg);
  }
}

void MakeCall()
{
  mySerial.println("ATD+60XXXXXXXXX;"); // ATDxxxxxxxxxx; -- watch out here for semicolon at the end!!
  Serial.println("Calling  "); // print response over serial port
  delay(1000);
}


void HangupCall()
{
  mySerial.println("ATH");
  Serial.println("Hangup Call");
  delay(1000);
}

void ReceiveCall()
{
  mySerial.println("ATA");
  delay(1000);
  {
    call=mySerial.read();
    Serial.print(call);
  }
}

void RedialCall()
{
  mySerial.println("ATDL");
  Serial.println("Redialing");
  delay(1000);
}

il tuo port mi sembra un pò ermetico.. forse potresti fornire qualche dettaglio in più?
cosa è un AT tester? :slight_smile:

in ReceiveCall() forse hai tolto qualcosa di troppo. Hai delle graffe inutili.
Hai forse tolto un controllo su myserial ?

Premesso che il metodo println() invia sulla seriale i dati seguiti dal carattere CR (0x0D), verifica esattamente nel manuale dei comandi AT dove, per il comando di invio SMS, tale CR è previsto e dove no, perché se mandi dei CR dove non servono, il SIM non interpreta più il comando e ti da errore.

Guglielmo

la funzione Recall al momento non e importante in quanto e un sim dati e non puo effettuare le chiamate,ieri sera ho lasciato il shield attaccato per un oretta e dopo ho riprovato a inviare il messaggio pare che magicamente ha funzionato sapete per caso come e possibile sta cosa ? ( se provo togliere la funzione lista e inviare ogni tot di secondi ritorna di nuovo Error

PS AT commander tester e un tool in java (cerca su google e abbastanza lungo da spiegare fa parecchie cose )