⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lss

📁 用来pdu编解码
💻 LSS
📖 第 1 页 / 共 5 页
字号:
	SysState.fSendCarStateMsg.flag = 1;	
     14e:	81 e0       	ldi	r24, 0x01	; 1
     150:	80 93 60 09 	sts	0x0960, r24
     154:	08 95       	ret

00000156 <centGetWorkPara>:

}
//**************************************************************************
//函数:centGetWorkPara
//功能: 中心读取工作参数
//输入:Data=Data部分,Datalen=Data长度
//返回:无
//**************************************************************************
void centGetWorkPara( unsigned char *Data, int Datalen)
{
	
	//发送一次工作参数
	SysState.fSendSetPataMsg = 1;	
     156:	81 e0       	ldi	r24, 0x01	; 1
     158:	80 93 70 09 	sts	0x0970, r24
     15c:	08 95       	ret

0000015e <centGetWorkState>:

}
//**************************************************************************
//函数: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;		
     15e:	81 e0       	ldi	r24, 0x01	; 1
     160:	80 93 71 09 	sts	0x0971, r24
     164:	08 95       	ret

00000166 <centSetWorkState>:
}
//**************************************************************************
//函数:centSetWorkState
//功能: 中心设定工作状态
//输入:Data=DATA部分,Datalen=Data长度
//返回:无
//**************************************************************************
void centSetWorkState( unsigned char *Data, int Datalen)
{
     166:	fc 01       	movw	r30, r24
	//设置当前工作状态
	SysState.CarWorkState = Data[0];
     168:	80 81       	ld	r24, Z
     16a:	80 93 06 0a 	sts	0x0A06, r24
	
	switch (SysState.CarWorkState)
     16e:	99 27       	eor	r25, r25
     170:	81 30       	cpi	r24, 0x01	; 1
     172:	91 05       	cpc	r25, r1
     174:	19 f0       	breq	.+6      	; 0x17c <centSetWorkState+0x16>
     176:	02 97       	sbiw	r24, 0x02	; 2
     178:	79 f0       	breq	.+30     	; 0x198 <centSetWorkState+0x32>
     17a:	11 c0       	rjmp	.+34     	; 0x19e <centSetWorkState+0x38>
	{
		case WS_PT_CLASS_1_LOCK:
			SysState.fClass1Loack.RemainTime = WorkPara.sClass1LockDelay_m;
     17c:	80 91 1a 07 	lds	r24, 0x071A
     180:	90 91 1b 07 	lds	r25, 0x071B
     184:	90 93 6a 09 	sts	0x096A, r25
     188:	80 93 69 09 	sts	0x0969, r24
			SysState.fClass1Loack.flag = 0;
     18c:	10 92 68 09 	sts	0x0968, r1
			SysState.fClass1Loack.TimeEnabled = 1;
     190:	81 e0       	ldi	r24, 0x01	; 1
     192:	80 93 6b 09 	sts	0x096B, r24
			break;
     196:	03 c0       	rjmp	.+6      	; 0x19e <centSetWorkState+0x38>
		case WS_PT_CLASS_2_LOCK:
			SysState.fClass2Loack.flag = 1;
     198:	81 e0       	ldi	r24, 0x01	; 1
     19a:	80 93 6c 09 	sts	0x096C, r24
			break;				
	}
		
	//返回车辆状态消息
	SysState.fSendWorkState = 1;			
     19e:	81 e0       	ldi	r24, 0x01	; 1
     1a0:	80 93 71 09 	sts	0x0971, r24
     1a4:	08 95       	ret

000001a6 <centLoginConfirm>:
     1a6:	fc 01       	movw	r30, r24
     1a8:	e0 81       	ld	r30, Z
     1aa:	ee 23       	and	r30, r30
     1ac:	39 f4       	brne	.+14     	; 0x1bc <centLoginConfirm+0x16>
     1ae:	81 e0       	ldi	r24, 0x01	; 1
     1b0:	80 93 72 09 	sts	0x0972, r24
     1b4:	e0 93 5f 09 	sts	0x095F, r30
     1b8:	e0 93 5c 09 	sts	0x095C, r30
     1bc:	08 95       	ret

000001be <FindeCharInStr>:
}

//**************************************************************************
//函数:tmLoginMsg
//功能: 生成终端注册消息
//输出:Msg=消息,Msgtype=消息类型
//返回:0=消息无效,>0=消息长度
//**************************************************************************
int tmLoginMsg( unsigned char *Msg)
{
	unsigned char *pMsg = Msg;
	sprintf(pMsg , BasicPara.TM_Time);//生产日期
	
	pMsg +=TM_TIMELENGTH;

	sprintf(pMsg , BasicPara.TM_type);//型号
	pMsg +=TM_TYPELENGTH;

	sprintf(pMsg , BasicPara.TM_id);//编号
	pMsg +=TM_IDLENGTH;

	return (abs(Msg - pMsg));			
}
//**************************************************************************
//函数:tmCarStateMsg
//功能: 生成车辆状态消息
//输出:Msg=消息
//返回:0=消息无效,>0=消息长度
//**************************************************************************
int tmCarStateMsg( unsigned char *Msg)
{
	int len;
	unsigned char *pMsg = Msg;
	
	*pMsg++ = CS_PT_SENSOR;

	for(len=0; len < SENSORSNUM; len++)
	{
		*pMsg++ = SysState.SensorsValue[len] / 256;
		*pMsg++ = SysState.SensorsValue[len] % 256;		
	}

	
	*pMsg++ = CS_PT_CARSTATE;
	*pMsg++ = SysState.SwitchState[0];
	*pMsg++ = SysState.SwitchState[1];
	
	*pMsg++ = CS_PT_GPS;
	sprintf((char*)pMsg, SysState.gpsInfo);//gps信息
	pMsg +=strlen(SysState.gpsInfo);
	return  (abs(Msg - pMsg));				
}
//**************************************************************************
//函数:tmCarStateMsg
//功能: 生成工作参数查询/设置响应消息
//输出:Msg=消息,Msgtype=消息类型
//返回:0=消息无效,>0=消息长度
//**************************************************************************
int tmGetWorkParaMsg( unsigned char *Msg)
{
	int kk;
	unsigned char *pMsg = Msg;
		
	*pMsg++ = WP_PT_COMTYPE;
	*pMsg++ = BasicPara.ComuMode;//通信模式	

	//中心gsm号码
	*pMsg++ = WP_PT_CENTNUM;
	sprintf( pMsg, BasicPara.CenterGsmNum );
	pMsg += CENTERNUMLEN;

	//中心IP和port
	*pMsg++ = WP_PT_CENTIP;
	*pMsg++ = BasicPara.CenterIP[0][0];
	*pMsg++ = BasicPara.CenterIP[0][1];
	*pMsg++ = BasicPara.CenterIP[0][2];
	*pMsg++ = BasicPara.CenterIP[0][3];	
	*pMsg++ = BasicPara.CenterPort[0]/ 256;
	*pMsg++ = BasicPara.CenterPort[0]% 256;	
	
	//终端注册消息发送间隔时间
	*pMsg++ = WP_PT_MSGPERIOD;
	*pMsg++ = WorkPara.sLoginMsgPeriod / 256;
	*pMsg++ = WorkPara.sLoginMsgPeriod % 256;
	
	//终端报警消息发送间隔时间
	*pMsg++ = WP_PT_WARNPERIOD;
	*pMsg++ = WorkPara.sWarnMsgPeriod / 256;
	*pMsg++ = WorkPara.sWarnMsgPeriod % 256;

	//16路传感器报警门限
	*pMsg++ = WP_PT_SENSORSBOUND;
	for(kk=0; kk < SENSORSNUM; kk++)
	{
		*pMsg++ = WorkPara.SensorsBound[kk] / 256;
		*pMsg++ = WorkPara.SensorsBound[kk] % 256;		
	}
	
	//传感器报警使能
	*pMsg++ = WP_PT_SENSORWARNEN;
	*pMsg++ = WorkPara.SensorsWarnEnabled[0];
	*pMsg++ = WorkPara.SensorsWarnEnabled[1];
	
	//开关量正常状态
	*pMsg++ = WP_PT_WAITCHSTATE;
	*pMsg++ = WorkPara.SwitchNomalState[0];
	*pMsg++ = WorkPara.SwitchNomalState[1];
	
	//开关量报警使能
	*pMsg++ = WP_PT_WAITCHWARNEN;
	*pMsg++ = WorkPara.SwitchWarnEnable[0];
	*pMsg++ = WorkPara.SwitchWarnEnable[1];
	
	//活动范围
	//......		
	
	return (abs(Msg - pMsg));	
}
//**************************************************************************
//函数:tmCarStateMsg
//功能: 生成工作状态查询/设置响应消息
//输出:Msg=消息,Msgtype=消息类型
//返回:0=消息无效,>0=消息长度
//**************************************************************************
int tmGetWorkStateMsg( unsigned char *Msg)
{
	*Msg = SysState.CarWorkState;
	
	return 1;		
}
//**************************************************************************
//函数:tmCreateMsg
//功能: 生成消息/指示
//输入:主功能码和子功能码
//输出:消息
//返回:0=消息无效,>0=消息长度

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -