コード例 #1
0
ファイル: RMM_Lib.c プロジェクト: esakellari/myProj
int RMM_DeleteRec(int fileDesc, int recId, int recordSize)
{
	int full, max_records, blockNum, recordNum;
	char *HF_HeadBuf, *blockBuf;


	if (( HF_HeadBuf = malloc(BF_BLOCK_SIZE)) == NULL ) {
		BF_Errno = BFE_NOMEM;
		return (HF_errno = HFE_BFERROR);
	}  
	if (( blockBuf = malloc ( BF_BLOCK_SIZE )) == NULL ) {
		BF_Errno = BFE_NOMEM;
		return (HF_errno = HFE_BFERROR);
	}

	if(BF_GetThisBlock(fileDesc, 0, &HF_HeadBuf) != BFE_OK)		//-> Fernei to HF_HEADER sti mnimi.
		return (HF_errno = HFE_BFERROR);			//

	max_records = BF_BLOCK_SIZE*8 / (recordSize*8 + 1);		//-> Ypologizei to megisto plithos eggrafwn pou
									//   xwraei to kathe block.
	blockNum = recId/max_records + 1;				//-> Vriskei poio einai to block sto opoio vrisketai
									//   i eggrafi pou zitithike na diagrapsei.
	if(BF_GetThisBlock(fileDesc, blockNum, &blockBuf) != BFE_OK)	//-> Fernei stin mnimi to block sto opoio vrisketai
		return (HF_errno = HFE_BFERROR);			//   i eggrafi pou zitithike na diagrapsei.

	recordNum = recId % max_records;				//-> Vriskei ti thesi tis eggrafis mesa sto block.
	if(!isBitActive(blockBuf, BF_BLOCK_SIZE*8-1 -recordNum))	//-> Elegxei ean i eggrafi pou zitithike na diagrafei
	{	if (BF_UnpinBlock(fileDesc, blockNum, 0) != BFE_OK)	//   ontws uparxei mesa sto block.
			return (HF_errno = HFE_BFERROR);
		return (HF_errno = HFE_INVALIDREC);
	}

	resetBit(blockBuf, BF_BLOCK_SIZE*8-1 -recordNum);		//-> "Diagrafei" ti zitoumeni eggrafi sto block,
									//   midenizontas tin thesi tis sto bitmap tou block.
	if(( full = isBitActive(HF_HeadBuf, blockNum-1 )))		//-> Elegxei to HF_HEADER gia na dei ean to block prin
		resetBit(HF_HeadBuf, blockNum-1);			//   tin diagrafi tis eggrafis, itan plirws gemato.
									//   Ean nai, enimerwnei to HF_HEADER gia tin nea
									//   katastasi tou block.
	if(BF_UnpinBlock(fileDesc, blockNum, 1) != BFE_OK)		//-> Kanei unpin to block.
		return (HF_errno = HFE_BFERROR);			//
	if(FullOrEmpty(blockBuf, max_records, BF_BLOCK_SIZE, 0))	//-> Elegxei, ean meta apo tin diagrafi tis eggrafis
		if(BF_DisposeBlock(fileDesc, blockNum) != BFE_OK)	//   pou molis egine, to block den periexei kammia
			return (HF_errno = HFE_BFERROR);		//   eggrafi. Ean nai, kanei dispose to adeio block.

	if(BF_UnpinBlock(fileDesc, 0, full) != BFE_OK)			//-> Kanei unpin to HF_HEADER me dirty iso me 'full',
		return (HF_errno = HFE_BFERROR);			//   i opoia exei timi '0' i '1' analoga me to ean
									//   to block itan prin diagrafei oxi plirws gemato
									//   i plirws gemato, antistoixa.
	return HFE_OK;	
}
コード例 #2
0
ファイル: util.cpp プロジェクト: armsvb/plcduino
unsigned char modBit(unsigned char *by, int bit, int value) {
	if (value) {
		return setBit(by, bit);
	} else {
		return resetBit(by, bit);
	}
}
コード例 #3
0
ファイル: Lcd.cpp プロジェクト: taniho0707/auto-sl-stage
void Lcd::setBits(uint8_t data){
	for(uint8_t i=0; i<8; ++i){
		if((data & (0x1<<i)) == 0)
			resetBit(i);
		else
			setBit(i);
	}
}
コード例 #4
0
ファイル: rkc.c プロジェクト: wft999/25m
int CVICALLBACK rkcThread (void *Data)
{
	rkc.COM  = 3;
	rkc.Baud = 19200;
	rkc.Pari = 0;
	rkc.Dbit = 8;
	rkc.Sbit = 1;
	rkc.Flc  = 0;
	rkc.Tout = 0.050;

	if(RKC_CommData ( Config, 0, NULL) != 0)
	{
		SendPcAlarm(PCA_RKC_BID,1); 
		return 0;	
	}
	
	PTANK * tk[16] = {
		&sys->tk[TANK_AUX_PH1],
		&sys->tk[TANK_AUX_PH2],
		&sys->tk[TANK_02],
		&sys->tk[TANK_03],
		&sys->tk[TANK_04],
		&sys->tk[TANK_06],
		&sys->tk[TANK_07],
		&sys->tk[TANK_09],
		&sys->tk[TANK_10],
		&sys->tk[TANK_12],
		&sys->tk[TANK_13],
		&sys->tk[TANK_14],
		&sys->tk[TANK_15],
		&sys->tk[TANK_AUX_IN],
		&sys->tk[TANK_16],
		&sys->tk[TANK_17]};
	
	int cnt = 0;
	while (g_exitThread == 0){
		Delay(30);
		
		if (g_setupTemp == 1)
		{
			// =====================================================
			// Write Temperature SetPoint
			for(int i = 0; i < 16;i++)
			{
				RKC_CommData(setSP, i+1, &tk[i]->rcp.Temp);	Delay(0.5);
				RKC_CommData(setAL1,i+1, &tk[i]->rcp.TempL);	Delay(0.5);
				RKC_CommData(setAL2,i+1, &tk[i]->rcp.TempH);	Delay(0.5);
				RKC_CommData(setPB,i+1, &tk[i]->rcp.TempP);	Delay(0.5);
			}

					
			g_setupTemp = 0;
		}
		
		cnt++; 
		if(cnt >= 2)
		{
			cnt = 0;
			if(sys->curTempTrendPos >= TREND_DATA_LEN - 1)
				sys->curTempTrendPos = 0;
			else
				sys->curTempTrendPos++;
		}
		
		for(int i = 0; i < 16;i++)
		{
			RKC_CommData ( getTP, i+1, &tk[i]->curTemp);
			if(cnt == 0 && tk[i]->curTemp != 0)
				tk[i]->tempData[sys->curTempTrendPos] = tk[i]->curTemp;
			if(g_exitThread)
				return 0;
		}
		sys->tk[TANK_05].curTemp = sys->tk[TANK_04].curTemp;
		sys->tk[TANK_08].curTemp = sys->tk[TANK_07].curTemp;
		
		if(g_writeTemp2Plc == 0)
			g_writeTemp2Plc = 1;
		
		if(sys->tk[TANK_AUX_PH1].curTemp >= sys->tk[TANK_AUX_PH1].rcp.StartTemp)
			setBit(sys->tk[TANK_AUX_PH1].hsPHStart);
		else if(sys->tk[TANK_AUX_PH1].curTemp < sys->tk[TANK_AUX_PH1].rcp.StopTemp)
			resetBit(sys->tk[TANK_AUX_PH1].hsPHStart);
		
		if(sys->tk[TANK_AUX_PH2].curTemp >= sys->tk[TANK_AUX_PH2].rcp.StartTemp)
			setBit(sys->tk[TANK_AUX_PH2].hsPHStart);
		else if(sys->tk[TANK_AUX_PH2].curTemp < sys->tk[TANK_AUX_PH2].rcp.StopTemp)
			resetBit(sys->tk[TANK_AUX_PH2].hsPHStart);

	}
	
	return 0;
}
コード例 #5
0
ファイル: robot_panel.c プロジェクト: wft999/25m
int CVICALLBACK RobotCommand (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_LEFT_CLICK:
			if(CheckAuth(OP_ROBOT) == 0)
				return 0;
			if (!ButtonConfirm (panel,control))		
				return 0;
			switch(control)
			{
				int stat; 
				case PANEL_RB_CMD_PUT:
					if(testBit(sys->rtk[curRid].hsFill,WB) > 0)
					{
						MessagePopup("操作條件不滿足","桶槽內已經有料,不可置料!");
						break;
					}
					if(testBit(sys->rb[curRobotId].hsFill,WB) == 0)
					{
						MessagePopup("操作條件不滿足","夾爪上無料,不可置料!");
						break;
					}
					setRobotCommand(&sys->rb[curRobotId],curRid,PUT_COMMAND);
					ActionLog(RB_PUT_ACT_EVENT,curRobotId,curRid,0,0,0); 
					break;
				case PANEL_RB_CMD_GET:
					if(testBit(sys->rtk[curRid].hsFill,WB) == 0)
					{
						MessagePopup("操作條件不滿足","桶槽內無料,不可取料!");
						break;
					}
					if(testBit(sys->rb[curRobotId].hsFill,WB) > 0)
					{
						MessagePopup("操作條件不滿足","夾爪上已經有料,不可取料!");
						break;
					}
					setRobotCommand(&sys->rb[curRobotId],curRid,GET_COMMAND);
					ActionLog(RB_GET_ACT_EVENT,curRobotId,curRid,0,0,0);
					break;	
				case PANEL_RB_CMD_HOME:
					setRobotCommand(&sys->rb[curRobotId],curRid,HOME_COMMAND);
					ActionLog(RB_HOME_ACT_EVENT,curRobotId,0,0,0,0);
					break;
				case PANEL_RB_CMD_MOVE:
					setRobotCommand(&sys->rb[curRobotId],curRid,MOVE_COMMAND);
					ActionLog(RB_MOVE_ACT_EVENT,curRobotId,curRid,0,0,0);
					break;
				case PANEL_RB_CMD_CLEAN:
					setRobotCommand(&sys->rb[curRobotId],curRid,BLOW_COMMAND);
					ActionLog(RB_CLEAN_ACT_EVENT,curRobotId,0,0,0,0);
					break;


				case PANEL_RB_CHUCK_OFF:
					setBit(sys->rb[curRobotId].hsChuck);
					ActionLog(RB_CHUCK_ACT_EVENT,curRobotId,1,0,0,0);
					break;
				case PANEL_RB_CHUCK_ON:
					resetBit(sys->rb[curRobotId].hsChuck);
					ActionLog(RB_CHUCK_ACT_EVENT,curRobotId,0,0,0,0);
					break;
					
				case PANEL_RB_TEACH_OFF:
					setBit(sys->rb[curRobotId].hsTeach);
					ActionLog(RB_TEACH_ACT_EVENT,curRobotId,1,0,0,0);
					break;
				case PANEL_RB_TEACH_ON:
					resetBit(sys->rb[curRobotId].hsTeach);
					ActionLog(RB_TEACH_ACT_EVENT,curRobotId,0,0,0,0);
					break;
					
				case PANEL_RB_FILL_OFF:
					setBit(sys->rb[curRobotId].hsFill);
					ActionLog(RB_CAR_ACT_EVENT,curRobotId,1,0,0,0);
					break;
				case PANEL_RB_FILL_ON:
					resetBit(sys->rb[curRobotId].hsFill); 
					ActionLog(RB_CAR_ACT_EVENT,curRobotId,0,0,0,0);
					break;
			}
			break;
	}
	return 0;
}
コード例 #6
0
ファイル: robot_panel.c プロジェクト: wft999/25m
int CVICALLBACK RobotManuAdj (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_LEFT_CLICK:
			if(CheckAuth(OP_ROBOT) == 0)
				return 0;
			
			if(control == PANEL_RB_MOT_ADJ_U)
			{
				resetBit(sys->rb[curRobotId].hsJogSpdY);
				setBit(sys->rb[curRobotId].hsJogPY); 
				resetBit(sys->rb[curRobotId].hsJogNY);
				
				ActionLog(RB_UP_ACT_EVENT,curRobotId,0,0,0,0); 
			}
			else if(control == PANEL_RB_MOT_ADJ_UU)
			{
				setBit(sys->rb[curRobotId].hsJogSpdY);
				setBit(sys->rb[curRobotId].hsJogPY); 
				resetBit(sys->rb[curRobotId].hsJogNY);
				
				ActionLog(RB_UUP_ACT_EVENT,curRobotId,0,0,0,0);
			}
			else if(control == PANEL_RB_MOT_ADJ_D)
			{
				resetBit(sys->rb[curRobotId].hsJogSpdY);
				resetBit(sys->rb[curRobotId].hsJogPY); 
				setBit(sys->rb[curRobotId].hsJogNY);
				
				ActionLog(RB_DOWN_ACT_EVENT,curRobotId,0,0,0,0);
			}
			else if(control == PANEL_RB_MOT_ADJ_DD)
			{
				setBit(sys->rb[curRobotId].hsJogSpdY);
				resetBit(sys->rb[curRobotId].hsJogPY); 
				setBit(sys->rb[curRobotId].hsJogNY);
				
				ActionLog(RB_DDOWN_ACT_EVENT,curRobotId,0,0,0,0);
			}
			////////////////////////////////////////////
			else if(control == PANEL_RB_MOT_ADJ_L)
			{
				resetBit(sys->rb[curRobotId].hsJogSpdX);
				if(curRobotId == RB03)
				{
					resetBit(sys->rb[curRobotId].hsJogPX); 
					setBit(sys->rb[curRobotId].hsJogNX);
				}
				else
				{
					setBit(sys->rb[curRobotId].hsJogPX); 
					resetBit(sys->rb[curRobotId].hsJogNX);	
				}
				ActionLog(RB_LEFT_ACT_EVENT,curRobotId,0,0,0,0);
			}
			else if(control == PANEL_RB_MOT_ADJ_LL)
			{
				setBit(sys->rb[curRobotId].hsJogSpdX);
				if(curRobotId == RB03)
				{
					resetBit(sys->rb[curRobotId].hsJogPX); 
					setBit(sys->rb[curRobotId].hsJogNX);
				}
				else
				{
					setBit(sys->rb[curRobotId].hsJogPX); 
					resetBit(sys->rb[curRobotId].hsJogNX);	
				}
				ActionLog(RB_LLEFT_ACT_EVENT,curRobotId,0,0,0,0);
			}
			else if(control == PANEL_RB_MOT_ADJ_R)
			{
				resetBit(sys->rb[curRobotId].hsJogSpdX);
				if(curRobotId != RB03)
				{
					resetBit(sys->rb[curRobotId].hsJogPX); 
					setBit(sys->rb[curRobotId].hsJogNX);
				}
				else
				{
					setBit(sys->rb[curRobotId].hsJogPX); 
					resetBit(sys->rb[curRobotId].hsJogNX);	
				}
				ActionLog(RB_RIGHT_ACT_EVENT,curRobotId,0,0,0,0);
			}
			else if(control == PANEL_RB_MOT_ADJ_RR)
			{
				setBit(sys->rb[curRobotId].hsJogSpdX);
				if(curRobotId != RB03)
				{
					resetBit(sys->rb[curRobotId].hsJogPX); 
					setBit(sys->rb[curRobotId].hsJogNX);
				}
				else
				{
					setBit(sys->rb[curRobotId].hsJogPX); 
					resetBit(sys->rb[curRobotId].hsJogNX);	
				}
				ActionLog(RB_RRIGHT_ACT_EVENT,curRobotId,0,0,0,0);
			}
			break;
		case EVENT_LEFT_CLICK_UP: 
			resetBit(sys->rb[curRobotId].hsJogSpdX);
			resetBit(sys->rb[curRobotId].hsJogPX);
			resetBit(sys->rb[curRobotId].hsJogNX); 
			
			resetBit(sys->rb[curRobotId].hsJogSpdY);
			resetBit(sys->rb[curRobotId].hsJogPY);
			resetBit(sys->rb[curRobotId].hsJogNY); 

			break;
	}
	return 0;
}
コード例 #7
0
ファイル: tank_panel.c プロジェクト: wft999/25m
int CVICALLBACK Command (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	if(event != EVENT_LEFT_CLICK)
		return 0;
	
	if(CheckAuth(OP_TANK) == 0)
		return 0;
	if (!ButtonConfirm (panel,control))		
		return 0; 
	
	switch (control) {
		case PANEL_TANK_AMAKE_OFF:
			if(testBit(sys->tk[curTankId].hsMakeEnd,RB) > 0)
			{
				MessagePopup("¾Þ§@±ø¥ó¤£º¡¨¬","½Ð¥ý±Æ©ñ¡A¤~¥i°õ¦æ°t¼Ñ¡I");
				break;
			}
			if(g_setupMake == 0)
			{
				resetBit(sys->tk[curTankId].hsMakeStop); 
				GetCtrlVal(panel,PANEL_TANK_AC1_MAKE,&sys->tk[curTankId].MakeCH1);
				GetCtrlVal(panel,PANEL_TANK_AC2_MAKE,&sys->tk[curTankId].MakeCH2); 
				GetCtrlVal(panel,PANEL_TANK_AC3_MAKE,&sys->tk[curTankId].MakeCH3);
				GetCtrlVal(panel,PANEL_TANK_AC4_MAKE,&sys->tk[curTankId].MakeCH4);
				g_makeBit = sys->tk[curTankId].hsMake;
				g_setupMake = 1;
				
				ActionLog(TANK_MAKE_ACT_EVENT,curTankId,1,sys->tk[curTankId].MakeCH1,sys->tk[curTankId].MakeCH2,sys->tk[curTankId].MakeCH3);
			}
			break;
		case PANEL_TANK_AMAKE_ON:
			setBit(sys->tk[curTankId].hsMakeStop);
			
			ActionLog(TANK_MAKE_ACT_EVENT,curTankId,0,0,0,0);
			break;
			
		case PANEL_TANK_MMAKE_OFF:
			if(testBit(sys->tk[curTankId].hsMakeEnd,RB) == 0)
			{
				MessagePopup("¾Þ§@±ø¥ó¤£º¡¨¬","°t¼Ñ¥¼§¹¦¨¡A¤£¥i²K¥[¡I");
				break;
			}
			if(g_setupMMake == 0)
			{
				resetBit(sys->tk[curTankId].hsMMakeStop); 
				GetCtrlVal(panel,PANEL_TANK_AC1_MAKE,&sys->tk[curTankId].MMakeCH1);
				GetCtrlVal(panel,PANEL_TANK_AC2_MAKE,&sys->tk[curTankId].MMakeCH2); 
				GetCtrlVal(panel,PANEL_TANK_AC3_MAKE,&sys->tk[curTankId].MMakeCH3);
				GetCtrlVal(panel,PANEL_TANK_AC4_MAKE,&sys->tk[curTankId].MMakeCH4);
				g_mmakeBit = sys->tk[curTankId].hsMMake;
				g_setupMMake = 1;
				
				ActionLog(TANK_MMAKE_ACT_EVENT,curTankId,1,sys->tk[curTankId].MMakeCH1,sys->tk[curTankId].MMakeCH2,sys->tk[curTankId].MMakeCH3);
			}
			break;
		case PANEL_TANK_MMAKE_ON:
			setBit(sys->tk[curTankId].hsMMakeStop);
			
			ActionLog(TANK_MAKE_ACT_EVENT,curTankId,0,0,0,0);
			break;	
			
		case PANEL_TANK_AC1_DOS_OFF:
			setBit(sys->tk[curTankId].hsAC1Dos);
			ActionLog(TANK_DOS_ACT_EVENT,curTankId,1,1,0,0);
			
			break;
		case PANEL_TANK_AC1_DOS_ON:
			resetBit(sys->tk[curTankId].hsAC1Dos);
			
			ActionLog(TANK_DOS_ACT_EVENT,curTankId,1,0,0,0);
			break;	
			
		case PANEL_TANK_AC2_DOS_OFF:
			setBit(sys->tk[curTankId].hsAC2Dos);
			ActionLog(TANK_DOS_ACT_EVENT,curTankId,2,1,0,0);
			
			break;
		case PANEL_TANK_AC2_DOS_ON:
			resetBit(sys->tk[curTankId].hsAC2Dos);
			
			ActionLog(TANK_DOS_ACT_EVENT,curTankId,2,0,0,0);
			break;
			
		case PANEL_TANK_AC3_DOS_OFF:
			setBit(sys->tk[curTankId].hsAC3Dos);
			ActionLog(TANK_DOS_ACT_EVENT,curTankId,3,1,0,0);
			
			break;
		case PANEL_TANK_AC3_DOS_ON:
			resetBit(sys->tk[curTankId].hsAC3Dos);
			
			ActionLog(TANK_DOS_ACT_EVENT,curTankId,3,0,0,0);
			break;	
			
		case PANEL_TANK_AC4_DOS_OFF:
			setBit(sys->tk[curTankId].hsAC4Dos);
			ActionLog(TANK_DOS_ACT_EVENT,curTankId,4,1,0,0);
			
			break;
		case PANEL_TANK_AC4_DOS_ON:
			resetBit(sys->tk[curTankId].hsAC4Dos);
			
			ActionLog(TANK_DOS_ACT_EVENT,curTankId,4,0,0,0);
			break;	
			
        case PANEL_TANK_WASH_OFF:
			setBit(sys->tk[curTankId].hsWash);
			
			ActionLog(TANK_WASH_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_WASH_ON:
			resetBit(sys->tk[curTankId].hsWash);
			
			ActionLog(TANK_WASH_ACT_EVENT,curTankId,0,0,0,0);
			break;
			
		case PANEL_TANK_DOWN_OFF:
			/*if(testBit(sys->tk[curTankId].hsMakeEnd,RB) == 0)
			{
				MessagePopup("¾Þ§@±ø¥ó¤£º¡¨¬","°t¼Ñ¥¼§¹¦¨¡A¤£¥i±Æ©ñ¡I¡I");
				break;
			}  */
			setBit(sys->tk[curTankId].hsDown);
			ActionLog(TANK_DOWN_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_DOWN_ON:
			resetBit(sys->tk[curTankId].hsDown);
			ActionLog(TANK_DOWN_ACT_EVENT,curTankId,0,0,0,0);
			break;
			
		case PANEL_TANK_PUMP_OFF:
			resetBit(sys->tk[curTankId].hsPump);
			ActionLog(TANK_PUMP_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_PUMP_ON:
			ActionLog(TANK_PUMP_ACT_EVENT,curTankId,0,0,0,0);
			setBit(sys->tk[curTankId].hsPump);
			break;
			
		case PANEL_TANK_PUMPIN_OFF:
			resetBit(sys->tk[curTankId].hsPumpIn);
			ActionLog(TANK_PUMP_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_PUMPIN_ON:
			ActionLog(TANK_PUMP_ACT_EVENT,curTankId,0,0,0,0);
			setBit(sys->tk[curTankId].hsPumpIn);
			break;	
			
		case PANEL_TANK_HEAT_OFF:
			resetBit(sys->tk[curTankId].hsHeat);
			ActionLog(TANK_HEAT_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_HEAT_ON:
			setBit(sys->tk[curTankId].hsHeat);
			ActionLog(TANK_HEAT_ACT_EVENT,curTankId,0,0,0,0);
			break;
			
		case PANEL_TANK_ADD_WATER_OFF:
			setBit(sys->tk[curTankId].hsAddWater);
			ActionLog(TANK_ADD_WATER_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_ADD_WATER_ON:
			resetBit(sys->tk[curTankId].hsAddWater);
			ActionLog(TANK_ADD_WATER_ACT_EVENT,curTankId,0,0,0,0);
			break;	
			
		case PANEL_TANK_SHUT_OFF:
			setBit(sys->tk[curTankId].hsShutOpen);
			resetBit(sys->tk[curTankId].hsShutClose);
			ActionLog(TANK_SHUT_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_SHUT_ON:
			setBit(sys->tk[curTankId].hsShutClose);
			resetBit(sys->tk[curTankId].hsShutOpen);
			ActionLog(TANK_SHUT_ACT_EVENT,curTankId,0,0,0,0);
			break;	
			
/*		case PANEL_TANK_BUBB_OFF:
			setBit(sys->tk[curTankId].hsBubble);
			ActionLog(TANK_BUBB_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_BUBB_ON:
			resetBit(sys->tk[curTankId].hsBubble);
			ActionLog(TANK_BUBB_ACT_EVENT,curTankId,0,0,0,0);
			break;
					   
		case PANEL_TANK_DRAIN_OFF:
			setBit(sys->tk[curTankId].hsDrain);
			ActionLog(TANK_DRAIN_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_DRAIN_ON:
			resetBit(sys->tk[curTankId].hsDrain);
			ActionLog(TANK_DRAIN_ACT_EVENT,curTankId,0,0,0,0);
			break;	
	*/	
			
		case PANEL_TANK_FILL_OFF:
			//ChangFillStatus(sys->rtk[curRTankId1].hsFill,1);
			setBit(sys->rtk[curRTankId1].hsFill);
			GetCurrentDateTime(&sys->rtk[curRTankId1].car.iPrcTM[curTankId]);
			ActionLog(TANK_CAR_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_FILL_ON:
			resetBit(sys->rtk[curRTankId1].hsFill);
			//ChangFillStatus(sys->rtk[curRTankId1].hsFill,0);
			ActionLog(TANK_CAR_ACT_EVENT,curTankId,0,0,0,0);
			break;	
			
		case PANEL_TANK_FILL2_OFF:
			setBit(sys->rtk[curRTankId2].hsFill);
			GetCurrentDateTime(&sys->rtk[curRTankId2].car.iPrcTM[curTankId]);
			//ChangFillStatus(sys->rtk[curRTankId2].hsFill,1);
			ActionLog(TANK_CAR_ACT_EVENT,curTankId,1,0,0,0);
			break;
		case PANEL_TANK_FILL2_ON:
			resetBit(sys->rtk[curRTankId2].hsFill);
			//ChangFillStatus(sys->rtk[curRTankId2].hsFill,0);
			ActionLog(TANK_CAR_ACT_EVENT,curTankId,0,0,0,0);
			break;	
	}
	
	return 0;
}