金牌会员
 
- 积分
- 2778
- 金钱
- 2778
- 注册时间
- 2015-6-1
- 在线时间
- 394 小时
|
发表于 2017-5-3 15:58:27
|
显示全部楼层
除了发短信外,有一些配置命令需要先发,你确定都发对了吗?模块会给你回复,是不是OK?看一下先。
uint8 AT_CMGF[] = "AT+CMGF=1\r\n"; //设为文本模式
uint8 AT_CSCS[] = "AT+CSCS=\"GSM\"\r\n"; //设置GSM字符集
uint8 AT_CNMI[] = "AT+CNMI=2,1\r\n"; //设置新消息提示
uint8 AT_CMGD[] = "AT+CMGD=1\r\n"; //删除全部短信
while(OK_OR_NOK == 0)
{
OK_OR_NOK = sim900a_send_cmd(AT,sizeof(AT),"OK",100);
}
sim900a_send_cmd(AT_CMGF,sizeof(AT_CMGF),"OK",100);
sim900a_send_cmd(AT_CSCS,sizeof(AT_CSCS),"OK",100);
sim900a_send_cmd(AT_CNMI,sizeof(AT_CNMI),"OK",100);
需要先发这几条命令。才能让模块干活。
while(temp<length-1) //这里用你自己的字符串长度
{
while((UART4->SR&0X40)==0);
UART4->DR = cmd[temp];
temp++;
}
rt_thread_delay(time);
//读串口数据并荐到buf里,数据个数是com_data_len.
com_data_len = rt_UartReadGSM(buf);
sim900a_send_cmd内容我就不多发了,和你的都没关系。内容就是把数据按字节一个个发出去,50ms后接收信息,如果收到的是OK就返回1,如果是ERROR或是没有就返回0。
我在淘宝上买的SIM900A,卖家会给你手册的,你看手册去写自己的命令 |
|