OpenEdv-开源电子网

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

51单片机控制GSM模块接打电话问题

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2015-4-8
在线时间
0 小时
发表于 2015-4-13 21:29:09 | 显示全部楼层 |阅读模式
5金钱
51单片机控制GSM模块接打电话。电话是通过按键任意设置的,保存在Phone_num[]数组里,打电话模块已经可以调用这个数组打电话了。但如何判断只有数组里的电话拨打本模块,单片机才有响应,这段代码如何写,始终不得知。
换个说法就是:如何判断串口缓存里的字符含有电话数组里的电话号,然后单片机做出响应,点亮一个灯或者调用应答函数等。这里的大侠能给出具体代码参考一下吗?非常感谢!

最佳答案

查看完整内容[请看2#楼]

读取来电号码,然后去数组里面挨个查找就是。没什么难度
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-4-13 21:29:10 | 显示全部楼层
读取来电号码,然后去数组里面挨个查找就是。没什么难度
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2015-4-8
在线时间
0 小时
 楼主| 发表于 2015-4-14 21:50:30 | 显示全部楼层
对,思路是这样的。如何判断,如何读取,如何查找?能给出具体代码参考一下吗?不过很感谢原子老大的回复啊。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-4-14 22:33:55 | 显示全部楼层
回复【3楼】学而时习:
---------------------------------
自己写
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2015-4-8
在线时间
0 小时
 楼主| 发表于 2015-4-22 22:38:25 | 显示全部楼层
基本搞定,写出来共享。
   if(strstr(aa,"RING")!=NULL) //检测到RING,说明有电话打进来。
       { 
         D3LED=0;
        for(m=0;m<11;m++)
        {PhoneNum[m]=aa[18+m];}//来电号码
        }
   if(strcmp(PhoneNum,PhoneCall)==0)//新旧号码比较
   {
    D3LED=1;
    delay_Xms(100);
    phone_Answer();
    clear_Buff();
   }
新问题又来了,时不时死机。研究中
回复

使用道具 举报

10

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2015-5-8
在线时间
2 小时
发表于 2015-5-8 14:19:15 | 显示全部楼层
以前做过一个产品,用的是TC35i,这个模块对电源要求很高,搞了很久。功能有打电话,接电话,发短信。打电话是遇到一非法操作等会拨打设定的电话,打通后发出声音给对方。接电话是提取号码,判断号码是否非法,让后通过手机按键输入功能操作(这个需要音频译码),设置管理者手机等。发短信就是设置的结果等发送到管理者手机。
你判断那个我觉得不太稳妥,电话来了是 “RING”.....,如果第一次没有接会循环几次,问题是你开的BUFFER多大,其实手机会收到短信等,也会有数据进入BUFFER的,你的BUFFER能不能收完,这个也要注意。
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2015-4-8
在线时间
0 小时
 楼主| 发表于 2015-5-10 09:06:17 | 显示全部楼层
回复【6楼】feijack:
---------------------------------
谢谢你的回复。你是如何判断和提取来电号码的?缓存设置为51个字节。
现在发现有短信来,单片机会死机。
正准备研究如何判断有短信来,然后清缓存处理看看。
回复

使用道具 举报

10

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2015-5-8
在线时间
2 小时
发表于 2015-5-11 10:00:38 | 显示全部楼层

提取号码你要把来电显示打开::AT+CLIP=1

在收到RING后,距离多少位就是号码了,这个我记不清了。
至于你说的收到短信就死机,是不是你的Buffer越界了,你要看看你的最大短信有多少数据,Buffer就大一点就可以了,如果你的内存大,个人认为开大点比较好。
你判断BUFFER的数据的时候最后把中断关了,避免同时操作BUFFER
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2016-1-4
在线时间
26 小时
发表于 2016-5-5 21:27:58 | 显示全部楼层
马一个
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 08:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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