求原子哥指导,今天下午一直在弄SIM900A,用51控制SIM900A打电话发短信,拨打/接听/挂电话已经调通,但发短信还有问题,手机接收不到。用PC机调试用下面的函数都可以接受到短信和打通电话?一下是拨打/接听/挂电话和发短信函数,求大神指导。
/****************************拨打指定电话函数**************************/
/*函数原型: GSM_Call(unsigned char *num)
/*函数功能:拨打指定电话
/*输入参数:num
/*输出参数:无
/**********************************************************************/
void GSM_Call(unsigned char *num)
{
printf("ATD");
printf("%s;\n",num);
Delay_ms(10);
}
/*********************************挂机函数*****************************/
/*函数原型: void GSM_Hang(void)
/*函数功能:挂断电话
/*输入参数:无
/*输出参数:无
/**********************************************************************/
void GSM_Hang(void)
{
printf("ATH\n");
Delay_ms(10);
}
/********************************接电话函数****************************/
/*函数原型: void GSM_Answer(void)
/*函数功能:接听电话
/*输入参数:无
/*输出参数:无
/**********************************************************************/
void GSM_Answer(void)
{
printf("ATA\n");
Delay_ms(100);
}
/***********************给指定号码发送TEXT模式短信*********************/
/*函数原型:GSM_Sent_Text_Message(void)
/*函数功能:给指定号码发送英文短信息。num[]=接收端号码
/*输入参数:无
/*输出参数:无
/**********************************************************************/
void GSM_Sent_Text_Message(void)
{
printf("%s\n","AT"); //以下几个为GSM的AT串口指令,设置短信发送类型
Delay_ms(100);
printf("%s\n","AT+CSCS=\"GSM\"" ); //使用GSM字符集
Delay_ms(100);
printf("%s\n","AT+CMGF=1 "); //设置为TEXT模式,适合发送短信内容为英文
Delay_ms(100);
printf("%s\n","AT+CMGS=\"18092499636\"");
Delay_ms(100);
printf("%s\n","YUISOG8IE56486"); //具体发送的内容在此修改
Delay_ms(100);
printf("%h","0x1A"); //结束符,相当于键盘的CTRL+Z
}
/***********************给指定号码发送PDU模式短信*********************/
/*函数原型:GSM_Sent_PDU_Message(void)
/*函数功能:给指定号码发送中文短信。num[]=接收端号码;Sms[]=发送中文内容的Unicode编码
/*输入参数:无
/*输出参数:无
/**********************************************************************/
void GSM_Sent_PDU_Message(char numu[],char sms[])
{
// printf("%s\n","AT");
// Delay_ms(10);
printf("%s\n","AT+CMGF=1"); //设置为PDU模式,适合发送短信内容为中文
Delay_ms(10);
printf("%s\n","AT+CSMP=17,167,2,25");
Delay_ms(10);
printf("%s\n","AT+CSCS=\"UCS2\""); //设置PDU模式参数,8为使用Unicode编码
Delay_ms(10);
printf("%s","AT+CMGS=");
Delay_ms(10);
printf("%s", "\"");
printf("%s",numu);
printf("%s\n", "\"");
Delay_ms(10);
printf("%s\n",sms);
Delay_ms(20);
printf("0x1A"); //(CTRL+Z)
} |