我使用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
我看到系统稍后发送消息两个循环,我不知道错误在哪里可以帮助我吗?
最好的问候。甲答案 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;);