亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? protocol.c.bak

?? 用來(lái)pdu編解碼
?? BAK
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/**************************************************************************
文件名: protocol.c
功能  : 終端和中心通信協(xié)議

2007-6-13 0:44		v3.0

2007-6-14 0:44   	v4.0
2007-6-14 21:01   	v5.0





2007-6-15 1:30 	centSetWorkPara		調(diào)試通過(guò)
				cwntSetWorkState	調(diào)試通過(guò)
				centLoginConfirm	調(diào)試通過(guò)
				centGetWorkState	調(diào)試通過(guò)
				centGetWorkPara		調(diào)試通過(guò)
				centGetCarState		調(diào)試通過(guò)
				
				
				tmLoginMsg			調(diào)試通過(guò)
				tmGetWorkStateMsg	調(diào)試通過(guò)
				tmGetWorkParaMsg    調(diào)試通過(guò)
				tmCarStateMsg       調(diào)試通過(guò)
				
				tmEventProcess      調(diào)試通過(guò)
**************************************************************************/

#include "protocol.h"


//**************************************************************************
//函數(shù):FrameCheck
//功能: 校驗(yàn)命令幀的有效性
//輸入:Cmmd=中心命令,Commdlen=中心命令長(zhǎng)度
//返回:幀的有效性,
//0=有效,1=基本長(zhǎng)度錯(cuò)誤
//2=幀頭錯(cuò)誤,3=幀長(zhǎng)錯(cuò)誤
//4=校驗(yàn)和錯(cuò)誤
//**************************************************************************
//#define TEST

#ifdef TEST
	#define Myprintf printf
#else
	#define Myprintf RunMsgPrintf
#endif

char centFrameCheck( unsigned char *Commd, unsigned char Commdlen )
{
	//基本長(zhǎng)度
	if (Commdlen < F_BASIC_LENGTH)return 1;
	//幀頭		

	if (strstr(Commd, F_HEAD_STR) ==0)return 2;
			
	//幀長(zhǎng)度
//	if (!(Commd[F_LENGTH_BEGIN] == Commdlen))return 3;	
		
	//校驗(yàn)和
	
	//幀有效
	return 0;
} 
//**************************************************************************
//函數(shù):FrameDeal
//功能: 解析中心命令并進(jìn)行相應(yīng)的處理
//輸入:Cmmd=中心命令,Commdlen=中心命令長(zhǎng)度
//返回:無(wú)
//**************************************************************************
void centFrameDeal(unsigned char *Commd, unsigned char Commdlen)
{
	char result;
	
	result = centFrameCheck(Commd, Commdlen);

	//中心命令幀有效性判斷
	if ((Commd[F_TYPE_BEGIN] != F_TYPE_COMMD)&&(Commd[F_TYPE_BEGIN] != F_TYPE_SURE))
	{
		Myprintf("\n無(wú)效的中心命令\n");
		return;
	}		
	
	switch (result)	
	{
		case 0:	Myprintf("\n中心命令正確\n");break;
		case 1:	Myprintf("\n中心命令基本長(zhǎng)度錯(cuò)誤\n");return;
		case 2:	Myprintf("\n中心命令幀頭錯(cuò)誤\n");return;
		case 3:	Myprintf("\n中心命令幀長(zhǎng)錯(cuò)誤\n");return;
		case 4:	Myprintf("\n中心命令校驗(yàn)和錯(cuò)誤\n");return;		
	}	

	//根據(jù)幀類型進(jìn)行相應(yīng)的處理	
	switch ((int)Commd[F_TYPE_BEGIN])	
	{
			case F_TYPE_COMMD:
						switch (Commd[F_CODE_BEGIN]) 
						{
							case F_CODE_LOGIN: 
								//中心要求重新注冊(cè)
								//設(shè)置注冊(cè)狀態(tài)為0,重新注冊(cè)
								SysState.Logined = 0;
								Myprintf("中心要求重新注冊(cè)");
								centNoteTmlogin(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);
								break;
							
							case F_CODE_CARSTATE:
								//中心請(qǐng)求車輛狀態(tài)
								Myprintf("中心請(qǐng)求車輛狀態(tài)");
								centGetCarState(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
								break;
							
							case F_CODE_GETWORKPARA:
								Myprintf("中心請(qǐng)求工作參數(shù)");
								centGetWorkPara(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
							break;
						
							case F_CODE_SETWORKPARA:
								Myprintf("中心設(shè)置工作參數(shù)");
								centSetWorkPara(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
								break;
							case F_CODE_GETWORKSTATE:
								Myprintf("中心請(qǐng)求工作狀態(tài)");
								centGetWorkState(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
								break;
							case F_CODE_SETWORKSTATE:
								Myprintf("中心設(shè)置工作狀態(tài)");
								centSetWorkState(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);
								break;
							case F_CODE_WARN:
								
								break;
							case F_CODE_CLEARWARN:
								
								break;
							case F_CODE_DETECT:
								
								break;
																		
					}
					break;//break case F_TYPE_COMMD
			case F_TYPE_SURE:
						switch (Commd[F_CODE_BEGIN]) 
						{
							case F_CODE_LOGIN: 
								Myprintf("\n中心確認(rèn)登錄\n");
								centLoginConfirm(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
								break;

							case F_CODE_WARN:
								
								break;
							case F_CODE_CLEARWARN:
								
								break;
							case F_CODE_DETECT:
								
								break;
																		
					}
					break;//break case F_TYPE_SURE
	}
}
//**************************************************************************
//函數(shù):LoginConfirm
//功能: 中心對(duì)終端注冊(cè)確認(rèn)/否認(rèn)幀
//輸入:Data=DATA部分,Datalen=Data長(zhǎng)度
//返回:無(wú)
//
//
//**************************************************************************
void centLoginConfirm( unsigned char *Data , int Datalen)
{
	if (Data[0] == LP_DATA_SEGMENT_PMT)
	{
		//合法/允許
		//停止計(jì)時(shí),進(jìn)入工作狀態(tài)	
		SysState.Logined = 1;	
		SysState.fSendLoginMsg.TimeEnabled = 0;
		SysState.fSendLoginMsg.flag = 0;	
	}	
}
//**************************************************************************
//函數(shù):centNoteTmlogin
//功能: 中心要求終端重新注冊(cè)
//輸入:Data=DATA部分,Datalen=Data長(zhǎng)度
//返回:無(wú)
//
//
//**************************************************************************
void centNoteTmlogin( unsigned char *Data , int Datalen)
{
	SysState.fSendLoginMsg.flag = 1;	
	SysState.Logined = 0;	
}
//**************************************************************************
//函數(shù):centGetCarState
//功能: 中心讀取車輛狀態(tài)
//輸入:Data=DATA部分,Datalen=Data長(zhǎng)度
//返回:無(wú)
//**************************************************************************
void centGetCarState( unsigned char *Data, int Datalen)
{
	
	//發(fā)送一次車輛狀態(tài)
	SysState.fSendCarStateMsg.flag = 1;	

}
//**************************************************************************
//函數(shù):centGetWorkPara
//功能: 中心讀取工作參數(shù)
//輸入:Data=Data部分,Datalen=Data長(zhǎng)度
//返回:無(wú)
//**************************************************************************
void centGetWorkPara( unsigned char *Data, int Datalen)
{
	
	//發(fā)送一次工作參數(shù)
	SysState.fSendSetPataMsg = 1;	

}
//**************************************************************************
//函數(shù):centSetWorkPara
//功能: 中心設(shè)定工作狀態(tài)
//輸入:Data=DATA部分,Datalen=Data長(zhǎng)度
//返回:無(wú)
//**************************************************************************
void centSetWorkPara( unsigned char *Data, int Datalen)
{
	int kk, jj;
	char type;
	
	for(kk=0; kk<Datalen; )
	{		
		type = *Data;
		
		switch (type)
		{
			case WP_PT_COMTYPE:
					Data++;
					BasicPara.ComuMode = Data[0];//通信模式	
					Data++ ;
					kk += 2;
					//Myprintf("commode=%d\n",BasicPara.ComuMode );
					//Myprintf("kk=%d", kk);
					break;
			case WP_PT_CENTNUM://中心gsm號(hào)碼
					Data++;
					myCopy( Data , BasicPara.CenterGsmNum ,0 ,CENTERNUMLEN);
					Data += CENTERNUMLEN;
					kk += CENTERNUMLEN+1;
					
					//Myprintf("CenterGsmNum=%s\n",BasicPara.CenterGsmNum );
					//Myprintf("kk=%d", kk);
					break;
			case WP_PT_CENTIP://中心IP和端口
					Data++;
					myCopy( Data , BasicPara.CenterIP[0] ,0 ,4);
					Data += 4;
					//Myprintf("IP:%d.%d.%d.%d\n",BasicPara.CenterIP[0][0],BasicPara.CenterIP[0][1],BasicPara.CenterIP[0][2],BasicPara.CenterIP[0][3] );
					BasicPara.CenterPort[0] = Data[0]*256+Data[1];
					//Myprintf("PORT:%d\n",BasicPara.CenterPort[0]);
					Data += 2;
					kk += 7;
					//Myprintf("kk=%d", kk);
					break;
			case WP_PT_MSGPERIOD://終端消息發(fā)送間隔時(shí)間
					Data++;
					WorkPara.sLoginMsgPeriod = Data[0]*256 + Data[1];
					WorkPara.sCarStateMsgPeriod = WorkPara.sLoginMsgPeriod;
					//Myprintf("sCarStateMsgPeriod:%d\n",WorkPara.sCarStateMsgPeriod);
					Data += 2;
					kk +=3;
					//Myprintf("kk=%d", kk);
			case WP_PT_WARNPERIOD://終端報(bào)警消息發(fā)送間隔時(shí)間
					Data++;
					WorkPara.sWarnMsgPeriod = Data[0]*256 + Data[1];
					//Myprintf("sWarnMsgPeriod:%d\n",WorkPara.sWarnMsgPeriod);
					Data += 2;	
					kk +=3;
					//Myprintf("kk=%d", kk);
					break;
			case WP_PT_SENSORSBOUND://16路傳感器報(bào)警門(mén)限
					Data++;
					for(jj=0; jj < 16; jj++)
					{
						WorkPara.SensorsBound[jj] = Data[0]*256 + Data[1];	
						//Myprintf("SensorsBound[%d]=%d\n",jj, WorkPara.SensorsBound[jj]);
						Data += 2;
						
						//Myprintf("kk=%d", kk);
					}
					kk +=16*2+1;
					break;
			case WP_PT_SENSORWARNEN://報(bào)警使能
					Data++;
					WorkPara.SensorsWarnEnabled[0] = Data[0];
					WorkPara.SensorsWarnEnabled[1] = Data[1];
					//Myprintf("SensorsWarnEnabled[%d][%d]\n", WorkPara.SensorsWarnEnabled[0], WorkPara.SensorsWarnEnabled[1]);
					Data +=2;
					kk +=3;
					//Myprintf("kk=%d", kk);
					break;
			case WP_PT_WAITCHSTATE:
					//開(kāi)關(guān)量正常狀態(tài)值
					Data++;
					WorkPara.SwitchNomalState[0] = Data[0];
					WorkPara.SwitchNomalState[1] = Data[1];
					//Myprintf("SwitchNomalState[%d][%d]\n", WorkPara.SwitchNomalState[0], WorkPara.SwitchNomalState[1]);

					Data +=2;
					kk +=3;
					//Myprintf("kk=%d", kk);
					break;
			case WP_PT_WAITCHWARNEN:
					//開(kāi)關(guān)量報(bào)警使能
					Data++;
					WorkPara.SwitchWarnEnable[0] = Data[0];
					WorkPara.SwitchWarnEnable[1] = Data[1];
					//Myprintf("SwitchWarnEnable[%d][%d]\n", WorkPara.SwitchWarnEnable[0], WorkPara.SwitchWarnEnable[1]);
					//Myprintf("kk=%d", kk);
					Data +=2;
					kk +=3;
					//Myprintf("kk=%d", kk);
					break;	
			case WP_PT_RUNFIELD:
					//活動(dòng)范圍
					//左上角緯度
					jj = FindeCharInStr(Data, (Datalen - kk) , 1, ',');
					if (jj == -1) return;					
					myCopy(Data, (char*)WorkPara.gpsPositionBound_LEFT.latitude, 0, jj);
					Data += jj+1;
					kk += jj+1;	
					
					
					WorkPara.gpsPositionBound_LEFT.LatiIndit = Data[0];	
					Data += 2;
					kk += 2;	
					//左上角經(jīng)度
					jj = FindeCharInStr(Data, (Datalen - kk) , 1, ',');
					if (jj == -1) return;					
					myCopy(Data, WorkPara.gpsPositionBound_LEFT.Longitude, 0, jj);
					Data += jj+1;
					kk += jj+1;	
					
					WorkPara.gpsPositionBound_LEFT.LongiIndit = Data[0];	
					Data += 2;
					kk += 2;				
					
					//右下角緯度
					jj = FindeCharInStr(Data, (Datalen - kk) , 1, ',');
					if (jj == -1) return;					
					myCopy(Data, WorkPara.gpsPositionBound_RIGHT.latitude, 0, jj);
					Data += jj+1;
					kk += jj+1;	
					
					WorkPara.gpsPositionBound_RIGHT.LatiIndit = Data[0];	
					Data += 2;
					kk += 2;	
					//右下角經(jīng)度
					//jj = FindeCharInStr(Data, (Datalen - kk) , 1, ',');
					if (jj == -1) return;					
					myCopy(Data, WorkPara.gpsPositionBound_RIGHT.Longitude, 0, jj);
					Data += jj+1;
					kk += jj+1;	
					
					WorkPara.gpsPositionBound_RIGHT.LongiIndit = Data[0];	
					Data += 2;
					kk += 2;	
									
					break;		
			default : return;			
									
		}	
		
	}	
	//終端回應(yīng),發(fā)送參數(shù)設(shè)定消息
	SysState.fSendSetPataMsg = 1;

}
//**************************************************************************
//函數(shù):centGetWorkState
//功能: 中心查詢工作狀態(tài)
//輸入:Data=DATA部分,Datalen=Data長(zhǎng)度
//返回:無(wú)
//**************************************************************************
void centGetWorkState( unsigned char *Data, int Datalen)
{
	//返回工作狀態(tài)
	SysState.fSendWorkState = 1;		
}
//**************************************************************************
//函數(shù):centSetWorkState
//功能: 中心設(shè)定工作狀態(tài)
//輸入:Data=DATA部分,Datalen=Data長(zhǎng)度
//返回:無(wú)
//**************************************************************************
void centSetWorkState( unsigned char *Data, int Datalen)
{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性大战xxxxx久久久| 一卡二卡欧美日韩| 久久国内精品自在自线400部| 99精品欧美一区二区蜜桃免费| 中文字幕免费不卡| 成人蜜臀av电影| 国产精品久久久久永久免费观看 | eeuss鲁片一区二区三区| 精品福利在线导航| 狂野欧美性猛交blacked| 欧美日韩精品免费| 日韩国产欧美在线视频| 欧美日韩在线精品一区二区三区激情| 亚洲国产精品一区二区久久| 在线观看免费一区| 偷拍日韩校园综合在线| 精品国产乱码久久久久久夜甘婷婷| 视频一区在线播放| 欧美一区二区三区在线电影| 国产一区二区剧情av在线| 精品久久久久99| 国产一区二区三区美女| 国产精品高清亚洲| 91精品福利在线| 三级精品在线观看| 中文字幕乱码一区二区免费| 91美女片黄在线| 亚洲第一主播视频| 久久久久国产成人精品亚洲午夜| 粉嫩13p一区二区三区| 亚洲色图视频网| 欧美电视剧在线看免费| 国产一区二区在线观看免费| 国产精品久久久久一区二区三区 | 一区二区三区国产精华| 欧美日本国产一区| 狠狠色丁香久久婷婷综合_中| 国产精品不卡一区二区三区| 在线观看三级视频欧美| 日本中文在线一区| 亚洲视频狠狠干| 欧美精品18+| 国产精品一二三| 日韩精品一二三区| 国产亲近乱来精品视频| 欧美色男人天堂| a级高清视频欧美日韩| 水野朝阳av一区二区三区| 国产欧美日韩亚州综合| 欧美一区二区大片| 99久久精品情趣| 强制捆绑调教一区二区| 一区二区日韩电影| 亚洲精品一线二线三线无人区| 色综合天天综合给合国产| 国产一区二区成人久久免费影院| 亚洲欧美另类小说| 日韩精品自拍偷拍| 欧美日韩你懂得| 波多野结衣中文字幕一区| 一区二区三区四区亚洲| 久久久国产精品麻豆| 欧美三级视频在线播放| voyeur盗摄精品| 日韩黄色一级片| 一区二区高清在线| 久久久国产一区二区三区四区小说| 在线观看不卡一区| 91麻豆免费看| 国产中文一区二区三区| 日韩中文字幕区一区有砖一区| 国产精品你懂的| 国产女人18毛片水真多成人如厕 | 在线免费观看成人短视频| 精品在线免费视频| 日日夜夜一区二区| 一区二区三区鲁丝不卡| 亚洲综合成人在线| 一区二区三区日韩在线观看| 国产精品情趣视频| 中文字幕欧美一| 日本一区二区电影| 2021国产精品久久精品| 久久天天做天天爱综合色| 日韩一级免费观看| 欧美色网一区二区| 8x8x8国产精品| 欧美美女一区二区| 91精品国产综合久久精品图片| 欧美亚洲国产一区在线观看网站| 丁香天五香天堂综合| 99国产精品久久久| 99久久精品国产网站| 日韩成人一区二区三区在线观看| 五月天久久比比资源色| 亚洲一二三专区| 琪琪一区二区三区| 日韩国产欧美在线观看| 精品制服美女丁香| 国产乱色国产精品免费视频| 日韩av一级片| 久久av资源站| 国产精品一卡二卡| 一本久久综合亚洲鲁鲁五月天| 色综合天天综合网国产成人综合天 | 亚洲欧美国产毛片在线| 亚洲摸摸操操av| 亚洲高清中文字幕| 麻豆国产一区二区| 国产成人自拍网| jlzzjlzz欧美大全| 欧美久久久久免费| 日韩一区二区三区视频在线 | 在线国产亚洲欧美| 91精品久久久久久久久99蜜臂| 日韩一区二区电影网| 国产精品剧情在线亚洲| 亚洲一区二区在线观看视频 | 亚洲激情六月丁香| 亚洲电影中文字幕在线观看| 国产在线精品一区二区夜色| 成人三级伦理片| 欧美影视一区在线| 国产欧美日韩麻豆91| 亚洲一本大道在线| 精品一区二区三区免费播放| 色婷婷综合久色| 欧美日韩色一区| 精品国产乱码久久久久久1区2区| 中文字幕亚洲在| 午夜精品福利一区二区三区av| 狠狠狠色丁香婷婷综合激情 | 亚洲一区在线看| 国产成人免费视频网站高清观看视频| 91在线码无精品| 日韩午夜精品电影| 亚洲嫩草精品久久| 精品一区二区三区香蕉蜜桃| 在线观看国产精品网站| 久久久.com| 亚洲成人你懂的| 一道本成人在线| 久久一区二区三区四区| 午夜国产不卡在线观看视频| 激情久久久久久久久久久久久久久久| av资源网一区| 精品成人佐山爱一区二区| 亚洲欧美日韩中文播放| 精品一区二区久久| 欧美主播一区二区三区| 美脚の诱脚舐め脚责91 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 91在线视频播放| 国产午夜亚洲精品理论片色戒| 亚洲欧美一区二区三区久本道91| 亚洲6080在线| 91色porny蝌蚪| 久久精品日韩一区二区三区| 肉肉av福利一精品导航| 在线一区二区视频| 国产精品国产三级国产aⅴ原创 | 亚洲欧洲www| 国产一二精品视频| 久久综合色综合88| 青青国产91久久久久久| 色综合久久久久综合体桃花网| 国产精品福利一区| 国产一区啦啦啦在线观看| 欧美性生活大片视频| 亚洲综合区在线| 91在线视频网址| 中文字幕亚洲一区二区av在线| 成人性生交大片| 久久久久国产精品麻豆ai换脸 | 91蝌蚪国产九色| 欧美激情综合在线| 天天综合网天天综合色| 91.com在线观看| 日韩va欧美va亚洲va久久| 欧美一区日韩一区| 日韩电影在线免费观看| 欧美日韩高清影院| 免费观看在线综合色| 9191精品国产综合久久久久久| 亚洲五月六月丁香激情| 欧美浪妇xxxx高跟鞋交| 一个色在线综合| 99re热这里只有精品视频| 亚洲天堂免费在线观看视频| 成人晚上爱看视频| 久久在线观看免费| av成人动漫在线观看| 国产精品久久久久久久久搜平片 | a在线欧美一区| 亚洲高清中文字幕| 精品精品国产高清一毛片一天堂| 国产一区视频导航| 一区二区三区精品| 欧美精品一区二区三区一线天视频| 国产麻豆91精品|