打印
[无线通信]

GPRS/GSM 模块质量好价格又实惠的推荐一家

[复制链接]
1222|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ITshao9|  楼主 | 2016-8-22 11:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ITshao9 于 2016-8-22 11:53 编辑

我给大家推荐一款产品GU906 目前支持二次开发,支持基站定位,应用于工业级的模块
[objc] view plain copy

这个程序搞了我很久,尤其是对如何提高响应速度上,程序流程很简单,大概就是:

发送AT指令->等待模块响应->一旦响应了,立即返回,并处理掉。

这个程序不一定只能用在GU906上,程序框架在任何GPRS模块上都能用,只要修改相应的AT指令,按照对应模块的AT指令流程,做下流程上的修改,就没啥问题,框架很简单,不像某宝上店家的那些代码一样,那些代码反正我是看的头晕,程序接口我都留着,只要按照相应的流程调用接口就好。

下面是模块的代码gu906.c文件


相关帖子

沙发
ITshao9|  楼主 | 2016-8-22 11:56 | 只看该作者
[objc] view plain copy


  • #ifndef _GU906_H_  
  • #define _GU906_H_  
  • #include "sys.h"  
  •   
  • #define GU906GSM_EN   1    //是否开启短信功能   
  • #define GPRSCSQ       18   //信号强度,在使用GPRS功能时,最低要求信号强度不得低于18  
  •   
  • #define _ATOK          0  //执行成功  
  • #define _ATERROR      -1  //执行错误  
  • #define _ATOTIME      -2  //执行超时  
  • #define _LINKNOT      -3  //掉线了  
  •   
  • struct Gprs_Config{  
  •     u8 *server_ip;     //服务器IP  
  •     u32 server_port;   //服务器端口  
  • };  
  •   
  • #if GU906GSM_EN  
  • //根据实际内存情况而定  
  • struct user_simdata{  
  •     char phone[15];  //用户手机号  
  •     char dev[50];    //用户使用的设备  
  •     char date[50];   //接收时间  
  •     char data[200];  //接收的数据  
  • };  
  • extern struct user_simdata sim;  
  • s8 GU906_Read_UserSMS(void);  
  • s8 GU906_Chinese_text(charchar *phone,char* pmsg);  
  • #endif  
  •   
  • s8  GU906_init(void);  
  • s8  GU906_Module_State(void);  
  • s8  GU906_TCP_Socket(struct Gprs_Config *GprsCon);  
  • s8  GU906_DTU_Socket(struct Gprs_Config *GprsCon);  
  • s8  GU906_GPRS_write(char* pdat, int len);  
  • u32 GU906_GPRS_read(charchar *pout, int len);  
  •   
  • s8  GU906_make_phone(charchar *phone);  
  • s8  GU906_Answer_Phone(u32 Delay);  
  • s8  GU906_end_phone(void);  
  • s8  GU906_DtuOrAT(u8 type);  
  •   
  •   
  • #endif  


main.c

[objc] view plain copy
  • #include <string.h>  
  • #include <stdlib.h>  
  • #include "stdio.h"  
  • #include "delay.h"  
  • #include "GU906.h"  
  • #include "config.h"  
  • #include "usart1.h"  
  • #include "usart4.h"  
  •   
  • int main(void)  
  • {      
  •     u32 ret = 0;  
  •     char buff[200]="";  
  •     struct Gprs_Config GprsCon;  
  •     delay_init();  
  •     usart4_Configuration(115200);    //GU900默认通信波特率是115200  
  •     usart1_Configuration(115200);    //调试输出端口波特率设置  
  •     delay_s(5);                      //刚上电 要等待10秒,等待GU906模块初始化完成  
  •       
  •     printf("\r\nBegin...\r\n");  
  •     GprsCon.server_ip = (u8 *)"210.66.59.211"; //GPRS通信时的服务器IP  
  •     GprsCon.server_port = atoi("8888");        //GPRS通信时的服务器端口  
  •       
  •     //GSM初始化  
  •     while(1)  
  •     {  
  •         if(_ATOK == GU906_init()){  
  •             printf("GU906 init ok.\r\n\r\n");  
  •             break;  
  •         }  
  •         printf("init error.\r\n");  
  •         delay_s(1);  
  •     }  
  •       
  •     /*****************************************************************************/  
  •     //GU906 GPRS TCP 非透传模式通信测试  
  •     while(1)  
  •     {  
  •         if(_ATOK == GU906_TCP_Socket(&GprsCon))  
  •         {  
  •             printf("socket ok\r\n\r\n");  
  •             delay_s(3);   
  •             while(1)  
  •             {  
  •                 ret = GU906_GPRS_read(buff, 200);  
  •                 if(ret)  
  •                 {  
  •                     printf("GPRS:[%d][%s]\r\n", ret,buff);  
  •                     if(_ATOK != GU906_GPRS_write((charchar *)"OK", 2))  
  •                     {  
  •                         printf("Send Error.\r\n");  
  •                     }                     
  •                 }  
  •             }  
  •         }  
  •         printf("GU906_TCP_Socket ERROR.\r\n");  
  •         while(1);  
  •     }  
  •     /*******************************************************************************/  
  •       
  •     /*****************************************************************************/  
  •     //GU906 GPRS TCP 透传模式通信测试  
  •     while(1)  
  •     {  
  •         if(_ATOK == GU906_DTU_Socket(&GprsCon))  
  •         {  
  •             printf("socket ok\r\n\r\n");  
  •             delay_s(3);   
  •             while(1)  
  •             {  
  •                 ret = GU906_GPRS_read(buff, 200);  
  •                 if(ret)  
  •                 {  
  •                     printf("GPRS:[%d][%s]\r\n", ret,buff);  
  •                     if(_ATOK != GU906_GPRS_write((charchar *)buff, ret))  
  •                     {  
  •                         printf("Send Error.\r\n");  
  •                     }                     
  •                      
  •                     if(strstr(buff,"CLOSE"))  
  •                     {  
  •                         GU906_DtuOrAT(0);  
  •                     }  
  •                     if(strstr(buff,"OPEN"))  
  •                     {  
  •                         GU906_DtuOrAT(1);  
  •                     }  
  •                 }  
  •             }  
  •         }  
  •         printf("GU906_TCP_Socket ERROR.\r\n");  
  •         while(1);  
  •     }  
  •     /*******************************************************************************/  
  •       
  •     /*****************************************************************************/  
  •     //发送短信测试  
  •     while(_ATOK != GU906_Chinese_text("18750******", "123abd 测试"))  
  •     {  
  •         delay_s(5);  
  •     }  
  •   
  •     //接收短信测试  
  •     while(1)  
  •     {  
  •         if(0 == GU906_Read_UserSMS())  
  •         {  
  •             printf("------------------------------\r\n");  
  •             printf("号码:%s\r\n",sim.phone);  
  •             printf("设备:%s\r\n",sim.dev);  
  •             printf("时间:%s\r\n",sim.date);  
  •             printf("信息:%s\r\n",sim.data);  
  •         }  
  •         delay_ms(50);  
  •     }  
  •     /******************************************************************************/  
  •       
  •     /*****************************************************************************/  
  •     //打电话测试  
  •     if (_ATOK == GU906_make_phone("18750******"))  
  •     {  
  •         //等待接听  
  •         while(_ATOTIME == GU906_Answer_Phone(1000))  
  •         {  
  •             printf("make ok\r\n");  
  •             GU906_end_phone();            
  •         }  
  •         printf("make ok\r\n");  
  •     }  
  •     else   
  •     {  
  •         printf("make error\r\n");  
  •         //SoftReset();  
  •     }  
  •     /******************************************************************************/  
  •     while(1);  
  • }  

使用特权

评论回复
板凳
ITshao9|  楼主 | 2016-8-22 12:53 | 只看该作者
GU906GPRS通信短信源码.pdf (530.37 KB)



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

54

帖子

3

粉丝