专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Wireless

诚心请问关于一个GSM模块接收短信有关问题

发布时间:2010-06-14 16:52:56 文章来源:www.iduyao.cn 采编人员:星星草
诚心请教关于一个GSM模块接收短信问题
这几天试着学习使用一块旧的BENQ M22模块。将我的SIM卡插进去并用其他手机发短信给模块之后,用指令AT+CPMS?查询短信发现其短信存储信息不变----收不到短信
上网搜了下,说G网模块收短信,
  但首先你要确保如下操作已经完成: 
1) 模块上电并且AT命令同你的PC串口通信顺畅。 
2) SIM卡没有欠费,并且已经登陆GSM网络(可以使用AT+CREG?查询,如果返回1或者5表示正常)。 

步骤1成功,SIM卡没欠费,
但用AT+CREG?查询返回为+CREG: 0, 2

那么模块接收不到短信是否就出在没成功登陆GSM网络上,若是该如何登陆GSM,或是由硬件问题引起的(毕竟是块旧板子了)?

希望各位能帮我解决下,谢谢了


------解决方案--------------------
不知道你是怎么操作的?
有没有设置短信类型和提示类型?
如:
AT+CMGF=1//选择文本格式
AT+CNMI=3,1//设置新消息提示信息,包含存储类型和序号,收到新短消息将提示
另外,你还可以通过
AT+CSQ?查询信号强度来确定模块的好坏!
------解决方案--------------------
at+creg?
+creg:0,2
表示漫游,已经登陆上GPRS了~~
------解决方案--------------------
当一条短信来了会返回+CMTI:XXXX 等消息,然后表明这条短信填到那个坑里 你要做的就是读取这个坑里的短信。

if(strstr(ReadBuff,"+CMTI: \"SM\",") && strlen(ReadBuff) < 18 )//if any sms received! 
{
pos1 = 0;
pos2 = strlen(ReadBuff)-12;
for(;pos1 < pos2-1; pos1++)
{
smsposition[pos1] = ReadBuff[12+pos1];
}
printf("\n A Short Message received!");
sendatcommand(fd,"at+cmgf=1","OK") ;
sprintf(order,"%s%s","at+cmgr=",smsposition);
sprintf(sms,"%s",getresult(fd,order,"OK"));
executeflag = smsjob(fd,sms);
if(executeflag == -1 ) printf("\nmessage invalid!");
memset((void *)order,'\0',sizeof(char)* BIG_SIZE);
sprintf(order,"%s%s","at+cmgd=",smsposition);
sendatcommand(fd,order,"OK");
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: