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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? protocol.c.bak

?? 用來pdu編解碼
?? BAK
?? 第 1 頁 / 共 3 頁
字號:
/**************************************************************************
文件名: protocol.c
功能  : 終端和中心通信協議

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		調試通過
				cwntSetWorkState	調試通過
				centLoginConfirm	調試通過
				centGetWorkState	調試通過
				centGetWorkPara		調試通過
				centGetCarState		調試通過
				
				
				tmLoginMsg			調試通過
				tmGetWorkStateMsg	調試通過
				tmGetWorkParaMsg    調試通過
				tmCarStateMsg       調試通過
				
				tmEventProcess      調試通過
**************************************************************************/

#include "protocol.h"


//**************************************************************************
//函數:FrameCheck
//功能: 校驗命令幀的有效性
//輸入:Cmmd=中心命令,Commdlen=中心命令長度
//返回:幀的有效性,
//0=有效,1=基本長度錯誤
//2=幀頭錯誤,3=幀長錯誤
//4=校驗和錯誤
//**************************************************************************
//#define TEST

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

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

	if (strstr(Commd, F_HEAD_STR) ==0)return 2;
			
	//幀長度
//	if (!(Commd[F_LENGTH_BEGIN] == Commdlen))return 3;	
		
	//校驗和
	
	//幀有效
	return 0;
} 
//**************************************************************************
//函數:FrameDeal
//功能: 解析中心命令并進行相應的處理
//輸入:Cmmd=中心命令,Commdlen=中心命令長度
//返回:無
//**************************************************************************
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無效的中心命令\n");
		return;
	}		
	
	switch (result)	
	{
		case 0:	Myprintf("\n中心命令正確\n");break;
		case 1:	Myprintf("\n中心命令基本長度錯誤\n");return;
		case 2:	Myprintf("\n中心命令幀頭錯誤\n");return;
		case 3:	Myprintf("\n中心命令幀長錯誤\n");return;
		case 4:	Myprintf("\n中心命令校驗和錯誤\n");return;		
	}	

	//根據幀類型進行相應的處理	
	switch ((int)Commd[F_TYPE_BEGIN])	
	{
			case F_TYPE_COMMD:
						switch (Commd[F_CODE_BEGIN]) 
						{
							case F_CODE_LOGIN: 
								//中心要求重新注冊
								//設置注冊狀態為0,重新注冊
								SysState.Logined = 0;
								Myprintf("中心要求重新注冊");
								centNoteTmlogin(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);
								break;
							
							case F_CODE_CARSTATE:
								//中心請求車輛狀態
								Myprintf("中心請求車輛狀態");
								centGetCarState(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
								break;
							
							case F_CODE_GETWORKPARA:
								Myprintf("中心請求工作參數");
								centGetWorkPara(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
							break;
						
							case F_CODE_SETWORKPARA:
								Myprintf("中心設置工作參數");
								centSetWorkPara(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
								break;
							case F_CODE_GETWORKSTATE:
								Myprintf("中心請求工作狀態");
								centGetWorkState(Commd +F_DATA_BEGIN, Commdlen - F_BASIC_LENGTH);	
								break;
							case F_CODE_SETWORKSTATE:
								Myprintf("中心設置工作狀態");
								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中心確認登錄\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
	}
}
//**************************************************************************
//函數:LoginConfirm
//功能: 中心對終端注冊確認/否認幀
//輸入:Data=DATA部分,Datalen=Data長度
//返回:無
//
//
//**************************************************************************
void centLoginConfirm( unsigned char *Data , int Datalen)
{
	if (Data[0] == LP_DATA_SEGMENT_PMT)
	{
		//合法/允許
		//停止計時,進入工作狀態	
		SysState.Logined = 1;	
		SysState.fSendLoginMsg.TimeEnabled = 0;
		SysState.fSendLoginMsg.flag = 0;	
	}	
}
//**************************************************************************
//函數:centNoteTmlogin
//功能: 中心要求終端重新注冊
//輸入:Data=DATA部分,Datalen=Data長度
//返回:無
//
//
//**************************************************************************
void centNoteTmlogin( unsigned char *Data , int Datalen)
{
	SysState.fSendLoginMsg.flag = 1;	
	SysState.Logined = 0;	
}
//**************************************************************************
//函數:centGetCarState
//功能: 中心讀取車輛狀態
//輸入:Data=DATA部分,Datalen=Data長度
//返回:無
//**************************************************************************
void centGetCarState( unsigned char *Data, int Datalen)
{
	
	//發送一次車輛狀態
	SysState.fSendCarStateMsg.flag = 1;	

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

}
//**************************************************************************
//函數:centSetWorkPara
//功能: 中心設定工作狀態
//輸入:Data=DATA部分,Datalen=Data長度
//返回:無
//**************************************************************************
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號碼
					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://終端消息發送間隔時間
					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://終端報警消息發送間隔時間
					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路傳感器報警門限
					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://報警使能
					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:
					//開關量正常狀態值
					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:
					//開關量報警使能
					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:
					//活動范圍
					//左上角緯度
					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;	
					//左上角經度
					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;	
					//右下角經度
					//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;			
									
		}	
		
	}	
	//終端回應,發送參數設定消息
	SysState.fSendSetPataMsg = 1;

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久综合99久久综合网站| 欧美这里有精品| 亚洲精品中文在线| 精品国产乱码久久| 欧美主播一区二区三区| 国产成人免费视频| 香蕉影视欧美成人| 自拍av一区二区三区| 久久综合色播五月| 欧美日韩一区小说| aaa亚洲精品一二三区| 国产乱码精品一区二区三区av| 亚洲午夜电影在线| 1024国产精品| 欧美国产日韩在线观看| 日韩欧美国产综合| 欧美精品丝袜久久久中文字幕| 一本大道久久a久久综合婷婷| 国产sm精品调教视频网站| 久久99精品国产麻豆不卡| 午夜精品福利视频网站| 一区二区三区精品视频在线| 中文字幕在线不卡一区| 久久麻豆一区二区| 精品噜噜噜噜久久久久久久久试看| 欧美日韩亚洲另类| 91精彩视频在线观看| 91在线精品一区二区| 成人在线视频一区二区| 国产精品456| 国产综合色在线| 精品一区二区久久| 狠狠色狠狠色合久久伊人| 久久99精品国产麻豆婷婷 | 中文字幕精品一区二区三区精品| 欧美一区二区免费| 欧美一级专区免费大片| 日韩一区二区不卡| 日韩美女一区二区三区四区| 欧美电影免费观看高清完整版在线| 欧美一区二区三区日韩| 日韩一区二区在线观看| 精品久久久久久久久久久院品网 | 中文字幕一区二区在线观看| 国产欧美精品在线观看| 欧美国产激情一区二区三区蜜月| 欧美激情一二三区| 中文字幕在线不卡视频| 依依成人综合视频| 亚洲成人高清在线| 蜜桃在线一区二区三区| 国产一区视频网站| 成人激情开心网| 91美女视频网站| 欧美三级一区二区| 日韩一二在线观看| 久久综合九色综合欧美亚洲| 中文字幕精品三区| 亚洲精品成人少妇| 亚洲国产三级在线| 久久99国产精品免费| 懂色一区二区三区免费观看| 91在线视频官网| 91精品国产91久久综合桃花| 久久在线观看免费| 国产精品久久久久久亚洲毛片| 亚洲综合久久久久| 亚洲成人免费影院| 国产一区二区不卡在线| 91影视在线播放| 欧美夫妻性生活| 中文字幕乱码久久午夜不卡| 亚洲小说欧美激情另类| 激情综合网最新| 97久久超碰国产精品| 91精选在线观看| 国产精品妹子av| 轻轻草成人在线| 波多野结衣中文字幕一区| 欧美情侣在线播放| 国产女人水真多18毛片18精品视频 | 午夜婷婷国产麻豆精品| 国产一区二区三区av电影| 一本色道久久综合狠狠躁的推荐 | 亚洲成人av免费| 国产精品亚洲午夜一区二区三区 | 欧美性色aⅴ视频一区日韩精品| 日韩视频不卡中文| 亚洲婷婷国产精品电影人久久| 图片区小说区国产精品视频| 国产99一区视频免费| 欧美精品一二三| 日韩毛片一二三区| 九九久久精品视频| 欧日韩精品视频| 国产免费成人在线视频| 日韩精品一二三| 91在线丨porny丨国产| 久久影音资源网| 午夜精品久久久| 色婷婷激情一区二区三区| 久久久欧美精品sm网站| 亚洲动漫第一页| 成人h动漫精品一区二| 精品国产一区二区精华| 丝袜美腿一区二区三区| 91网站最新网址| 久久久九九九九| 精品一区精品二区高清| 欧美久久久久久久久久| 一区二区三区中文免费| av资源网一区| 久久新电视剧免费观看| 奇米精品一区二区三区四区| 91精品91久久久中77777| 自拍视频在线观看一区二区| 国产69精品一区二区亚洲孕妇| 精品国产凹凸成av人导航| 视频在线在亚洲| 欧美三级一区二区| 亚洲福中文字幕伊人影院| 91视频观看视频| 国产精品久久影院| 国产不卡视频一区| 国产午夜亚洲精品不卡| 国产一区不卡视频| 久久精品夜色噜噜亚洲aⅴ| 精品一区免费av| 欧美精品一区二区三区高清aⅴ| 免费观看日韩av| 日韩一级成人av| 久久精品999| 精品国产凹凸成av人导航| 免费xxxx性欧美18vr| 日韩欧美国产精品| 狠狠v欧美v日韩v亚洲ⅴ| 精品国产乱码久久| 国产成人在线网站| 亚洲国产精品成人久久综合一区| 高清免费成人av| 国产精品亲子乱子伦xxxx裸| 99精品视频在线观看| 亚洲欧美日韩一区| 欧美系列在线观看| 日韩国产欧美在线视频| 日韩精品一区二区三区中文不卡| 美女脱光内衣内裤视频久久网站 | 色综合久久久久久久| 一区二区三区四区在线| 91成人免费在线视频| 天天操天天综合网| 欧美成人免费网站| 国产成人免费视频网站高清观看视频| 国产精品日日摸夜夜摸av| 91丨九色丨蝌蚪富婆spa| 亚洲国产日韩综合久久精品| 欧美一级理论片| 国产不卡在线一区| 亚洲最大成人网4388xx| 7777精品伊人久久久大香线蕉经典版下载 | 欧美一卡二卡在线| 国产成人亚洲综合a∨婷婷| 日韩一区欧美一区| 7777女厕盗摄久久久| 国产乱码精品一区二区三区av | 亚洲国产精品ⅴa在线观看| av亚洲精华国产精华精华| 亚洲激情男女视频| 欧美一级一区二区| 国产91丝袜在线播放九色| 樱花影视一区二区| 精品国精品自拍自在线| 99精品视频免费在线观看| 亚洲va欧美va人人爽午夜| 精品91自产拍在线观看一区| 97久久精品人人爽人人爽蜜臀| 秋霞电影一区二区| 国产精品妹子av| 日韩久久免费av| 日本精品一区二区三区高清| 精品一区二区三区在线观看国产 | 精品一区二区三区视频在线观看| 国产日韩欧美高清| 欧美少妇xxx| 国产69精品久久久久777| 亚洲成a人v欧美综合天堂| 中国av一区二区三区| 在线成人免费观看| av不卡免费电影| 国产一区视频在线看| 亚洲成a人v欧美综合天堂| 国产精品久久久久久户外露出| 91精品国产免费| 在线观看日韩高清av| 国产原创一区二区三区| 手机精品视频在线观看| 亚洲精品美腿丝袜| 国产午夜精品久久久久久免费视 | 久久五月婷婷丁香社区| 欧美三级电影网|