使用带有ST核的SIM 900发送短信

时间:2014-10-15 20:23:15

标签: sms at-command stm32

我使用SimCOM的Sim900如果我使用AT命令或其他命令都运行良好,但我有一个问题沙子短信我写这段代码

    #include "mbed.h"
#include <string>
Serial pc(SERIAL_TX, SERIAL_RX); // pc comunication
Serial SIM900(PA_9, PA_10);   //tx, rx SIM 900
string result;
void power(){
 sim_power.write(1); // accension gsm
    wait(1);
    sim_power.write(0);
    wait(13);
    SIM900.printf("ATE0\r\n");  // DISABLE ECHO 
    wait(1);}
 void clearString()
 {  result.clear();   }
 void callback_rx() { 
while (SIM900.readable()) {
  x = SIM900.getc();
  result += x;
pc.putc(x);      
   }
   }
 void sendSMS()
 {
 clearString();
 SIM900.printf("AT+CMGF=1\r"); //at command for send sms
 wait_ms(100);
 clearString();
 wait_ms(100);   
 SIM900.printf("AT+CMGS=");
 SIM900.putc('"');
 SIM900.printf("+32292*******"); 
 SIM900.putc('"');
 SIM900.printf("\r");
 SIM900.printf("Example Message SMS");
 SIM900.putc(0x1A);
 wait_ms(20000);
 } 
 int main() {    
 power();
 pc.printf("\r\n GSM 900 TEST\n"); 
 SIM900.attach(&callback_rx);  
 SIM900.baud(9600); // 
 wait_ms(100);         
  while(1) {
 wait_ms(10);
 sendSMS();  // SEND SMS     
 wait_ms(100);                 
 } 
 }

当我发送短信时,我看到了这个,但我有这个奇怪的信息:

AT+CMGF=1AT+CMGS="+32292*"" Example Message SMS

我看到系统稍后发送消息两个循环,我不知道错误在哪里可以帮助我吗?

最好的问候。甲

2 个答案:

答案 0 :(得分:1)

我认为你有一些时间问题。你必须等到在通勤后得到SIMCOM的回答,比如&#34; OK&#34; 。得到答案后,您可以发送其他命令

答案 1 :(得分:0)

试试这个,

void sendSMS(string number, string message){
  SIM900.printf("AT+CMGF=1\r\n");
  wait_ms(100);
  SIM900.printf("AT+CMGS=\"%s\"\r\n",number.c_str());
  wait_ms(100);
  SIM900.printf("%s ",message.c_str());  
  SIM900.putc(0x1A);
}

并通过

调用此函数
  

sendSMS(&#34; +32292 *******&#34;,&#34;示例消息短信&#34;);