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

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

?? protocol.c

?? 用來pdu編解碼
?? C
?? 第 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一区二区三区免费野_久草精品视频
国产成人精品网址| 日韩一区二区中文字幕| 成年人午夜久久久| 日韩电影免费在线看| 亚洲mv在线观看| 免费三级欧美电影| 国产精品一区二区三区网站| 六月婷婷色综合| 成人免费黄色大片| 欧美私人免费视频| 精品三级在线看| 中文字幕中文字幕一区| 午夜精品久久久久久久久| 日韩有码一区二区三区| 国产mv日韩mv欧美| 欧美无砖专区一中文字| 亚洲精品在线免费播放| 亚洲欧美日韩电影| 黄色日韩网站视频| 99riav一区二区三区| 日韩精品一区二区三区swag| 国产精品欧美极品| 久久国产精品一区二区| 99re热视频这里只精品| 日韩欧美卡一卡二| 调教+趴+乳夹+国产+精品| 国产馆精品极品| 8x8x8国产精品| 亚洲人成电影网站色mp4| 美国十次了思思久久精品导航| 国产资源在线一区| 欧美午夜免费电影| 日韩伦理av电影| 国产精品亚洲专一区二区三区 | 美日韩黄色大片| 色吊一区二区三区| 樱花影视一区二区| 99麻豆久久久国产精品免费优播| 日韩精品一区在线| 日韩成人一区二区三区在线观看| 99国产欧美另类久久久精品| 久久久久综合网| 国产精品一二三四| 国产精品午夜电影| 成人理论电影网| 中文字幕在线不卡| 欧美在线视频你懂得| 午夜视频一区在线观看| 欧美精品少妇一区二区三区| 亚洲欧美综合色| 粉嫩av一区二区三区在线播放| 欧美激情资源网| 色呦呦日韩精品| 日韩激情中文字幕| 国产日韩欧美一区二区三区综合| 国产一区高清在线| 亚洲欧洲色图综合| 91.com视频| 99久久夜色精品国产网站| 亚洲综合久久av| 日韩—二三区免费观看av| 日本在线不卡视频| 日韩一区二区电影| 麻豆精品在线播放| 一卡二卡三卡日韩欧美| 欧美成人乱码一区二区三区| 福利视频网站一区二区三区| 亚洲h在线观看| 国产精品久久久久久户外露出| 在线成人免费视频| 白白色亚洲国产精品| 麻豆免费精品视频| 亚洲超碰97人人做人人爱| 国产精品久久久久久一区二区三区 | 国产三级精品在线| 91精品国产综合久久久久| eeuss鲁片一区二区三区在线观看| 日本亚洲免费观看| 亚洲香肠在线观看| 亚洲美女在线一区| 伊人一区二区三区| 中文字幕一区二区视频| 亚洲国产高清不卡| 中文字幕乱码久久午夜不卡 | 老司机一区二区| 久久精品国产精品亚洲综合| 亚洲图片欧美色图| 天天综合天天综合色| 午夜精品久久久久久久蜜桃app| 亚洲永久免费av| 亚州成人在线电影| 美女在线一区二区| 国产大陆精品国产| 91麻豆国产精品久久| 欧美电影影音先锋| 亚洲国产精品自拍| 久久亚洲二区三区| 国产色产综合产在线视频 | 国内外成人在线| 成人一道本在线| 欧美性视频一区二区三区| 4438成人网| 国产午夜精品久久| 亚洲国产精品嫩草影院| 国产毛片精品视频| 在线视频你懂得一区| 久久亚洲精华国产精华液| 亚洲美女电影在线| 国产精品一区久久久久| 91麻豆免费视频| 国产午夜精品久久久久久久 | 不卡av免费在线观看| 欧美日韩高清在线播放| 国产精品久久综合| 国产一区二区三区在线看麻豆| 色综合久久中文综合久久牛| 久久毛片高清国产| 免费看黄色91| 欧美一级一级性生活免费录像| 中文一区二区完整视频在线观看| 午夜精品国产更新| 91成人在线免费观看| 亚洲欧洲www| 成a人片国产精品| 中文字幕在线一区| 国产精品自拍网站| 日韩欧美国产高清| 久久97超碰色| 亚洲精品一区二区三区蜜桃下载| 亚洲第一在线综合网站| 精品视频1区2区3区| 天天操天天色综合| 欧美精品日韩综合在线| 日精品一区二区| 欧美一级高清片在线观看| 久久国产婷婷国产香蕉| 精品国产麻豆免费人成网站| 久草在线在线精品观看| 久久色.com| www.欧美色图| 一区二区在线观看视频| 欧美三级欧美一级| 久久福利视频一区二区| 久久久精品一品道一区| 色先锋资源久久综合| 视频一区在线播放| 国产人成亚洲第一网站在线播放| 成人综合日日夜夜| 亚洲日本成人在线观看| 在线成人小视频| 91丨porny丨最新| 婷婷丁香激情综合| 国产精品婷婷午夜在线观看| 欧美日韩久久久久久| 蜜桃av一区二区| 亚洲综合丁香婷婷六月香| 欧美精品一区二区久久久| 91免费看视频| 国产高清在线精品| 亚洲国产aⅴ成人精品无吗| 中文字幕高清一区| 日韩午夜激情免费电影| 欧美久久久久久蜜桃| 国产成人免费视频精品含羞草妖精 | 2021国产精品久久精品| 欧美日韩精品三区| 91香蕉视频mp4| 不卡免费追剧大全电视剧网站| 麻豆精品国产传媒mv男同| 午夜精品一区二区三区免费视频| 亚洲精品高清视频在线观看| 国产午夜精品美女毛片视频| 精品人在线二区三区| 欧美一区二区三区免费| 欧美色网站导航| 欧美性大战久久久久久久| 色伊人久久综合中文字幕| 91蝌蚪porny| 91麻豆国产在线观看| 欧美网站大全在线观看| 欧美日韩二区三区| 91精品国产入口| 精品国产露脸精彩对白| 久久新电视剧免费观看| 中文成人av在线| 亚洲精品欧美在线| 蜜臂av日日欢夜夜爽一区| 久久9热精品视频| 成人aaaa免费全部观看| 欧美在线播放高清精品| 欧美成人三级电影在线| 久久久电影一区二区三区| 亚洲人成电影网站色mp4| 免费在线看成人av| 国产白丝网站精品污在线入口| 色婷婷亚洲综合| 日韩欧美国产不卡| 日韩一级精品视频在线观看| 亚洲手机成人高清视频| 亚洲欧美经典视频|