2019-08-19 20:46发布
柯墨爱 发表于 2017-5-3 10:12 但是但是我这个必须要通过单片机控制才符合设计...直接用串口调试sim900就没意义,况且直接用串口调 ...
yuzeyuan1 发表于 2017-5-3 11:08 原子哥的意思是:你先用电脑的串口助手把短信测出来再考虑用单片机。 就几条AT指令。连电脑测试都不会就 ...
柯墨爱 发表于 2017-5-3 11:58 哦,谢谢!但我的意思是已经实现用电脑串口助手直接控制sim900收发短信,但是呢,通过单片机就不会发消息 ...
最多设置5个标签!
原子哥的意思是:你先用电脑的串口助手把短信测出来再考虑用单片机。
就几条AT指令。连电脑测试都不会就没人帮你了,你确定测试通过了再来发图片帖子说嘛。上来就拿单片机抓,调不成功就一条一条再发?光短信费用都搞死你。。。
哦,谢谢!但我的意思是已经实现用电脑串口助手直接控制sim900收发短信,但是呢,通过单片机就不会发消息了。。
除了发短信外,有一些配置命令需要先发,你确定都发对了吗?模块会给你回复,是不是OK?看一下先。
uint8 AT_CMGF[] = "AT+CMGF=1 "; //设为文本模式
uint8 AT_CSCS[] = "AT+CSCS="GSM" "; //设置GSM字符集
uint8 AT_CNMI[] = "AT+CNMI=2,1 "; //设置新消息提示
uint8 AT_CMGD[] = "AT+CMGD=1 "; //删除全部短信
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,卖家会给你手册的,你看手册去写自己的命令
一周热门 更多>