我想用stm32通过GPRS模块发送一条短信到我手机来,不知道怎么的。就是发送失败啊。我贴了一张程序图
[mw_shl_code=c,true]/单片机给GSM发送短信,实际为该条信息的unicode码
//GSM会将这串unicode码转换成中英文的信息发送给目标手机 这个不需要我们管 我们只要把信息翻译成unicode 码通过串口发送给模块
//函数返回0表示成功发出短信 返回其他值表示失败
const u8 *Message="欢迎来到湖南university!";
//const u8 *Unicode_Message="6B228FCE676552306E5653570075006E006900760065007200730069007400790021";//欢迎来到湖南university!
u8 GSM_Send_Message(void)
{
u8 res=1;
// u8 *p_phone="18975870559";
u8 *Unicode_Message;
u8 *unicode_phone;
u8 p_at[50];
//unicode_phone=malloc(50);//申请50个字节的内存用来存放手机号码转换成的unicode码
// Unicode_Message=malloc(150);//申请150个字节内存用于存放要发送的信息的unicode码
//p_at=malloc(100); //申请100个字节内存用于存放AT指令
unicode_phone="00310038003900370035003800370030003500350039"; //18975870559
Unicode_Message="6B228FCE676552306E5653570075006E006900760065007200730069007400790021";
LCD_ShowString(20,165,Unicode_Message);//显示短信内容
//发送的命令后面必须加换行符 \r\n
if(MCU_Send_Cmd("AT+CMGF=1\r\n","OK",200)!=0) res+=3; //设置为文本模式
if(MCU_Send_Cmd("AT+CSMP=17,167,2,25\r\n","OK",200)!=0) res+=1; //设置文本模式参数
if(MCU_Send_Cmd("AT+CSCS=\"UCS2\"\r\n","OK",200)!=0) res+=2;//设置为UCS32字符编码集,支持中英文
sprintf((char*)p_at,"AT+CMGS=\"%s\"\r\n",unicode_phone);
printf("%s\n",p_at);
if(MCU_Send_Cmd((u8*)p_at,">",200)==0)
{
// printf("发送的消息内容是:\r\n");
MCU_Send_Message(Unicode_Message);
if(MCU_Send_Cmd((u8*)0X1A,"+CMGS:",1000)==0)//0X1A用于启动短信发送 发送成功返回指令+CMGS:
{
//printf("成功发送一条短信!\n");
// LCD_ShowString(20,170,"successed in sending a message");
res=0;
}
}
// free(unicode_phone);
// free(Unicode_Message);
// free(p_at);
return res;
}
在发送完0X1A这个启动发送指令后,就是收不到+CMGS:的回应,其他指令调试的时候都能收到响应 gprs就是原子店里的SIM900A[/mw_shl_code]
[mw_shl_code=c,true]望大家帮忙解决一下啊,,搞了几天就是弄不出来
[/mw_shl_code]
|