📄 19264cv0_1.c.bak
字号:
if(RxMain_data[15]==0x10)//如果是调度信息
ScheduleInforProcess(p);//GPRS发送的调度信息处理
}
//for GPRS SMS DEBUG END
//FOR SMS DEBUG START
if(RxMain_data[2]==0x51)
{
BEEPtime=0;
BLtime=0;
BEEP=0;
BLIGHT=0;
p1tune(RAMCS);
CommSMSProcess(p);//短信存储
ReturnOK(0x51);
}
//FOR SMS DEBUG END
if(RxMain_data[q]==checksum) //校验OK?因仿真器不支持所以拆成以上四个表达式
{
//Dispchar(2,2,0x38,1);// for test
//return;// for test
i=RxMain_data[1];
if(0x61==i||0x62==i)
{
i=RxMain_data[2];
switch(i)
{ //应答主机部分。。。。。。。。
case 0x38://主机要求液显屏自检//
//需要添加实际的自检代码
ReturnOK(0x38);
break;
case 0x62://主机发送GSM信号强度值“无须应答”//
OldAntennaVal=antenna;
antenna=RxMain_data[5];//
break;
case 0x41://主机发送GSM、GPRS状态值到外设
ReturnOK(0x41);
if(RxMain_data[5]==0x03||RxMain_data[5]==0x04)//电话接通
{
//displayline(2,&nochardis[0],0);
//displayline(4,&nochardis[0],0);
disromdata(0xD5,0xFD); // 正
disdatatune();
Dispchin(2,2,0);
disromdata(0xD4,0xDA); // 在
disdatatune();
Dispchin(2,4,0);
disromdata(0xCD,0xA8); // 通
disdatatune();
Dispchin(2,6,0);
disromdata(0xBB,0xB0); // 话
disdatatune();
Dispchin(2,8,0);
disromdata(0xa1,0xad); // ...
disdatatune();
Dispchin(2,10,0);
Dispchar(4,MainFaceNumPtr,0x20,0);
MainFaceNumPtr=2;
Dispchar(6,MainFaceNumPtr,0x20,1);
CallStatus=0x03;
}
if(RxMain_data[5]>0x05&&RxMain_data[5]<=0x0a)//拨打不成功
{ ComeTelBuf[0]=0x2a;//
displayline(2,&nochardis[0],0);
displayline(4,&nochardis[0],0);
TxCommandBuf[0]=0x39;
TxCommandBuf[1]=0xff;
TxCommandBuf[2]=0x17;
TxCommandBuf[3]=0x0d;
TxCmdCnt=0x03;
TxCommand();//发送挂断命令
p1tune(RAMCS);
i=RxMain_data[5];
if(i==0x06)//对方忙
{
disromdata(0xB6,0xD4); // 对
disdatatune();
Dispchin(3,8,0);
disromdata(0xB7,0xBD); // 方
disdatatune();
Dispchin(3,10,0);
disromdata(0xC3,0xA6); // 忙
disdatatune();
Dispchin(3,12,0);
disromdata(0xa3,0xa1); // !
disdatatune();
Dispchin(3,14,0);
}
else
{
if(i==0x09)//无人接听
{
if(CallStatus==0x03)//如果在通话状态
{
disromdata(0xCD,0xA8); // 通
disdatatune();
Dispchin(3,8,0);
disromdata(0xBB,0xB0); // 话
disdatatune();
Dispchin(3,10,0);
disromdata(0xBD,0xE1); // 结
disdatatune();
Dispchin(3,12,0);
//
disromdata(0xCA,0xF8); // 束
disdatatune();
Dispchin(3,14,0);
disromdata(0xa3,0xa1); // !
disdatatune();
Dispchin(3,16,0);
}
else
{ disromdata(0xCE,0xB4); // 未
disdatatune();
Dispchin(3,8,0);
disromdata(0xBD,0xD3); // 接
disdatatune();
Dispchin(3,10,0);
//
disromdata(0xC0,0xB4); // 来
disdatatune();
Dispchin(3,12,0);
disromdata(0xB5,0xE7); //电
disdatatune();
Dispchin(3,14,0);
disromdata(0xa3,0xa1); // !
disdatatune();
Dispchin(3,16,0);
}
}
else
{
disromdata(0xBA,0xF4); // 呼
disdatatune();
Dispchin(3,8,0);
disromdata(0xBD,0xD0); // 叫
disdatatune();
Dispchin(3,10,0);
disromdata(0xCA,0xA7); // 失
disdatatune();
Dispchin(3,12,0);
disromdata(0xB0,0xDC); // 败
disdatatune();
Dispchin(3,14,0);
disromdata(0xa3,0xa1); // !
disdatatune();
Dispchin(3,16,0);
}
}
dispnewsnumb();// 显示接收信息的条数、以及未读信息的条数
CallStatus=0x00;//待机状态
}
break;
case 0x42://收到中心下的发信息
ReturnOK(0x42);
BEEPtime=0;
BLtime=0;
BEEP=0;
BLIGHT=0;
//p1tune(RAMCS);
//if(RxMain_data[13]==0x00)//如果是公共信息
// CommProcess(p);//GPRS发送的公共信息处理
/*{
for(j=0;j<10;j++)//查找未使用的内存空间
{
if(!(CommInfor[j].ReadFlag))//如果已废弃
break;
}
if(j==9)// 如果已经存满10条
{ j=0;//覆盖第一条
CommInfor[0].InforNumber=10;//置为未读标志
}
else
{
CommCounter++;//公共信息计数器+1
CommTotal++;//总的公共信息计数器+1
InforTotal++;//总的信息计数器+1
CommInfor[j].InforNumber=CommCounter-1;
}
CommInfor[j].ReadFlag=0x10;//未读标志
//存日期时间数据//可以直接送显
CommInfor[j].Text[0]=(RxMain_data[11]&0x0f)>>4+0x30;
CommInfor[j].Text[1]=(RxMain_data[11]&0xf0)+0x30;
CommInfor[j].Text[2]=0x2d;//月后加“-”
CommInfor[j].Text[3]=(RxMain_data[12]&0x0f)>>4+0x30;
CommInfor[j].Text[4]=(RxMain_data[12]&0xf0)+0x30;
CommInfor[j].Text[5]=0x20;//
CommInfor[j].Text[6]=(RxMain_data[13]&0x0f)>>4+0x30;
CommInfor[j].Text[7]=(RxMain_data[13]&0xf0)+0x30;
CommInfor[j].Text[8]=0x3a;//小时后加“:”
CommInfor[j].Text[9]=(RxMain_data[14]&0x0f)>>4+0x30;
CommInfor[j].Text[10]=(RxMain_data[14]&0xf0)+0x30;
CommInfor[j].TextLenth=11;
r=11;
if(RxMain_data[5]==0xf0)//如果是内码
for(q=20;q<p;q++)//存文本数据
{
CommInfor[j].Text[r]=RxMain_data[q];
q++;
r++;
CommInfor[j].TextLenth++;
}
else
{
for(q=20;q<p;q++)//存文本数据
{
i=RxMain_data[q];
q++;
k=RxMain_data[q];
q++;
untogb(i,k);
CommInfor[j].Text[r]=hi_gb;
r++;
CommInfor[j].TextLenth++;
CommInfor[j].Text[r]=low_gb;
r++;
CommInfor[j].TextLenth++;
}
}
}*/
//if(RxMain_data[19]==0x31&&RxMain_data[20]==0x30)//如果是调度信息
//ReturnOK(0x42);
break;
case 0x60://主机发送电话号码或者功能键值
//用于主机发送手柄的键值到手柄供手柄LCD显示
//ReturnOK(0x60);
break;
case 0x51:////主机发送文本信息
//p1tune(RAMCS);
//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:
KEYVAL_OK=RxMain_data[5];
break;
case 0x39://发送键值后主机的回应。
RxMain_end=FALSE;
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);
if(RxMain_data[5]==0x00&&RxMain_data[6]==0x00&&RxMain_data[7]==0x01)//是否是热线号码
{
for(i=0;i<6;i++)
{
for(j=0,k=9;j<24;j++,k++)
{ //如果收到结束符或者超出接收数组的实际长度
p1tune(RAMCS);
if(RxMain_data[k]==0x22||RxMain_data[k]==0x2c)
{ HotLineNum[i][j]=0x0d;
break;
}
HotLineNum[i][j]=RxMain_data[k];
}
if(RxMain_data[k]==0x22)
{ i++;
HotLineCnt=i;
break;
}
}
KEYVAL_OK=1;
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);
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<48)
{ ComeTelBuf[i]=RxMain_data[j];
i++;
}
else break;
}
for(;i<24;i++)
ComeTelBuf[i]=0x20;
for(j=0;i<47;i++)
{ if(j>13) ComeTelBuf[i]=0x20;
else
{
ComeTelBuf[i]=yymmtt[j];
j++;
}
}
ComeTel[0].TalkFlag=0x2a;//标志:未接、未存。“*”
for(i=0,j=4;i<22;i++,j++)//存号码
{
ComeTel[0].ComeTel[i]=ComeTelBuf[j];
}
for(i=0,j=0;i<24;i++,j++)//存当前日期时间
{
if(i>13)
ComeTel[0].ComeTelDate[i]=0x20;
else
ComeTel[0].ComeTelDate[i]=yymmtt[j];
}
ComeTelTimer=0;//启动来电超时定时器//40S
comeingtelep=1;//新来电标志
dispteleph=1;
CallStatus=0x04;//来电状态
break;
default:
RxMain_end=FALSE;
break;
}
}
}
else
{
//CONRX=DGPS_COMM;
i++; //flag_main_dgps=DGPS_COMM;
}
}
else
{
//CONRX=DGPS_COMM;
i++; //flag_main_dgps=DGPS_COMM;
}
//ES=1;
RxMain_end=0;
}
void p1tune(uchar temp)//向P1口送片选信号函数。
{
switch(temp)
{
case 0:
P12=0;
P13=0;
P14=0;
//mcsbak=0x00;
break;
case 1:
P12=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -