OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5104|回复: 9

求助,GPRS发送不了短信!

[复制链接]

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2014-3-20
在线时间
9 小时
发表于 2014-10-31 02:03:48 | 显示全部楼层 |阅读模式
5金钱

以前在战舰开发板上已经调试出来短信发送功能,最近把程序移植到F302上之后,其他功能正常,只有回发短信功能不正常,经过调试发现程序总是卡在发送SIM900A_send_cmd(p,">",100)==0这条语句进不去,不知道是什么情况。

/**********************************************************
** 函数名  :  callnumber
** 功能描述: 提取出短信发信人的手机号码,并回发短信
** 输入参数:  u8* text
** 输出参数: 无
***********************************************************/
void callnumber(u8* text)
{
 u8 *p,i,number; 
 p=(u8*)strstr((const char*)(USART1_RX_BUF),"1");
 for(i=0;i<20;i++)
 {
  if((*p>='0')&&(*p<='9'))
  {
      number=*p;
   callnum=number;
      p++;
  }
  else
  { 
   //callnum='\0';
   break;
  }
 }
   sprintf((char*)p,"AT+CMGS=\"%s\"",callnum);
   if(SIM900A_send_cmd(p,">",100)==0)
   {
  // USART2_printf("jinlaile");
     printf("%s",p);
   USART_SendData(USART1, 'A');
   USART_SendData(USART1, 'B');
   delay_ms(2000);
      if(SIM900A_send_cmd((u8*)0X1A,"CMGS",1000)==0)
   {
    USART2_printf("·????ê??");
   }
   }
   USART1_RX_STA=0;

}

sim900a.c

5.48 KB, 下载次数: 158

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2014-3-20
在线时间
9 小时
 楼主| 发表于 2014-10-31 02:04:23 | 显示全部楼层
题目错了,是SIM900A发送不了短信。。。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-10-31 23:44:09 | 显示全部楼层
回复【2楼】gjnacoose:
---------------------------------
仿真一下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2014-3-20
在线时间
9 小时
 楼主| 发表于 2014-11-1 01:05:28 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
这个东西怎么仿真啊?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-11-1 21:43:49 | 显示全部楼层
回复【4楼】gjnacoose:
---------------------------------
用仿真器啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
874
金钱
874
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-11-1 23:37:56 | 显示全部楼层
原子哥的意思是使用仿真器单步执行,,看看效果,明白吗??
避免犯错本是错误所在,我错故我在……
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2014-3-20
在线时间
9 小时
 楼主| 发表于 2014-11-2 00:14:41 | 显示全部楼层
在if(SIM900A_send_cmd(p,">",100)==0)前面加了一个delay函数,延时了一下,结果就没有问题了,不知道是为什么。。。
回复

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2013-7-26
在线时间
2 小时
发表于 2014-11-2 21:38:54 | 显示全部楼层
回复【7楼】gjnacoose:
---------------------------------
是需要延时一下的。短信编码数据送入模块后,模块要一点反应时间,然后才会回送>提示符。另外,我没看到源代码,函数SIM900A_send_cmd(p,">",100)中最后的那个参数100是不是用来指定>符出来之前的等待时间的?如果是,调整这个参数应该也行。
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2014-3-20
在线时间
9 小时
 楼主| 发表于 2014-11-3 10:55:45 | 显示全部楼层
回复【8楼】mudfish:
---------------------------------
在delay之前,还没有把短信编码数据送入模块中呢。。。
回复

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2013-7-26
在线时间
2 小时
发表于 2014-11-11 23:06:53 | 显示全部楼层
回复【9楼】gjnacoose:
---------------------------------
哦,看来用的是PDU模式?我记得文本模式下,需要等模块给出的提示符(“>”)出现后,再继续送内容,最后以Ctrl-Z结束,模块才会把短信发出。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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