📄 itm100.c
字号:
case 'Y':
_RunWarnAck(); //自收到中心自动回应报警信息
break;
case 'Z':
_RunAuAck(); //中心收到数据的自动回应[上行数据自动发送]
break;
case '@': //下载的运行记录的数据包;
unloadbit=1; //下载数据报
break;
default:
break;
}
}
else //检测在线与掉线0D 0A 54 43 50 20 43 6C 6F 73 65 64 21 0D 0A
GprsOnline();
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯“定位”功能 */
/*函数名: GPRS_RunPos() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-6 */
/*=========================================================*/
extern bit warnbit;
extern unsigned char warntxnum;
extern bit warnackbit;
void GPRS_RunPos()
{
Taxistatus=Taxistatusbc;
statusValue=0x7f;
GPRSnetTxdata('L',1); //返回中心定位指令
if(warnbit==1)
{
warnbit=0;
warntxnum=100;
warnackbit=1;
stachgbit=1;
}
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”跟踪“功能 */
/*函数名: GPRS_RunTrack() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-6 */
/*=========================================================*/
extern unsigned char xdata TrackTime[2];//跟踪时间间隔
extern unsigned char xdata TrackTimebc[2];//时间间隔备份
extern unsigned char xdata TrackNum[2];//跟踪总次数
extern bit trackbit;
extern bit NoLTtrackbit; //不限时跟踪标志位[2004-01-09]
void GPRS_RunTrack()
{
unsigned char Tracktemp[4];
unsigned char trackii;
for(trackii=0;trackii<4;trackii++)
Tracktemp[trackii]=Uart1RxBUFF[5+trackii];
TrackTime[0]=Unite_Word(Tracktemp[0],Tracktemp[1]);
TrackTime[1]=Unite_Word(Tracktemp[2],Tracktemp[3]);
for(trackii=0;trackii<2;trackii++) TrackTimebc[trackii]=TrackTime[trackii]; //备份时间间隔
for(trackii=0;trackii<4;trackii++)
Tracktemp[trackii]=Uart1RxBUFF[9+trackii];
TrackNum[0]=Unite_Word(Tracktemp[0],Tracktemp[1]);
TrackNum[1]=Unite_Word(Tracktemp[2],Tracktemp[3]);
if(NoLTtrackbit) NoLTtrackbit=0; //首先清除不限时跟踪的标志位
trackbit=1; //使能跟踪位
if((TrackNum[0]==0x00)&&(TrackNum[1]==0x00))//如果是不限时跟踪[2004-01-09]
{
i2c_xmit_buf[0]=0xaa; //使能不限时跟踪的指令
i2c_xmit_buf[1]=TrackTime[0]; //赋值不定时跟踪的时间间隔
i2c_xmit_buf[2]=TrackTime[1];
upsd_i2c_xmit(0xa2,0x00,0xa0,3); //保存不限时跟踪的相关参数
NoLTtrackbit=1; //使能不限时跟踪
trackbit=0;
}
Taxistatus=Taxistatusbc;
statusValue=0x7f;
GPRSnetTxdata('T',1); //返回中心跟踪指令
CurrentTxMode=0xbb;
stachgbit=1;
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”停止跟踪“功能 */
/*函数名: GPRS_RunSTrack() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-6 */
/*=========================================================*/
void GPRS_RunSTrack()
{
if(trackbit) trackbit=0;
Taxistatus=Taxistatusbc;
statusValue=0x7f;
GPRSnetTxdata('S',1); //返回中心停止跟踪指令
stachgbit=1;
//---------------------------------2004-01-09
i2c_xmit_buf[0]=0xbb; //关闭不限时跟踪的指令
i2c_xmit_buf[1]=0x00; //清除不定时跟踪的时间间隔
i2c_xmit_buf[2]=0x00;
upsd_i2c_xmit(0xa2,0x00,0xa0,3); //保存电子围栏数据
if(NoLTtrackbit)NoLTtrackbit=0;
//---------------------------------
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”锁车“功能 */
/*函数名: GPRS_RunLock() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-6 */
/*=========================================================*/
extern bit lockbit;
void GPRS_RunLock()
{
Taxistatus=Taxistatusbc;
GPRSnetTxdata('K',1); //返回中心停止跟踪指令
DATAOUT_B&=0xfe;
delaynop(1000);
DATAOUT_B&=0xfc;
if(!lockbit) lockbit=1;
stachgbit=1;
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”解锁“功能 */
/*函数名: GPRS_RunUnlock() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-6 */
/*=========================================================*/
void GPRS_RunUnlock()
{
Taxistatus=Taxistatusbc;
GPRSnetTxdata('U',1); //返回中心停止跟踪指令
DATAOUT_B|=0x01;
delaynop(1000);
DATAOUT_B|=0x03;
if(lockbit==1)
{
lockbit=0;
stachgbit=1;
}
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”监听“功能 */
/*函数名: GPRS_RunMonitor() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-6 */
/*=========================================================*/
/*extern bit listenbit;
extern unsigned char xdata listentime;//时间长度
void GPRS_RunMonitor()
{
listentime=Uart1RxBUFF[5];
Taxistatus=Taxistatusbc;
GPRSnetTxdata('A',1); //返回中心指令
listenbit=1;
monitor=1;
stachgbit=1;
}*/
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”枪毙“功能 */
/*函数名: GPRS_RunKill() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-13 */
/*=========================================================*/
/*extern bit openumodebit;
extern bit karadbit;
void GPRS_RunKill()
{
Taxistatus=Taxistatusbc;
GPRSnetTxdata('B',1); //返回中心指令
mute=1; //控制枪毙
openumodebit=0;
if(karadbit==0)
{
karadbit=1; //枪毙的标志位
IndicateTone(4);
stachgbit=1;
}
}*/
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”复活“功能 */
/*函数名: GPRS_RunRelive() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-13 */
/*=========================================================*/
/*void GPRS_RunRelive()
{
Taxistatus=Taxistatusbc;
GPRSnetTxdata('D',1); //返回中心指令
if(karadbit==1)
{
karadbit=0;
stachgbit=1;
}
}*/
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”电子围栏“功能 */
/*函数名: GPRS_RunInPlace() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-13 */
/*=========================================================*/
extern unsigned char xdata CheckGps_maxLat[4];//越界的最大纬度
extern unsigned char xdata CheckGps_maxLon[4];//越界的最大经度
extern unsigned char xdata CheckGps_minLat[4];//越界的最大纬度
extern unsigned char xdata CheckGps_minLon[4];//越界的最大经度
extern unsigned char xdata Outrangecnt; //越界的计时计数
extern bit RunInPlacebit; //执行电子围栏标志位
void GPRS_RunInPlace()
{
unsigned char gprsii;
for(gprsii=0;gprsii<4;gprsii++) CheckGps_minLon[gprsii]=Uart1RxBUFF[5+gprsii];
for(gprsii=0;gprsii<4;gprsii++) CheckGps_minLat[gprsii]=Uart1RxBUFF[9+gprsii];
for(gprsii=0;gprsii<4;gprsii++) CheckGps_maxLon[gprsii]=Uart1RxBUFF[13+gprsii];
for(gprsii=0;gprsii<4;gprsii++) CheckGps_maxLat[gprsii]=Uart1RxBUFF[17+gprsii];
if(statusValue!=0x8c)
{
Taxistatus=Taxistatusbc;
GPRSnetTxdata('H',1); //返回中心指令
statusValue=0x7f;
Outrangecnt=0;
}
else Outrangecnt=3;
RunInPlacebit=1;
i2c_xmit_buf[0]=0xaa; //使能电子围栏功能
for(gprsii=0;gprsii<4;gprsii++) i2c_xmit_buf[1+gprsii]=Uart1RxBUFF[5+gprsii];
for(gprsii=0;gprsii<4;gprsii++) i2c_xmit_buf[5+gprsii]=Uart1RxBUFF[9+gprsii];
for(gprsii=0;gprsii<4;gprsii++) i2c_xmit_buf[9+gprsii]=Uart1RxBUFF[13+gprsii];
for(gprsii=0;gprsii<4;gprsii++) i2c_xmit_buf[13+gprsii]=Uart1RxBUFF[17+gprsii];
upsd_i2c_xmit(0xa2,0x1f,0x00,17); //保存电子围栏数据
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”区域调度“功能 */
/*函数名: GPRS_RunAtt() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-13 */
/*=========================================================*/
/*
extern unsigned char xdata CompareData1[4];
extern unsigned char xdata CompareData2[4];
extern unsigned char xdata NewMessPn0;
extern unsigned char xdata RandomTimeAtt;
extern bit RandomTxAttbit;
void GPRS_RunAtt()
{
unsigned char atti;
bit Attlat1=0;
bit Attlat2=0;
bit Attlon1=0;
bit Attlon2=0;
for(atti=0;atti<4;atti++) CompareData1[atti]=dgpsLon[atti];
for(atti=0;atti<4;atti++) CompareData2[atti]=Uart1RxBUFF[5+atti];
Attlon1=_Compare4bcdBB();
for(atti=0;atti<4;atti++) CompareData1[atti]=dgpsLon[atti];
for(atti=0;atti<4;atti++) CompareData2[atti]=Uart1RxBUFF[13+atti];
Attlon2=_Compare4bcdBB();
for(atti=0;atti<4;atti++) CompareData1[atti]=dgpsLat[atti];
for(atti=0;atti<4;atti++) CompareData2[atti]=Uart1RxBUFF[9+atti];
Attlat1=_Compare4bcdBB();
for(atti=0;atti<4;atti++) CompareData1[atti]=dgpsLat[atti];
for(atti=0;atti<4;atti++) CompareData2[atti]=Uart1RxBUFF[17+atti];
Attlat2=_Compare4bcdBB();
if((Attlon1==1)&&(Attlon2==0)&&(Attlat1==1)&&(Attlat2==0)) //在区域内
if(Taxistatusbc==0x60) //当前为空车
{
RandomTimeAtt=NewMessPn0;
RandomTimeAtt=RandomTimeAtt%5;
RandomTxAttbit=1;
}
}*/
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”短信“功能 */
/*函数名: GPRS_RunMess() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-6 */
/*=========================================================*/
extern unsigned char xdata MessBUFF[128];
extern bit NewMessbit;
extern unsigned char xdata MessLon;//短信的有效长度;
extern unsigned char xdata MessLen;//打包后有效长度
void GPRS_RunMess()
{
unsigned char messii;
MessLon=0;
MessLen=0;
if(NewMessbit==0)
{
for(messii=0;messii<128;messii++) //接收短信内容
{
if(Uart1RxBUFF[5+messii]!=0xff)
{
MessLon++;
MessBUFF[13+messii]=Uart1RxBUFF[5+messii];
}
else break;
}
Taxistatus=Taxistatusbc;
statusValue=0x7f;
GPRSnetTxdata('M',1); //返回中心指令
for(messii=0;messii<2;messii++) MessBUFF[messii]=gpsTimeD[messii+2];
MessBUFF[2]='/';
for(messii=0;messii<2;messii++) MessBUFF[3+messii]=gpsTimeD[messii];
MessBUFF[5]=0x00;
for(messii=0;messii<2;messii++) MessBUFF[6+messii]=gpsTimeD[6+messii];
MessBUFF[8]=':';
for(messii=0;messii<2;messii++) MessBUFF[9+messii]=gpsTimeD[8+messii];
MessBUFF[11]='/';
MessBUFF[12]='G';
for(messii=0;messii<2;messii++)
MessBUFF[13+MessLon+messii]=0x20;
MessLen=MessLon+15;
NewMessbit=1; //短信标志位
}
}
/*=========================================================*/
/*功能说明:GPRS的TCP/UDP数据通讯”调度短信“功能 */
/*函数名: GPRS_RunAttMess() */
/*子程序编号: */
/*撰写人: 梁辉 撰写时间:2003-8-13 */
/*=========================================================*/
/*
extern bit RevAttMessbit;
extern bit NoChPicbit;
extern unsigned char xdata AttDTime;
void GPRS_RunAttMess()
{
GPRS_RunMess();
RevAttMessbit=1; //
NoChPicbit=0; //不接收画面切换
AttDTime=20;
}*/
/*=========================================================*/
/*功能说明:接收到报警中心回应 */
/*函数名: _RunWarnAck() */
/*子程序编号: */
/*撰写人: 撰写时间: */
/*=========================================================*/
void _RunWarnAck()
{
if(warnbit==1) //如果当前是报警:则停止
{
warnbit=0;
warntxnum=100;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -