📄 19264cv0_1.c
字号:
//CommSMSProcess(p);//短信存储
//ReturnOK(0x51);
break;
//以下为对接收的主机应答液显屏数据的处理
case 0x30://发送标志码后主机的应答。收到主机的应答后
//才可以开始。。。
if(RxMain_data[5]==0x00)
COMM_OK=1;
else
COMM_OK=0;
RxMain_end=FALSE;
break;
case 0x31://设置IP
KEYVAL_OK=RxMain_data[5];
break;
case 0x39://发送键值后主机的回应。
RxMain_end=FALSE;
break;
case 0x3e://校验主机IP 以及短信中心设置密码
if(RxMain_data[5]==0)
KEYVAL_OK=1;
else
KEYVAL_OK=0;
break;
/*
case 0x43://发送短语或者业务代码后主机的回应。
if(RxMain_data[5]==0x00)
KEYVAL_OK=1;
else
KEYVAL_OK=0;
RxMain_end=FALSE;
//Dispchar(0,0,0x38,1);//for debug
break;
*/
case 0x63://收到主机发送的热线、短信中心、报警、号码
p1tune(RAMCS);
HotLineCnt=0;
if(RxMain_data[5]==0x00&&RxMain_data[6]==0x00&&RxMain_data[7]==0x01)//是否是热线号码
{
k=9;
for(i=0;i<6;i++)
{
for(j=0;j<24;k++)
{ //如果收到结束符或者超出接收数组的实际长度
checksum=RxMain_data[k];
if((checksum==0x22)||(checksum==0x2c))
{ HotLineNum[i][j]=0x0d;
//if((RxMain_data[k-1]>0x2f)&&(RxMain_data[k-1]<0x3a))
HotLineCnt++;//
if(checksum==0x22)
i=6;
j=24;
}
else
{ HotLineNum[i][j]=checksum;//
j++;
}
}
}
KEYVAL_OK=1;
Dispchar(4,0,(number_ascii(HotLineCnt)),1);
//while(1);
//HotLineCnt=3;//
break;
}
else
{
if(RxMain_data[5]==0x00&&RxMain_data[6]==0x00&&RxMain_data[7]==0x05)
goto LabSMS;
else
{ KEYVAL_OK=0;
//取热线电话。。。
TxCommandBuf[0]=0x63;
TxCommandBuf[1]=0x00;
TxCommandBuf[2]=0x01;
TxCommandBuf[3]=0x0d;
TxCmdCnt=0x03;
TxCommand();//发送取热线号码命令
}
}
////接收短信中心号码
LabSMS:
p1tune(RAMCS);
if(RxMain_data[5]==0x00&&RxMain_data[6]==0x00&&RxMain_data[7]==0x05)
{ //是否是短信中心号码
for(j=0,k=9;j<24;j++,k++)
{ //如果收到结束符或者超出接收数组的实际长度
p1tune(RAMCS);
if(RxMain_data[k]==0x22||RxMain_data[k]==0x2c)
{ SMS_CenterTel[j]=0x0d;
break;
}
SMS_CenterTel[j]=RxMain_data[k];
}
if(RxMain_data[k]==0x22)
{ i++;
//HotLineCnt=i;
}
KEYVAL_OK=1;
break;
}
else
{ KEYVAL_OK=0;
//取热线电话。。。
/*TxCommandBuf[0]=0x63;
TxCommandBuf[1]=0x00;
TxCommandBuf[2]=0x05;
TxCommandBuf[3]=0x0d;
TxCmdCnt=0x03;
TxCommand();*///发送取热线号码命令
}
break;
case 0x64://主机发送来电号码到外设
p1tune(RAMCS);
ReturnOK(0x64);
bGSM_GPRS=0;//GSM状态
if(NoTalkCnt>=20)
NoTalkCnt=20;//未接听电话计数器
else
NoTalkCnt++;//未接听电话计数器
p1tune(RAMCS);
if(ComeTelCnt>=20)
{
ComeTelCnt=20;
for(i=ComeTelCnt-1;i>0;i--)
{
ComeTel[i]=ComeTel[i-1];
ComeTel[i].ComeTelNumber=i+1;
}
//记录移动结束
j=0;
ComeTel[0].ComeTelNumber=1;
}
else
{
if(ComeTelCnt>0)
{
for(i=ComeTelCnt;i>0;i--)
{
ComeTel[i]=ComeTel[i-1];
ComeTel[i].ComeTelNumber=i+1;
}
}
j=0;
ComeTelCnt++;
ComeTel[0].ComeTelNumber=1;
}
for(i=4,j=5;j<p;j++)//存电话号码
{ if(i<24)
{ ComeTelBuf[i]=RxMain_data[j];
i++;
}
else break;
}
for(;i<24;i++)//号码不满一行填空格
ComeTelBuf[i]=0x20;
p1tune(RAMCS);
ComeTel[0].TalkFlag=0x2a;//标志:未接、未存。“*”
for(i=0,j=4;i<22;i++,j++)//存号码
{
ComeTel[0].ComeTel[i]=ComeTelBuf[j];
}
if(gps_dingw)//如果当前GPS信号有效,存GPS时间
{
for(i=0;i<4;i++)
ComeTel[0].ComeTelDate[i]=0x20;
for(i=4,j=0;i<24;i++)//存当前日期时间
{
if(i>20)
ComeTel[0].ComeTelDate[i]=0x20;
else
{
ComeTel[0].ComeTelDate[i++]=yymmtt[j++];
ComeTel[0].ComeTelDate[i++]=yymmtt[j++];
}
}
ComeTel[0].ComeTelDate[6]=0x2d;//"-"
ComeTel[0].ComeTelDate[9]=0x2d;//"-"
ComeTel[0].ComeTelDate[12]=0x20;//" "
ComeTel[0].ComeTelDate[15]=0x3a;//"-"
ComeTel[0].ComeTelDate[18]=0x3a;//"-"
ComeTel[0].ComeTelDate[21]=0x20;//"-"
}
else//GPS无信号。填充“??-??-?? ??:??”
{
for(i=0;i<24;i++)
{
ComeTel[0].ComeTelDate[i]=0x20;
}
/*
for(i=0;i<4;i++)
ComeTel[0].ComeTelDate[i]=0x20;
for(i=4;i<20;i++)
ComeTel[0].ComeTelDate[i]=0x3f;//"?"
ComeTel[0].ComeTelDate[8]=0x2d;//"-"
ComeTel[0].ComeTelDate[11]=0x2d;//"-"
ComeTel[0].ComeTelDate[14]=0x20;//"空格"
ComeTel[0].ComeTelDate[17]=0x3A;//":"
for(i=20;i<24;i++)
ComeTel[0].ComeTelDate[i]=0x20;//
*/
}
ComeTelTimer=0;//启动来电超时定时器//40S
comeingtelep=1;//新来电标志
dispteleph=1;
CallStatus=0x04;//来电状态
break;
default:
RxMain_end=FALSE;
break;
}
}
}
RxMain_end=0;
//p1tune(RAMCS);
//RxMain_data[0]=0x36;
}
}
void p1tune(uchar temp)//向P1口送片选信号函数。
{
switch(temp)
{
case 0:
P12=0;
P13=0;
P14=0;
//mcsbak=0x00;
break;
case 1:
P12=1;
P13=0;
P14=0;
//mcsbak=0x01;
break;
case 2:
P12=0;
P13=1;
P14=0;
//mcsbak=0x02;
break;
case 3:
P12=1;
P13=1;
P14=0;
//mcsbak=0x03;
break;
case 4:
P12=0;
P13=0;
P14=1;
//mcsbak=0x04;
break;
case 5:
P12=1;
P13=0;
P14=1;
//mcsbak=0x05;
break;
case 6:
P12=0;
P13=1;
P14=1;
//mcsbak=0x06;
break;
case 7:
P12=1;
P13=1;
P14=1;
//mcsbak=0x07;
break;
}
}
void antennaroue1(void)//显示12*12的信号强度或者GPRS图标
{ // 获取GSM信号强度值。并将相应点阵码送如x12dote[0][12]-2[]
uchar data i,j,k,temp,temp1;
//extern uchar code signel1[2][12];
uchar code * discodeprt;
p1tune(mcs138=RAMCS);
LCDRWIO=1;
LCDDIIO=1;
if(bGSM_GPRS)//显示GPRS图标
{
discodeprt=&Bmp12_Gprs[0][0];
for(i=0;i<2;i++)
{
for(k=0,j=12;j<24;j++,k++)
{ temp1=*(discodeprt++);
temp1 = bytetune(temp1);
x12dote[i][j]=temp1;
}
}
}
else
{
OldAntennaVal=antenna;//
discodeprt=&signel1[0][0];
if(antenna==0) temp=0;
if((antenna<11)&&(antenna>0)) temp=2; // 1格信号
if((antenna<16)&&(antenna>10)) temp=4; // 2格信号
if((antenna<20)&&(antenna>15)) temp=6; // 3格信号
if((antenna<26)&&(antenna>19)) temp=8; // 4格信号
if((antenna<32)&&(antenna>25)) temp=10; // 5格信号
for(i=0;i<2;i++)
{
for(k=0,j=12;j<24;j++,k++)
{ temp1=*(discodeprt++);
temp1 = bytetune(temp1);
if(temp>k)
x12dote[i][j]=temp1;
else
x12dote[i][j]=0x00;
}
}// 以上是信号强度 temp是等级2 4 6 8 10 等级
}
//temp = (antenna/3); // antenna 1--31
}
void dis12dote(uchar x,uchar y,uchar * poniter,bit tempsign)
{ //是汉字时 tempsign=0// 应该是:如果要反显 tempsign=1;
//x指示x12dote[i][j]中i值,y指示其中j值。用于天线及GSM信号强度2004.06.11 mers
uchar data i,j,temp;
uchar * discodeprt=poniter;
LCDRWIO=1;
LCDDIIO=1;
p1tune(mcs138=RAMCS);
for(i=x;i<x+2;i++)
{
for(j=6*y;j<(6*y+6);j++)
{ temp=*(discodeprt++);
temp = bytetune(temp);
if(tempsign)
temp=~temp;
x12dote[i][j]=temp;//////////////////////////////////////////////
}
}
}
void dis12dote1(uchar x,uchar y,uchar * poniter,bit tempsign)
{
uchar data i,j,temp;
uchar * discodeprt=poniter;
LCDRWIO=1;
LCDDIIO=1;
p1tune(mcs138=RAMCS);
for(i=x;i<x+2;i++)
{
for(j=6*y;j<(6*y+12);j++)
{ temp=*(discodeprt++);
temp = bytetune(temp);
if(tempsign)
temp=~temp;
x12dote[i][j]=temp;
}
}
}
//--------------------------------------------
void dotetimedate(void)
{extern uchar code dote12_l[];
extern uchar code dote12_0[];extern uchar code dote_yue[];
extern uchar code dote_rei[];extern uchar code dote12_m[];
extern uchar code dote12_k[];extern uchar code dote12_h[];
extern uchar code dote_nai[];extern uchar code dote_dian[];
extern uchar code dote_xing[];extern uchar code dote_mao[];
extern uchar code dote_nop[];
uchar data i,j,temp;
uchar *discodeprt;
LCDRWIO=1;
LCDDIIO=1;
p1tune(mcs138=RAMCS);
xytime[4] =13;xytime[16] =13; // 经度与纬度中的小数点
for(i=1,j=0;i<7;i++) //日期
{
temp=(yymmtt[i+1-j])&0x0f;
if((temp==0x00)&&(i==1))
{dis12dote(2,i,dote_nop,0);continue;}
if(i==3)
{dis12dote1(2,i,dote_yue,0);i++;j++;j++;continue;}
discodeprt = &dote12_0[0]+temp*12;
dis12dote(2,i,discodeprt,0);
}
dis12dote1(2,7,dote_rei,0);
for(i=0,j=0;i<8;i++) //时间
{ temp=(yymmtt[i-j+6])&0x0f;
if((i==2)|(i==5))
{temp=10;j++;}
discodeprt = &dote12_0[0]+temp*12;
dis12dote(2,i+10,discodeprt,0);
}
/* for(i=0,j=0;i<8;i++) //日期
{ temp=(yymmtt[i-j])&0x0f;
if((i==2)|(i==5))
{temp=14;j++;}
discodeprt = &dote12_0[0]+temp*12;
dis12dote(2,i+8,discodeprt);
}
for(i=0,j=0;i<8;i++) //时间
{ temp=(yymmtt[i-j+6])&0x0f;
if((i==2)|(i==5))
{temp=10;j++;}
discodeprt = &dote12_0[0]+temp*12;
dis12dote(4,i+6,discodeprt);
}
*/ for(i=0,j=0;i<5;i++) //显示速度
{ temp=(speedfang1[i])&0x0f;
discodeprt = &dote12_0[0]+temp*12;
dis12dote(4,i+6,discodeprt,0);
if(temp==13)
break;
}
temp=(speedfang1[i+1])&0x0f;i=i+7;
discodeprt = &dote12_0[0]+temp*12;
dis12dote(4,i++,discodeprt,0); // 小数点值
dis12dote(4,i++,dote_nop,0);
dis12dote(4,i++,dote12_k,0); //k
dis12dote(4,i++,dote12_m,0); //m
dis12dote(4,i++,dote12_l,0); //'/'
dis12dote(4,i++,dote12_h,0); //h
for(;i<19;i++)
dis12dote(4,i,dote_nop,0);
for(i=0,j=0;i<11;i++) //经度
{ temp=(xytime[i-j])&0x0f;
//if((i==2)|(i==5)|(i==10)|(i==6))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -