单片机控制GSM模块 |
| 单片机论坛是国内大型的mcu电子技术与单片机社区http://www.51hei.com/bbs/ |
单片机控制GSM模块 作者:huangjm4944 时间:2008-8-25 1:05:42
第 1 楼
我用单片机控制GSM模块收发短信,现在需要用手机向模块发送特定的命令,GSM模块接收到信息后,单片机识别该信息,并讲识别的结果通过短信回复,现在我的程序可以识别GSM模块收到的信息,但是通过向手机回复识别的结果就出问题了,发送信息总是返回ERROR,有人知道程序的流程吗?麻烦大家帮我看看我的程序有什么问题? 发短信的程序如下: Sent_Mes(unsigned char *p) { Cls_Rebuf(); SELInt_off(); Ser_TXDstring(TC_HEAD,3);//发送AT+ Ser_TXDstring(TC_CMGS,5);//CMGS= Ser_TxDchar(0x22);//发送双引号 Ser_TXDstring(TelNumber,11); Ser_TxDchar(0x22);//发送双引号 gsm_Over();//回车换行 SELInt_on(); ss=0xffffff; while(Rev_Buf[Rev_count-1]!=0x3e) { ss--; //超时返回 if(ss==0) {return;} } SELInt_off(); Ser_TXDstring(p,5);//短信内容 Delay5Ms(); Delay5Ms(); Ser_TxDchar(0x1a);//ctrl+z gsm_Over();//回车换行 SELInt_on(); ss=0xffffff; while(Rev_Buf[Rev_count]!=0x4B) { ss--; //超时返回 if(ss==0) {return;} } if(NewSMS_flag==1)//收到新信息 { NewSMS_flag=0; if(Rev_Buf[count+7]==0x53&&Rev_Buf[count+8]==0x4D)//判断该新短信存储的位置是否在SIM卡 { MES_COUNT=Rev_Buf[count+11];//返回该新短信息的序号 } Read_Mes(MES_COUNT);//读取控制指令 if(MES_COUNT!=0x31) MES_COUNT=0x31; Del_Mes(MES_COUNT);//删除短信 Cls_Rebuf(); CMD_SHIBIE();//指令识别 MES_COUNT=0; if(TELNUM_OK)//如果电话号码正确 { TELNUM_OK=0; if(CMD==1) { CMD=0; systemon=1; Sent_Mes(CMD_1); Cls_Rebuf(); } if(CMD==2) { CMD=0; systemon=0; Sent_Mes(CMD_2); Cls_Rebuf(); } } } 作者:ccc 时间:2008-8-25 9:03:03
第 2 楼
那手机收到信息了吗? 作者:huangjm4944 时间:2008-8-25 11:21:26
第 3 楼
+CMTI: "SM",1 +CMGR: "REC UNREAD","+8613560405844",,"08/08/25,11:20:49+32" OK OK > SYSON 以上就是通过串口看到的信息 手机是收不倒信息的 作者:ccc 时间:2008-8-25 12:57:59
第 4 楼
接一个串口看单片机发出来的命令是否正确..这是最好的办法..我不知道你发AT命令的时候是不是一串一块发出去的...比如读信息AT+CMGR=1, TC35收到不是..AT命令才会..返回ERROR 作者:huangjm4944 时间:2008-8-25 14:21:47
第 5 楼
我的发送程序已经贴出来了,中间都有判断的,只有接收到0x3e之后才发送信息的 |
|
查看完整版本:[单片机控制GSM模块] |
| 所属版面:51单片机 本帖第1页 |
| 共有回复:4 共有页数:1 每页帖数:50 |
|
欢迎光临单片机论坛 网址:http://www.51hei.com/bbs/ |