2016-09-19 4 views
0

このコードが機能しない理由を教えてください。私は、メッセージの送信者の番号を抽出して、ATコマンドを使用してそれにメッセージを転送したいと思います。それは送信者の数を抽出して変数に格納しますが、なぜその番号にメッセージを送信しませんか?抽出番号へのメッセージの送信

Serial1.print("AT+CMGS=\""); 
Serial1.print(number1); 
Serial1.print("\""); 

をしかし、我々は以下の筆記線を書く場合、プログラムが正常に動作します:

#include <GSM.h> 
GSM_SMS sms; 

char RcvdMsg[200] = ""; 
int RcvdCheck = 0; 
int RcvdConf = 0; 
int index = 0; 
int RcvdEnd = 0; 
char MsgMob[15]; 
char MsgTxt[50]; 
int MsgLength = 0; 
char number1[12] = "xxxxxxxxxx"; 
String number; 
char inchar; 
char outString[22]; 

void setup() 
{ 
    Serial.begin(9600); 
    Serial1.begin(9600); 

    Serial1.print("ATE0\r"); 
    Serial1.print("AT\r"); 
    Serial1.print("AT+CMGF=1\r"); 
    Serial1.print("AT+CNMI=1,2,0,0,0\r"); 
    delay(1000); 
} 

void loop() 
{ 
    recSms(); 
} 

void recSms() 
{ 
    if(Serial1.available()) 
    { 
    char data = Serial1.read(); 
    if(data == '+'){RcvdCheck = 1;} 
    if((data == 'C') && (RcvdCheck == 1)){RcvdCheck = 2;} 
    if((data == 'M') && (RcvdCheck == 2)){RcvdCheck = 3;} 
    if((data == 'T') && (RcvdCheck == 3)){RcvdCheck = 4;} 
    if(RcvdCheck == 4){RcvdConf = 1; RcvdCheck = 0;} 

    if(RcvdConf == 1) 
    { 
     if(data == '\n'){RcvdEnd++;} 
     if(RcvdEnd == 3){RcvdEnd = 0;} 
     RcvdMsg[index] = data; 
     index++; 

     if(RcvdEnd == 2){RcvdConf = 0;MsgLength = index-2;index = 0;} 
     if(RcvdConf == 0) 
     { 
     Serial.print("Mobile Number is: "); 
     for(int x = 4;x < 17;x++) 
     { 
      number+=RcvdMsg[x]; 
      MsgMob[x-4] = RcvdMsg[x]; 
     } 
     Serial.print(number); 
     Serial.println(); 
     Serial.print("Message Text: "); 
     for(int x = 46; x < MsgLength; x++) 
     { 
      MsgTxt[x-46] = RcvdMsg[x]; 
      inchar=MsgTxt[x-46]; 
     } 
     Serial.print(inchar); 
     Serial.println(); 

     RcvdCheck = 0; 
     RcvdConf = 0; 
     index = 0; 
     RcvdEnd = 0; 
     MsgMob[15]; 
     MsgTxt[50]; 
     MsgLength = 0; 

     Serial.flush(); 
     Serial1.flush(); 

     if(inchar == '#') 
     { 
      sendInfo(); 
     } 

     } 
    } 
    } 
} 

void sendInfo() 
{ 
    Serial1.print("AA"); 
    delay(1000); //delay of 1 
    Serial1.println("AT"); 
    delay(1000); 
    Serial1.write("AT+CMGF=1\r\n");   //set GSM to text mode 
    delay(1000); 
    Serial1.write("AT+CPMS=\"SM\"\r\n");   //Preferred SMS Message Storage 
    delay(1000); 

    Serial1.print("AT+CMGS=\""); 
    Serial1.print(number1); 
    Serial1.print("\""); 

    delay(1000); 
    Serial1.print("HI"); 
    delay(1000); 
    Serial1.write(0x1A);   // sends ctrl+z end of message 
    delay(1000); 
    Serial.println("sms sent "); 
} //end sendInfo() 
+0

テストケースを最小化してください。送信に問題がある場合は、送信するだけのファイルを作成します。 –

答えて

1

問題は、これらの行であると思われるので大丈夫!

Serial1.write("AT+CMGS=\""); 
Serial1.print(number); 
Serial1.write("\"\r"); 
関連する問題