OpenEdv-开源电子网

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

菜鸟,STM32+SIM900短信不会发,求助!谢谢!

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-3-3
在线时间
12 小时
发表于 2017-5-2 15:49:55 | 显示全部楼层 |阅读模式
20金钱
选到了这个毕设,自己几年前学的基础C程,接触STM32和SIM900,需要用到短信收发,但不会发,翻了帖子没看见有人问这么傻的问题,所以厚着脸问
用了原子哥的例程,发送的后两行代码:u3_printf("hm")
                                                         sim900a_send_cmd((u8*)0X1A,"+CMGS:",1000)   
                                                     发送后XCOM的反应如图:

自己感觉这个也是有问题的,但是没有更靠谱的想法。到底要怎么发呀,求助! 微信图片_20170502153332.png

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

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2017-4-18
在线时间
10 小时
发表于 2017-5-2 16:04:23 | 显示全部楼层
你的问题很好,我来抢个沙发
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-5-3 01:17:59 | 显示全部楼层
别通过单片机,直接串口调试下,就知道怎么干了。
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-3-3
在线时间
12 小时
 楼主| 发表于 2017-5-3 10:12:26 | 显示全部楼层
正点原子 发表于 2017-5-3 01:17
别通过单片机,直接串口调试下,就知道怎么干了。

但是但是我这个必须要通过单片机控制才符合设计...直接用串口调试sim900就没意义,况且直接用串口调过,还是没发现通过单片机时问题出现在哪。我到底哪做错了?求解
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-5-3 11:08:22 | 显示全部楼层
柯墨爱 发表于 2017-5-3 10:12
但是但是我这个必须要通过单片机控制才符合设计...直接用串口调试sim900就没意义,况且直接用串口调 ...

原子哥的意思是:你先用电脑的串口助手把短信测出来再考虑用单片机。
就几条AT指令。连电脑测试都不会就没人帮你了,你确定测试通过了再来发图片帖子说嘛。上来就拿单片机抓,调不成功就一条一条再发?光短信费用都搞死你。。。
自在随心
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-3-3
在线时间
12 小时
 楼主| 发表于 2017-5-3 11:58:32 | 显示全部楼层
yuzeyuan1 发表于 2017-5-3 11:08
原子哥的意思是:你先用电脑的串口助手把短信测出来再考虑用单片机。
就几条AT指令。连电脑测试都不会就 ...

哦,谢谢!但我的意思是已经实现用电脑串口助手直接控制sim900收发短信,但是呢,通过单片机就不会发消息了。。
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-5-3 15:58:27 | 显示全部楼层
柯墨爱 发表于 2017-5-3 11:58
哦,谢谢!但我的意思是已经实现用电脑串口助手直接控制sim900收发短信,但是呢,通过单片机就不会发消息 ...

除了发短信外,有一些配置命令需要先发,你确定都发对了吗?模块会给你回复,是不是OK?看一下先。
uint8 AT_CMGF[] = "AT+CMGF=1\r\n";  //设为文本模式
uint8 AT_CSCS[] = "AT+CSCS=\"GSM\"\r\n";  //设置GSM字符集
uint8 AT_CNMI[] = "AT+CNMI=2,1\r\n";  //设置新消息提示
uint8 AT_CMGD[] = "AT+CMGD=1\r\n";  //删除全部短信

        while(OK_OR_NOK == 0)
        {
                OK_OR_NOK = sim900a_send_cmd(AT,sizeof(AT),"OK",100);
        }

        sim900a_send_cmd(AT_CMGF,sizeof(AT_CMGF),"OK",100);
        sim900a_send_cmd(AT_CSCS,sizeof(AT_CSCS),"OK",100);
        sim900a_send_cmd(AT_CNMI,sizeof(AT_CNMI),"OK",100);

需要先发这几条命令。才能让模块干活。
        while(temp<length-1)           //这里用你自己的字符串长度
        {
                while((UART4->SR&0X40)==0);  
                UART4->DR = cmd[temp];
                temp++;
        }
        rt_thread_delay(time);
    //读串口数据并荐到buf里,数据个数是com_data_len.
  com_data_len = rt_UartReadGSM(buf);
sim900a_send_cmd内容我就不多发了,和你的都没关系。内容就是把数据按字节一个个发出去,50ms后接收信息,如果收到的是OK就返回1,如果是ERROR或是没有就返回0。
我在淘宝上买的SIM900A,卖家会给你手册的,你看手册去写自己的命令
自在随心
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-5-3 15:59:44 | 显示全部楼层
本帖最后由 yuzeyuan1 于 2017-5-3 16:01 编辑
柯墨爱 发表于 2017-5-3 11:58
哦,谢谢!但我的意思是已经实现用电脑串口助手直接控制sim900收发短信,但是呢,通过单片机就不会发消息 ...

补充一下。。。上贴里的while是在sim900a_send_cmd函数内部的。发的就是uint8那几个串。另外用示波器去抓,看看有没有发数据,很简单的事。
自在随心
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-3-3
在线时间
12 小时
 楼主| 发表于 2017-5-3 17:49:07 | 显示全部楼层
yuzeyuan1 发表于 2017-5-3 15:58
除了发短信外,有一些配置命令需要先发,你确定都发对了吗?模块会给你回复,是不是OK?看一下先。
uint ...

好,明天去要手册,谢谢~~~
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-3-3
在线时间
12 小时
 楼主| 发表于 2017-5-3 17:50:04 | 显示全部楼层
yuzeyuan1 发表于 2017-5-3 15:59
补充一下。。。上贴里的while是在sim900a_send_cmd函数内部的。发的就是uint8那几个串。另外用示波器去抓 ...

好,谢谢~~
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-5-3 20:49:19 | 显示全部楼层
柯墨爱 发表于 2017-5-3 10:12
但是但是我这个必须要通过单片机控制才符合设计...直接用串口调试sim900就没意义,况且直接用串口调 ...

你先得熟悉啊。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 17:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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