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

📄 klinecomm.c

📁 基于16位单片机的符合osek标准的操作系统
💻 C
📖 第 1 页 / 共 4 页
字号:
  		
		G_uc8ResponseMessage[0]=0x82;
		G_uc8ResponseMessage[3]=0x7b;
    	G_uc8ResponseMessage[4]=G_WriteDataPID;
    	G_un16ResponseMLength=6;
    	G_uc8ResponseMessage[5]=CheckSum();
		bWriteDataByLIdFlag=0;
		G_bSendReady=1;
	}
	if(bWriteMemoryByAFlag)   //Write Memory By Address service
	{
		unsigned char page0;
		unsigned char *addr;
		unsigned int addrvalue;
		page0=PPAGE;
    	addrvalue=(G_uc8MemoryAddressM*256)+G_uc8MemoryAddressL;//calculate the value of address 
    	addr=(unsigned char*)addrvalue;
		PPAGE=G_uc8MemoryAddressH;
 		for(i=0;i<G_uc8MemorySize;i++)
		{
			addr[i]=G_uc8Receivedata[G_SIDLocation+5+i];
		}
		PPAGE=page0;
 		G_uc8ResponseMessage[0]=0x84;
		G_uc8ResponseMessage[3]=0x7d;
    	G_uc8ResponseMessage[4]=G_uc8MemoryAddressH;
    	G_uc8ResponseMessage[5]=G_uc8MemoryAddressM;
		G_uc8ResponseMessage[6]=G_uc8MemoryAddressL;
    	G_un16ResponseMLength=8;
    	G_uc8ResponseMessage[7]=CheckSum();
		bWriteMemoryByAFlag=0;
		G_bSendReady=1;
	}
	if(bStartRoutineByAFlag)   //Write Data By Local Identifier service
	{
		unsigned char page0;
		unsigned char *addr;
		unsigned int addrvalue;
		unsigned long addrvalue0;
		unsigned int memorysize;
		page0=PPAGE;
		addrvalue=(G_uc8MemoryAddressM*256)+G_uc8MemoryAddressL;//calculate the value of address 
		addr=(unsigned char*)addrvalue;
		memorysize=G_uc8Receivedata[G_SIDLocation+4]*256+G_uc8Receivedata[G_SIDLocation+5];
		addrvalue0=G_uc8MemoryAddressH*0x10000+addrvalue;
		PPAGE=G_uc8MemoryAddressH;//
		for(i=0;i<memorysize;i++)
		{	
			MAPData[i]=addr[i];
		}
		PPAGE=page0;
		switch(addrvalue0)
		{
			case 0x348040:
				CalibrateTable=0x01;//bCalInjWidth_Table=1;
				break;
			case 0x348202:
				CalibrateTable=0x02;//bCalStartInjWidth_Table=1;
				break;
			case 0x3483C4:
				CalibrateTable=0x04;//bCalInjAdv_Table=1;
				break;
	//		case 0x3483A6:
	//			CalibrateTable=0x08;//bCalibrateInjAdvAngle_MAP=1;
	//			break;
			default:
				break;
		}/**/
		
		G_uc8ResponseMessage[0]=0x84;
		G_uc8ResponseMessage[3]=0x78;
    	G_uc8ResponseMessage[4]=G_uc8MemoryAddressH;
    	G_uc8ResponseMessage[5]=G_uc8MemoryAddressM;
		G_uc8ResponseMessage[6]=G_uc8MemoryAddressL;
    	G_un16ResponseMLength=8;
    	G_uc8ResponseMessage[7]=CheckSum();
		bStartRoutineByAFlag=0;
		G_bSendReady=1;
		
	}/**/
	if(bNotSurpport)  //Not support the request message
	{
		G_uc8ResponseMessage[0]=0x83;
		G_uc8ResponseMessage[3]=0x7f;
		G_uc8ResponseMessage[4]=G_ServiceID;
		G_uc8ResponseMessage[5]=0x11;
		G_un16ResponseMLength=7;
		G_uc8ResponseMessage[6]=CheckSum();
		bNotSurpport=0;
		G_bSendReady=1;
	}
	if (bResponsePending)			//Negative Response code=0x78
	{											//requestCorrectlyReceived-ResponsePending
		G_uc8ResponseMessage[0]=0x83;
		G_uc8ResponseMessage[3]=0x7f;
		G_uc8ResponseMessage[4]=G_ServiceID;
		G_uc8ResponseMessage[5]=0x78;
		G_un16ResponseMLength=7;
		G_uc8ResponseMessage[6]=CheckSum();
	}
}


/******************************************************************************
Function Name	:	KlineCommunication
Engineer		:	
Date			:	03/28/2005

Arguments		:	none
                  
Return			:	none

Notes			:	This function  gives values to array of ReadDTCResponseMessage
					according to protocol 14230-3.
******************************************************************************/


void KlineCommunication(void)
{
	if(G_bSendEnble||bResponsePending)
  	{
	  	if(G_un16SendNum<G_un16ResponseMLength)
		{
			
			KLineSend(G_uc8ResponseMessage[G_un16SendNum]);
			G_un16SendNum++;
		}
		else
		{
			G_un16SendNum=0;
			G_un16ResponseMLength=0;
			G_bSendEnble=0;
			bResponsePending=0;
			SCI1CR2=0x2c;
		}	

  	}

}









void ConfigCalibratedPara(void)
{
	switch(G_WriteDataPID)
	{
	
		//unsigned int 型数据的读取与修改
		case 0x01:
			KLineWData81_1=un16RecordValue;//un16TempWrite0 un16HighSwDelay
			break;
		case 0x02:                     
			KLineWData81_2=un16RecordValue;//un16TempWrite1
			break;
		case 0x03:
			KLineWData81_3=un16RecordValue;//un16TempWrite2
			break;
		case 0x04:
			KLineWData81_4=un16RecordValue;//un16TempWrite3
			break;
		case 0x05:
			KLineWData81_5=un16RecordValue;//un16TempWrite4
			break;
		case 0x06:
			KLineWData81_6=un16RecordValue;//un16TempWrite5
			break;
		case 0x07:					
			KLineWData81_7=un16RecordValue;//un16TempWrite6
			break;
		case 0x08:
			KLineWData81_8=un16RecordValue;//un16TempWrite7
			break;
			//int 型数据的修改
		case 9:
			KLineWData82_1=un16RecordValue;//n16TempWrite0
			break;
		case 10:
			KLineWData82_2=un16RecordValue;//n16TempWrite1
			break;
		case 11:
			KLineWData82_3=un16RecordValue;//n16TempWrite2
			break;
		case 12:
			KLineWData82_4=un16RecordValue;//n16TempWrite3
			break;
		case 13:
			KLineWData82_5=un16RecordValue;//n16TempWrite0
			break;
		case 14:
			KLineWData82_6=un16RecordValue;//n16TempWrite1
			break;
		case 15:
			KLineWData82_7=un16RecordValue;//n16TempWrite2
			break;
		case 16:
			KLineWData82_8=un16RecordValue;//n16TempWrite3
			break;
		//unsigned char 型数据修改
		case 17:
			KLineWData83_1=(unsigned char)un16RecordValue;//un8TempWrite0
			break;
		case 18:
			KLineWData83_2=(unsigned char)un16RecordValue;//un8TempWrite1
			break;
		case 19:                     
			KLineWData83_3=(unsigned char)un16RecordValue;//un8TempWrite2
			break;
		case 20:
			KLineWData83_4=(unsigned char)un16RecordValue;//un8TempWrite3
			break;
		case 21:
			KLineWData83_5=(unsigned char)un16RecordValue;//un8TempWrite4
			break;
		case 22:
			KLineWData83_6=(unsigned char)un16RecordValue;//un8TempWrite5
			break;
		case 23:
			KLineWData83_7=(unsigned char)un16RecordValue;//un8TempWrite6
			break;
		case 24:					
			KLineWData83_8=(unsigned char)un16RecordValue;//un8TempWrite7
			break;
			//char 型数据的修改
		case 25:
			KLineWData84_1=un16RecordValue;//n16TempWrite0
			break;
		case 26:
			KLineWData84_2=un16RecordValue;//n16TempWrite1
			break;
		case 27:
			KLineWData84_3=un16RecordValue;//n16TempWrite2
			break;
		case 28:
			KLineWData84_4=un16RecordValue;//n16TempWrite3
			break;
		case 29:
			KLineWData84_5=un16RecordValue;//n16TempWrite0
			break;
		case 30:
			KLineWData84_6=un16RecordValue;//n16TempWrite1
			break;
		case 31:
			KLineWData84_7=un16RecordValue;//n16TempWrite2
			break;
		case 32:
			KLineWData84_8=un16RecordValue;//n16TempWrite3
			break;
	
		//float 型数据的修改
		case 33:
			KLineWData85_1=floRecordValue;//floatTempWrite0
			break;
		case 34:
			KLineWData85_2=floRecordValue;//floatTempWrite1
			break;
		case 35:
			KLineWData85_3=floRecordValue;//floatTempWrite2
			break;
		case 36:
			KLineWData85_4=floRecordValue;//floatTempWrite3
			break;/**/
		case 37:
			KLineWData85_5=floRecordValue;//floatTempWrite4
			break;
		case 38:
			KLineWData85_6=floRecordValue;//floatTempWrite5
			break;
		case 39:
			KLineWData85_7=floRecordValue;//floatTempWrite6
			break;
		case 40:
			KLineWData85_8=floRecordValue;//floatTempWrite7
			break;/**/
		default:
			bSubFunNotSup=1;
			G_uc8ResponseMessage[0]=0x83;
			G_uc8ResponseMessage[3]=0x7f;
			G_uc8ResponseMessage[4]=0x7b;
			G_uc8ResponseMessage[5]=0x12;
			G_un16ResponseMLength=7;
			G_uc8ResponseMessage[6]=CheckSum();
			break;		
	

	}


}






















⌨️ 快捷键说明

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