2

gsm モデムで受信した SMS から返信しようとしています。

問題は、この一連の文字列から電話番号を抽出する方法がわからないため、送信者の番号を取得できることです。

送信者の番号「09279127639」を抽出する必要があります。

+CMGL: 1,"REC READ","09279127639","","13/04/05,08:24:36+22"

注: 送信者の番号はさまざまです。これはほんの一例です。

抽出した後、その値をこのコードに返して、彼に自動的に返信できるようにします。

void setup()
{ pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
delay(3000);
digitalWrite(8, LOW);

Serial.begin(9600);
Serial1.begin(9600); //Baud rate of the GSM/GPRS Module 
Serial.print("\r");
Serial1.print("\r");
delay(1000); 

Serial1.print("AT\r");
Serial.print("AT\r");
delay(10000); 
Serial1.print("AT\r");
Serial.print("AT\r");
delay(1000); 

Serial1.print("AT+CMGF=1\r");
Serial.print("AT+CMGF=1\r");
delay(1000);

Serial1.print("AT+CMGS=\"number here\"\r");
Serial.print("AT+CMGS=\"number here\"\r"); //Number to which you want to send the sms
delay(1000);

Serial1.print("This is a message from a GSM modem.\r");
Serial.print("This is a message from a GSM modem.\r"); //The text of the message to be sent
delay(1000);

Serial1.write(0x1A);
Serial.write(0x1A);
delay(1000); 
}
void loop()
{
}

お返事をお待ちしております。ありがとうございました。

4

4 に答える 4

0
Pattern pattern = Pattern.compile("\\d{11}");// matching 11 digit number, or [0-9]
Matcher matcher = pattern.matcher(input);

乾杯

于 2013-10-15T02:14:45.520 に答える
-1

それを読んで、正規表現を使用して区別してみませんか

Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n");
                Match m = r.Match(input);
                while (m.Success)
                {
                    ShortMessage msg = new ShortMessage();
                    //msg.Index = int.Parse(m.Groups[1].Value);
                    msg.Index = m.Groups[1].Value;
                    msg.Status = m.Groups[2].Value;
                    msg.Sender = m.Groups[3].Value;
                    msg.Alphabet = m.Groups[4].Value;
                    msg.Sent = m.Groups[5].Value;
                    msg.Message = m.Groups[6].Value;
                    #region PROCESS DATA
                    string[] p_str = { msg.Index + " (Index) ", msg.Status + " (Status) ", msg.Sender + " (Sender) ", msg.Alphabet + " (Alphabet) ", msg.Sent + " (Sent Date) ", msg.Message + " (Message) " };
                    ProcessData(p_str);
                    #endregion
                    m = m.NextMatch();
                }

ShortMessage は、これらの構造を持つクラスである必要があります。それは私のために働いた

于 2013-10-16T08:45:33.547 に答える