/****************************************Copyright (c)**************************************************
** 终端产品
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: CGtm900.cpp
**创 建 人: 杨虎岳
**最后修改日期: 2006年6月6日
**描 述: 华为GTM900的参数设置和短信处理
**调用全局变量:
**继 承 父 类:
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 王顺仁
** 版 本: v1.0
** 日 期: 2006年3月3日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
**修 定 人: 杨虎岳
**日 期: 2006年6月6日
**调用全局变量:
**继 承 父 类:
** 描 述: 转换成C++,并对多个地方进行了修改
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "class.h"
#include "task.h"
#include "parameterAdd.h"
#if(HUAWEI_M==1)
INT8U CGtm900:: GMoudleRstcnt=0;
INT8U const at_cmd_at[]={"AT"}; //测试串口 正常返回OK
INT8U const at_cmd_cpas[]={"AT+CPAS"}; //手机活动状态
INT8U const at_cmd_mso[]={"AT%MSO"}; //关机,无返回
INT8U const at_cmd_csq[]={"AT+CSQ"}; //信号强度 正常返回+CSQ:31,99
INT8U const at_cmd_ate0[]={"ATE0"}; //关闭回显 正常返回OK
INT8U const at_cmd_cscs[]={'A','T','+','C','S','C','S','=','"','H','E','X','"',0x00};
//初始化PDP,击活参数,正常返回OK
//INT8U const at_cmd_cgd[]=
//{'A','T','+','C','G','D','C','O','N','T','=','1',',','"','I','P','"',',','"','C','M','N','E','T','"',0x00};
INT8U const at_cmd_cgd[]=
{'A','T','+','C','G','D','C','O','N','T','=','1',',','"','I','P','"',',',0x00};
INT8U const at_cmd_etcp[]={"AT%ETCPIP"};//初始化TCPIP,正常返回OK
INT8U const at_cmd_iomode[]={"AT%IOMODE=1"};//设置用户数据接口,正常返回OK
INT8U const at_cmd_ipopen[]={'A','T','%','I','P','O','P','E','N','=','"','T','C','P','"',',',0x00};//???????打开一条TCP连接,正常返回CONNECT
INT8U const at_cmd_ipsend[]={"AT%IPSEND="};//发送数据到服务器,正常返回%IPSEND:1
INT8U const at_cmd_ipclose[]={"AT%IPCLOSE"};//断开服务器,正常返回OK
INT8U const at_ack_ipclose[]={"%IPCLOSE"};//返回%IPCLOSE
INT8U const at_ack_ipsend[]={"%IPSEND:"};//返回%IPSEND
INT8U const at_ack_ipdata[]={"%IPDATA"};//服务器发来的数据
INT8U const mode_reset[]={"AT-Command Interpreter ready"};//模块复位信号
//短信方式
INT8U const at_cmd_cnmi[]={"AT+CNMI=2,1"} ;//新短信提示,正常返回OK
INT8U const at_cmd_cpms[]={"AT+CPMS?"}; //显示当前短信存储载体设置
INT8U const at_cmd_cmgr[]={"AT+CMGR="} ;//读短信 正常返回短信内容
INT8U const at_cmd_cmgd[]={"AT+CMGD="} ;//删除短信 正常返回OK
//INT8U const at_cmd_cmgf[]={"AT+CMGF=1"} ;//设置短信模式为文本模式,正常返回OK
INT8U const at_cmd_cmgf[]={"AT+CMGF=0"} ;//设置短信模式为PDU,正常返回OK
INT8U const at_cmd_cmgs[]={"AT+CMGS="};//写短信,正常返回">"
INT8U const at_ack_cmti[]={"+CMTI:"};//新短信提示 +CMTI: "SM",1
INT8U const at_ack_cpms[]={"+CPMS:"};//短信载体显示//判断是否是短信
INT8U const at_ack_cpas[]={"+CPAS: 0"};//手机活动状态:准备就绪
INT8U const at_ack_cpri[]={"%CPRI:"};//有网络信号提示
INT8U const at_ack_cmgr[]={"+CMGR:"};//短信内容
INT8U const at_ack_cmgs[]={"+CMGS:"};//短信发送成功
INT8U const at_ack_cms321[]={"+CMS ERROR: 321"};//invalid memory index
INT8U const at_ack_error[]={"connect error"};
INT8U const at_ack_errn[]={"ERROR"};
INT8U const at_cmd_csca[]={"AT+CSCA?"};
INT8U const at_cmd_setcsca[]={"AT+CSCA="};
INT8U const at_ack_conerrn[]={"ERROR: 2"};
INT8U const at_ack_connect[]={"CONNECT"};
INT8U const at_ack_ring[]={"RING"};
//INT8U const at_ack_csq[]={"+CSQ: 99,99"};
INT8U const at_ack_csq[]={"+CSQ: "};
INT8U const hex2hl[]={"0123456789ABCDEF"};
INT8U const at_cmd_localip[]={"AT%ETCPIP?"};//查询本地IP
CGPIOOUT MokRcvfg(LED1IO);
/*
AT+CPMS?
<mem1> “SM” SIM卡消息存储器
读取和删除消息时使用
“ME” ME消息存储器
的存储器
<mem2> “SM” SIM卡消息存储器
存储和发送消息时使用
“ME” ME消息存储器
的存储器
<mem3> “SM” SIM卡消息存储器
若没有建立到TE的路
“ME” ME消息存储器
由,则将接收的消息存储
在该存储器
<usedx> -- <memx>中当前消息的数量
<totalx> -- <memx>中可存储的消息的数量
*/
/*
%CPRI: 1,2
AT+CMGF=1
AT+CPMS?
+CPMS: "SM",1,20,"SM",1,20,"SM",1,20
OK
ATE0
at+csq
AT+Cmgr=1
+CMGR: "REC UNREAD","8613760465620",,"06/05/12,17:00:50+00",145,4,0,0,"8613800755500",145,24
Ip:"218.017.105.150",6000
OK
AT+CGDCONT=1,"IP","CMNET"
AT%ETCPIP
218.18.39.159
AT%IPOPEN="TCP","219.134.113.47",4777
AT%IPCLOSE
AT%IPSEND="11111111111111111111"
*/
CGtm900::CGtm900(INT8U* buf)
{
//CommonId=id;
rs232_data=buf;
}
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// 函数名称: GprsInit(void)
// 功能描述: GPRS初始化
// 输 入:
//
// 输 出: 解码地址
//
// 全局变量: 无
// 调用模块:
// 调用类:
//创 建 人: 杨虎岳
//日 期: 2006年6月7日
//-------------------------------------------------------------------------------------------------------
// 修改人:
// 日 期:
// 内 容:
//------------------------------------------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
INT8U CGtm900:: GprsInit(void)
{
INT8U temp=0;
INT8U j=0;
power_on();
do
{
temp=InitAll();
if(temp) return TRUE;
j++;
}while(GRestGprsFg&&j<1);
return FALSE;
}
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// 函数名称: CloseTcpIP(void)
// 功能描述: 关闭TCP连接,要等12秒
// 输 入:
//
// 输 出: 解码地址
//
// 全局变量: 无
// 调用模块:
// 调用类:
//创 建 人: 杨虎岳
//日 期: 2006年6月7日
//-------------------------------------------------------------------------------------------------------
// 修改人:
// 日 期:
// 内 容:
//------------------------------------------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
INT8U CGtm900:: CloseTcpIP(void)
{
INT8U i;
close_IP();//这个要12秒才能返回OK
for(i=0;i<20;i++)
{
clr_at_rxbuf(); //清除接收at信息
wait_for_ack(100);
if(rec_count)
{
check_ipclose();
if(!b_ackOK) check_OK();
if(b_ackOK) return True;
//clr_at_rxbuf(); //清除接收at信息
}
}
return FALSE;
}
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// 函数名称: InitTCPIP(void)
// 功能描述: 包括配置APN,进入TCPIP功能,打开TCPIP一条数据连接,三个功能项
// 输 入:
//
// 输 出: 解码地址
//
// 全局变量: 无
// 调用模块: Initconnect_IP()
// 调用类:
//创 建 人: 杨虎岳
//日 期: 2006年6月7日
//-------------------------------------------------------------------------------------------------------
// 修改人:
// 日 期:
// 内 容:
//------------------------------------------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
INT8U CGtm900:: InitTCPIP(void)//包括配置APN,进入TCPIP功能,打开TCPIP一条数据连接,三个功能项
{
INT8U i=0;
INT8U temp;
write_at_ate0();
//temp=8;
temp=write_at_csq();//信号强度
if(temp>4&&temp!=99)
{
i=0;
write_at_cgd();//初始化PDP,配置APN,,击活参数,正常返回OK//如果不行复位模块5次
if(rec_count==0)
return FALSE;
//if(!b_ackOK) {i++;}
//}while((!b_ackOK)&&i<2);
//选择16进制形式。现在不能用,华为的模块不能处理00
//i=0;
do
{
write_at_etcp();//初始化ETCP,正常返回OK
if(rec_count==