找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10474|回复: 8
收起左侧

单片机控制GSM模块

[复制链接]
ID:4558 发表于 2008-8-25 01:05 | 显示全部楼层 |阅读模式
我用单片机控制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();
    }
   }
  }
回复

使用道具 举报

ID:2724 发表于 2008-8-25 09:03 | 显示全部楼层
那手机收到信息了吗?
回复

使用道具 举报

ID:4558 发表于 2008-8-25 11:21 | 显示全部楼层

+CMTI: "SM",1
AT+CMGR=1

+CMGR: "REC UNREAD","+8613560405844",,"08/08/25,11:20:49+32"
SYSON

OK
AT+CMGD=1

OK
AT+CMGS="13560405844"

> SYSON
ERROR


以上就是通过串口看到的信息
手机是收不倒信息的
回复

使用道具 举报

ID:2724 发表于 2008-8-25 12:57 | 显示全部楼层
接一个串口看单片机发出来的命令是否正确..这是最好的办法..我不知道你发AT命令的时候是不是一串一块发出去的...比如读信息AT+CMGR=1, TC35收到不是..AT命令才会..返回ERROR
回复

使用道具 举报

ID:4558 发表于 2008-8-25 14:21 | 显示全部楼层

我的发送程序已经贴出来了,中间都有判断的,只有接收到0x3e之后才发送信息的

回复

使用道具 举报

ID:199562 发表于 2017-5-16 15:18 | 显示全部楼层
发送完短信内容后,还要发送0x1A才能启动一次短信发送。
回复

使用道具 举报

ID:199562 发表于 2017-5-16 15:22 | 显示全部楼层
不用发送回车,只发送0x1a即可
回复

使用道具 举报

ID:199562 发表于 2017-5-16 15:32 | 显示全部楼层
删除Ser_TxDchar(0x1a);后面的  gsm_Over();,就是说不用发送回车换行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表