📄 cgtm900.cpp
字号:
i=rs232_data[char_sta]-'0';
}
else
{
i=rs232_data[char_sta]-'0';
i*=10;
i+=rs232_data[char_sta+1]-'0';
}
if(i>10) i=1;
return i;
}
return FALSE;
}
//检查是否关机--------------
INT8U CGtm900::check_ipcloseout(INT16U templen)
{
INT16U i=0;
INT8U j=0;
INT16U len;
len=templen;
while(i<len)
//get_fse(0x0a,1,0x0a,2);//从第1个换行符,到第2个换行符
{
while(i<len)
{
if(rs232_data[i]=='%') break;
i++;
}
j=0; //
while (at_ack_ipclose[j]!=0&&i<len)
{
if(rs232_data[i]!=at_ack_ipclose[j])
{
break;
}
i++;
j++;
}
if(j>7) return TRUE;
i++;
}
return FALSE;
//}
}
////////////////////////////////////
INT8U CGtm900::check_ring(INT16U templen) //返回是否是%CPRI: 1,2
{
INT16U i=0;
INT8U j=0;
INT16U len;
len=templen;
while(i<len)
//get_fse(0x0a,1,0x0a,2);//从第1个换行符,到第2个换行符
{
while(i<len)
{
if(rs232_data[i]=='R') break;
i++;
}
j=0; //
while (at_ack_ring[j]!=0&&i<len)
{
if(rs232_data[i]!=at_ack_ring[j])
{
break;
}
i++;
j++;
}
if(j>3) return TRUE;
i++;
}
return FALSE;
//}
}
//检查是否关机--------------
INT8U CGtm900::check_ipclose(void)
{
INT8U i;
//b_ackOK=1;
//b_ackOK=0;
//if(rec_count)
//{
b_ackOK=1;
//b_conOK=0;
get_fse(0x0a,1,0x0a,2);//从第1个换行符,到第2个换行符
i=0; //
do
{
if(rs232_data[char_sta+i]!=at_ack_ipclose[i])
{
b_ackOK=0;
//b_conOK=1;
}
i+=1;
}while (at_ack_ipclose[i]!=0);
return b_ackOK;
//}
}
//--------------
INT8U CGtm900::check_ipsend()
{
INT8U i;
for(i=0;i<20;i++)
{
wait_for_ack(1);//
if(rec_count) break;
}
b_ackOK=0;
if(rec_count)
{
b_ackOK=1;
get_fse(0x0a,1,0x0a,2);//从第1个换行符,到第2个换行符
i=0;
//
do
{
if(rs232_data[char_sta+i]!=at_ack_ipsend[i])
b_ackOK=0;
i+=1;
}while (at_ack_ipsend[i]!=0);
}
return b_ackOK;
}
//--------------
//--------------------------------------
//返回是否是+CMTI: "SM",检查是否是新短信,返回的是短信条数
//--------------------------------------
INT8U CGtm900::check_cmti(INT8U len) //返回是否是+CMTI: "SM",1
{
INT8U i;
rec_count=len;
get_fse(0x0a,1,' ',1);//从第1个换行符,到第1个空格符
//INT8U b_ackCMTI=1;
i=0; //判断CTMI头
do
{
if(rs232_data[char_sta+i]!=at_ack_cmti[i])
//b_ackCMTI=0;
return FALSE;
i+=1;
}while (at_ack_cmti[i]!=0);
//新短信条数存储号
//if(b_ackCMTI)
//{
i=0;//用着短信条数
get_fse(',',1,0x0a,2);//从第1个','符,到第2个换行符
if(char_end==char_sta+2)
{
//read_numh=rs232_data[char_sta]; //2C 31 0D 0A<-char_end
//read_numl=rs232_data[char_sta+1];
i=rs232_data[char_sta]-'0'; //2C 31 0D 0A<-char_end
i*=10;
i+=rs232_data[char_sta+1]-'0';
}
else if(char_end==char_sta+1)
{
//read_numh='0'; //2C 31 0D 0A<-char_end
//read_numl=rs232_data[char_sta];
i=rs232_data[char_sta]-'0';
}
return i;
//return TRUE;
//}
//else return FALSE;
}
//--------------------------------------
//返回是否是%CPRI: 1,2
//--------------------------------------
INT8U CGtm900::check_cpri(INT8U len) //返回是否是%CPRI: 1,2
{
INT8U i;
rec_count=len;
get_fse(0x0a,1,0x0a,2);//从第1个换行符,到第2个换行符
//b_ackCPRI=1;
i=0; //判断CPRI头
do
{
if(rs232_data[char_sta+i]!=at_ack_cpri[i])
//b_ackCPRI=0;
return FALSE;
i+=1;
}while (at_ack_cpri[i]!=0);
return TRUE;
//cpri_time=0;
}
//--------------------------------------
//返回是否是%IPDATA:26,"68999999999999680e019c1116"
//--------------------------------------
INT8U CGtm900::check_ipdata(INT16U len) //返回是否是%IPDATA:"abcdefg"
{
INT16U i,j;
INT8U templen;
INT8U b_ackIPDATA=TRUE;
rec_count=len;
i=0; //判断IPDATA
do
{
if(rs232_data[i]!=at_ack_ipdata[i])
b_ackIPDATA=FALSE;
i+=1;
}while (at_ack_ipdata[i]!=0);
if(!b_ackIPDATA)
{
b_ackIPDATA=1;
get_fse(0x0a,1,0x0a,2);
i=char_sta;
j=0;
do
{
if(rs232_data[i]!=at_ack_ipdata[j])
b_ackIPDATA=0;
i+=1;
j+=1;
}while (at_ack_ipdata[j]!=0);
}
if(!b_ackIPDATA)
{
b_ackIPDATA=1;
get_fse(0x0a,2,0x0a,3);
i=char_sta;
j=0;
do
{
if(rs232_data[i]!=at_ack_ipdata[j])
b_ackIPDATA=0;
i+=1;
j+=1;
}while (at_ack_ipdata[j]!=0);
}
if(!b_ackIPDATA)
{
b_ackIPDATA=1;
get_fse(0x0a,3,0x0a,4);
i=char_sta;
j=0;
do
{
if(rs232_data[i]!=at_ack_ipdata[j])
b_ackIPDATA=0;
i+=1;
j+=1;
}while (at_ack_ipdata[j]!=0);
}
if(!b_ackIPDATA)
{
b_ackIPDATA=1;
get_fse(0x0a,4,0x0a,5);
i=char_sta;
j=0;
do
{
if(rs232_data[i]!=at_ack_ipdata[j])
b_ackIPDATA=0;
i+=1;
j+=1;
}while (at_ack_ipdata[j]!=0);
}
/////////////////////////////////
if(b_ackIPDATA)////返回是否是%IPDATA:26,"68999999999999680e019c1116"
{
get_fse('"',1,'"',2); //从第1个'"'符,到第2个'"'符
templen=ascii_2_hex(&rs232_data[char_sta],rs232_data,char_end-char_sta+1);
return templen;
}
return FALSE;
}
//--------------------------------------
//连接服务器,只在短信方式中调用。因为直接是ASICC字符不用直接转换
//--------------------------------------
void CGtm900::connect_IP()//连接服务器
{
clr_at_rxbuf(); //清除接收at信息
tab_sp=at_cmd_ipopen; //at%ipopen="tcp","218.17.105.150",6000
write_at_cmd();
uart.SendNByte(ip_addr,ip_addr_count);
write_at_crlf();
}
//--------------------------------------
//%ETCPIP:1,"10.206.219.123",,"211.136.20.203","211.136.20.203"
//连接服务器,只在短信方式中调用。因为直接是ASICC字符不用直接转换
//--------------------------------------
/*void CGtm900::SaveLocal_IP(void)//连接服务器
{
INT8U i=0,j=0,l=0,m=0;
INT8U k=0;
INT8U tempcnt;
// INT8U GLocalIp[LOCALIPLEN];
INT8U temp;
INT16U temp16;
//CParameterTianJin ip;
clr_at_rxbuf(); //清除接收at信息
tab_sp=at_cmd_localip; //at%ipopen="tcp","218.17.105.150",6000
write_at_cmd();
write_at_crlf();
while(!rec_count)
{for(i=0;i<20;i++)
{
wait_for_ack(10);//
if(rec_count) break;
}
}
if(rec_count)
{
get_fse('"',1,'"',2);//从第3个"符,到第4个"符
if(char_end>char_sta)
{tempcnt=char_end-char_sta;
for(i=0;i<tempcnt+2;i++) //保存回复地址
{
ip_addr[i]=rs232_data[char_sta+i] ;
}
//前三个IP地址
i=0;
for(m=0;m<3;m++)
{
//j=i;
k=0;
temp=0;
while((ip_addr[i++]!='.')&&(i<tempcnt)) k++;
j=i-2;
// temp+=ip_addr[j-(--k)]-'0';
while(k!=0)
{
temp*=10;
temp+=ip_addr[j-(--k)]-'0';
}
GLocalIp[l++]=temp;
}
//第四个IP地址
k=0;
temp=0;
while((ip_addr[i++]!='"')&&(i<tempcnt+2)) k++;
j=i-2;
//temp+=ip_addr[j-(--k)]-'0';
while(k!=0)
{
temp*=10;
temp+=ip_addr[j-(--k)]-'0';
}
GLocalIp[l++]=temp;
ip. Write(LOCALIPADD,GLocalIp,LOCALIPLEN);
}
}
}*/
//--------------------------------------
//断开服务器
//--------------------------------------
void CGtm900::close_IP()//断开服务器
{
clr_at_rxbuf(); //清除接收at信息
tab_sp=at_cmd_ipclose; //at%ipclose
write_at_cmd();
write_at_crlf();
}
//--------------------------------------
//连接服务器OK/ERR
//--------------------------------------
/*void CGtm900::ack_msgOE()//连接服务器OK/ERR
{
INT8U i;
INT8U saveip[5]={"save"};
if(GComMode!=SleepMode)
get_fse(0x0a,1,0x0a,2);
write_msg_addr();
write_at_crlf();
for(i=0;i<5;i++)
{
wait_for_ack(10);
if(rec_count) break;
}
if(GComMode==SleepMode)
uart.SendNByte(saveip,4);
else
{
for(i=char_sta;i<char_end;i++)
{
uart.SendByte(rs232_data[i]);
}
}
uart.SendByte(0x1a);
write_at_crlf();
clr_at_rxbuf();
wait_for_ack(12);
}
*/
//--------------------------------------
//写回复短信的地址
//--------------------------------------
void CGtm900::write_msg_addr() //写回复短信的地址
{
tab_sp=at_cmd_cmgs;
write_at_cmd();
uart.SendByte('"');
uart.SendNByte(ack_addr,13);
uart.SendByte('"');
uart.SendByte(';');
}
//------------------------------
void CGtm900::clr_msg(INT8U j) //删除短信
{
INT8U i;
INT8U read_numh,read_numl;
i=j;
read_numh=i/10;
read_numh+='0';
read_numl=i%10;
read_numl+='0';
//do
//{
clr_at_rxbuf(); //清除接收at信息
if ((read_numl!='0')||(read_numh!='0'))
{
tab_sp=at_cmd_cmgd;
write_at_cmd(); //发送CMGD,删除短信
if(read_numh>'0')//有短信的条数高字节
{
uart.SendByte(read_numh);
}
uart.SendByte(read_numl);//有短信的条数,低字节
write_at_crlf();//
for(i=0;i<25;i++)
{
wait_for_ack(10); //等待回复帧
if(rec_count>0) break;
}
if(rec_count)
{
read_numl-=1;
if((read_numl<'0')&&(read_numh>'0'))
{
read_numl='9';
read_numh-=1;
}
}
}
}
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// 函数名称: clr_all_msg()
// 功能描述: 删除所用短信
// 输 入:
//
// 输 出:
//
// 全局变量: 无
// 调用模块:
// 调用类:
//创 建 人: 杨虎岳
//日 期: 2006年6月7日
//-------------------------------------------------------------------------------------------------------
// 修改人:
// 日 期:
// 内 容:
//------------------------------------------------------------------------------------------------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
void CGtm900::clr_all_msg(void) //删除短信
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -