野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11838|回复: 11

请问GSM程序的问题

[复制链接]
发表于 2015-4-26 08:57:52 | 显示全部楼层 |阅读模式
在main()函数里加上          while(sim900a_cmd("AT\r","OK",1000) != SIM900A_TRUE)    {
      printf("\r\n模块响应测试不正常!!\r\n");
      printf("\r\n若模块响应测试一直不正常,请检查模块的连接或是否已开启电源开关\r\n");
    }这段代码  连之前的printf()函数也不会显示内容到电脑上了  注释之后printf()函数却可以使用  这个是什么原因



回复

使用道具 举报

发表于 2015-4-26 09:27:53 | 显示全部楼层
我昨天也遇到这个问题了,同问。。
我在while循环里加入了 LCD的显示 程序,然后 在液晶上显示出 模块响应测试不正常,就是 模块和开发板没有通信。
你的时这样吗?
你的线怎么连接的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-26 09:45:43 | 显示全部楼层
小吴小帆 发表于 2015-4-26 09:27
我昨天也遇到这个问题了,同问。。
我在while循环里加入了 LCD的显示 程序,然后 在液晶上显示出 模块响应 ...

我的模块应该没问题 前面在另一个程序有测试过可以收发短信  连线是按照火哥提供的资料里面有说明 你可以试试用mircroUSB线 直接将模块连电脑  看下模块是不是正常  这个有测试过吗?
回复 支持 反对

使用道具 举报

发表于 2015-4-26 10:00:43 | 显示全部楼层
小吴小帆 发表于 2015-4-26 09:27
我昨天也遇到这个问题了,同问。。
我在while循环里加入了 LCD的显示 程序,然后 在液晶上显示出 模块响应 ...

先直接用电脑测试模块,再使用stm32控制
回复 支持 反对

使用道具 举报

发表于 2015-4-26 10:01:01 | 显示全部楼层
spoiled_child 发表于 2015-4-26 09:45
我的模块应该没问题 前面在另一个程序有测试过可以收发短信  连线是按照火哥提供的资料里面有说明 你可以 ...

那直接用例程可以打电话发短信吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-26 10:09:37 | 显示全部楼层
flyleaf 发表于 2015-4-26 10:01
那直接用例程可以打电话发短信吗?

直接用试是可以的  ,  我把文件移到自己的工程  编译没出错 但是运行加入sim900a_cmd这段代码  printf就不能在电脑上显示  注释掉sim900a_cmd这个  printf()却可以用
回复 支持 反对

使用道具 举报

发表于 2015-4-26 10:21:26 | 显示全部楼层
spoiled_child 发表于 2015-4-26 09:45
我的模块应该没问题 前面在另一个程序有测试过可以收发短信  连线是按照火哥提供的资料里面有说明 你可以 ...

啊  可以了。用程序也能控制了。谢谢你啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-26 10:23:56 | 显示全部楼层
小吴小帆 发表于 2015-4-26 10:21
啊  可以了。用程序也能控制了。谢谢你啊

回复 支持 反对

使用道具 举报

发表于 2015-4-26 10:44:08 | 显示全部楼层
flyleaf 发表于 2015-4-26 10:01
那直接用例程可以打电话发短信吗?

我在例程里 加入了 显示在液晶上 是否通信成功的 语句,把printf语句注释掉了 ,开始的时候 能显示 也能发短信,再试第二次  就不行了。开发板总是这样,一个程序有时候 行 有时候不行,请问这是怎么回事呢?
回复 支持 反对

使用道具 举报

发表于 2015-4-26 14:34:54 | 显示全部楼层
USART1_Config();

    /* 配置USART2 */
    USART2_Config();
   
    /* 初始化系统定时器 */
    SysTick_Init();
        LCD_Init();       
        Sd_fs_init();               
       
        LCD_Clear(0, 0, 240, 320, BACKGROUND);
        LCD_DispStr(10, 5, (uint8_t *)"This is a GSM send message demo", WHITE);

    //printf("\r\n野火WF-SIM900A模块发送短信例程\r\n");
   
    //检测模块响应是否正常
    while(sim900a_cmd("AT\r","OK",1000) == SIM900A_TRUE)
    {
      //printf("\r\n模块响应测试不正常!!\r\n");
      //printf("\r\n若模块响应测试一直不正常,请检查模块的连接或是否已开启电源开关\r\n");

          LCD_DispEnCh(10, 40, " 模块响应测试正常", RED);
   }
          //LCD_DispEnCh(7, 7, " 模块响应测试正常", RED);
   
       
   // printf("\r\n通过了模块响应测试,5秒后开始发送短信测试... \r\n");
   
    //延时5秒再发送命令到模块
   SIM900A_DELAY(5000);          
   
   
//发送短信
               
    sim900a_sms((char *)num,"happy");
    printf("\r\n英文短信已发送至:%s,为方便测试,请在程序中修改接收短信的手机号码",num);
        //LCD_DispEnCh(10, 60, " 英文短信已发送至手机", RED);
回复 支持 反对

使用道具 举报

发表于 2015-4-26 14:38:54 | 显示全部楼层
修改了程序 加上了 液晶显示之后,第一次液晶上显示了  LCD_DispStr(10, 5, (uint8_t *)"This is a GSM send message demo", WHITE);
这个语句的内容,并且液晶背景变成了黑色
之后 我再把程序 while中 改为!=  然后再在while后面加上了一句LCD_DispEnCh(7, 7, " 模块响应测试正常", RED);  之后 ,连液晶本来应该显示的 This is a GSM sen。。。都没用了,屏幕也是复位之后的颜色,就是程序没有作用。

请问这是为什么呀?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-26 19:12:12 | 显示全部楼层
小吴小帆 发表于 2015-4-26 14:38
修改了程序 加上了 液晶显示之后,第一次液晶上显示了  LCD_DispStr(10, 5, (uint8_t *)"This is a GSM sen ...

LCD 的我还没看   我也不好回答你
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-6 19:35 , Processed in 0.038028 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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