コード例 #1
0
ファイル: ParaCard.c プロジェクト: redmorningcn/NC136B-320
//
//extern	float		l_Density;		
//extern	float  		l_ReviseHight;              		//修正高度
//extern  void		ReCalPara(uint8	Flg);
//extern	int16  		GetDip1Prs(void);
//extern	int16  		GetDip2Prs(void);
//extern	uint8  		GetOilBoxCod(void);
//
////-------------------------------------------------------------------------------------------------
////函数名称:             uint8	DebugCard(stcCardFlg	* sCardFlg)
////函数功能:             调试卡
////入口参数:             无
////出口参数:             无
////--------------------------------------------------------------------------------------------------
//uint8	DebugCard(stcCardFlg	* sCardFlg)
//{
//	uint32	AllStrLen = 0;
//	int16	CurDip1Prs;
//	int16	CurDip2Prs;
//	uint8	ModNum;
//	uint16	Density;
//	uint16	Hight;
//	uint16	CrcCheck;
//	
//	ReCalPara(1);
//
//	CurDip1Prs	=	GetDip1Prs();
//	CurDip2Prs	=	GetDip2Prs();
//	ModNum		=  	GetOilBoxCod();
//	Density		=  	(uint16)(l_Density*1000);
//	Hight		= 	(uint16)l_ReviseHight;
//	
//	DisplaySet(150,1,"DIP1");								
//	DisplaySet(200,1,"%d",CurDip1Prs);					
//	
//	DisplaySet(150,1,"DIP2");								
//	DisplaySet(200,1,"%d",CurDip2Prs);					
//	
//	DisplaySet(150,1,"MODE");								
//	DisplaySet(200,1,"C_%d",ModNum);							
//	
//	DisplaySet(150,1,"DENS");
//	DisplaySet(200,1,"%d",Density);
//	
//	DisplaySet(150,1,"HIGH");
//	DisplaySet(200,1,"%d",Hight);	
//	
//	PrintfTime();
//	DisplayTime();
//
//	memcpy((int8 *)&sCardFlg->sCardPara.sDebugCard.Buf[AllStrLen],(int8 *)&CurDip1Prs,2);
//	
//	AllStrLen += 2;
//	memcpy((int8 *)&sCardFlg->sCardPara.sDebugCard.Buf[AllStrLen],(int8 *)&CurDip2Prs,2);
//	
//	AllStrLen += 2;
//	memcpy((int8 *)&sCardFlg->sCardPara.sDebugCard.Buf[AllStrLen],(int8 *)&ModNum,2);
//	
//	AllStrLen += 2;
//	memcpy((int8 *)&sCardFlg->sCardPara.sDebugCard.Buf[AllStrLen],(int8 *)&Density,2);
//	
//	AllStrLen += 2;
//	memcpy((int8 *)&sCardFlg->sCardPara.sDebugCard.Buf[AllStrLen],(int8 *)&Hight,2);
//	
//	AllStrLen += 2;
//	sCardFlg->sCardPara.sDebugCard.BufLen = AllStrLen;			//有效数据长度
//
//	CrcCheck = GetCrc16Check((uint8 *)&sCardFlg->sCardPara.sDebugCard,sizeof(sCardFlg->sCardPara.sDebugCard )- 2);
//	sCardFlg->sCardPara.sDebugCard.CrcCheck = CrcCheck;
//
//	CrcCheck = GetCrc16Check((uint8 *)&sCardFlg->sCardPara,sizeof(sCardFlg->sCardPara) - 2);
//	sCardFlg->sCardPara.CrcCheck = CrcCheck;	
//	
//	CrcCheck = GetCrc16Check((uint8 *)sCardFlg,sizeof(stcCardFlg) - 2);
//	sCardFlg->CrcCheck = CrcCheck;		
//	
//	WriteCardFlg(sCardFlg);										//修改IC卡标志页	
//	
//	return 	1;
//	
///*
//	static	stcDebugCard	sDebugCard;							//高度调整
//	uint16	CrcCheck;
//
//	CrcCheck = GetCrc16Check((uint8 *)&sCardFlg->sCardPara,sizeof(sCardFlg->sCardPara) - 2);
//	
//	if(CrcCheck == sCardFlg->sCardPara.CrcCheck)
//	{
//		sDebugCard = sCardFlg->sCardPara.sDebugCard;
//		
//		CrcCheck = GetCrc16Check((uint8 *)&sDebugCard,sizeof(sDebugCard) - 2);
//		
//		if(CrcCheck == sDebugCard.CrcCheck)				//校验和相等		
//		{
//			DisplaySet(100,1,"SDBG");	
//			
//			if(StoreReviseHight((stcReviseHight *)&sDebugCard))
//			{
//				SetSucceedIndicate();	
//				
//				return	1;
//			}
//			else
//			{
//				StoreErrIndicate();	
//				
//				return	0;
//			}
//		}
//	}
//	
//	CrcCheckErrIndicate();
//		
//	return	0;
//*/
//}
//
////-------------------------------------------------------------------------------------------------
////函数名称:             uint8	FixCard(stcCardFlg	* sCardFlg)
////函数功能:             高度修正卡处理
////入口参数:             无
////出口参数:             无
////--------------------------------------------------------------------------------------------------
uint8	FixCard(void)
{
	stcFixInfo		sFixInfo;							//高度调整
	uint16		CrcCheck;
	stcCardPara	sCardPara;

	if(ReadCardPara((stcCardPara *)	&sCardPara))
	{
		sFixInfo = sCardPara.sFixInfo;
		
		CrcCheck = GetCrc16Check((uint8 *)&sFixInfo,sizeof(sFixInfo) - 2);
		
		if(CrcCheck == sFixInfo.CrcCheck)				//校验和相等		
		{
			DisplaySet(100,1,"%d",sFixInfo.LocoTyp);	
			DisplaySet(100,1,"%d",sFixInfo.LocoNum[1]*256+sFixInfo.LocoNum[0]);	
			
			if(StoreFixInfo((stcFixInfo *)&sFixInfo))
			{
				SetSucceedIndicate();	
				return	1;
			}
			else
			{
				StoreErrIndicate();	
				return	0;
			}
		}

	}
	
	CrcCheckErrIndicate();
		
	return	0;
} 
コード例 #2
0
ファイル: ParaCard.c プロジェクト: redmorningcn/NC136B-320
uint8	DensityCard(void)
{
	stcDensity	sDensity;						//密度
	stcCardPara	sCardPara;
	uint16		CrcCheck;
	
	if(ReadCardPara((stcCardPara *)	&sCardPara))
	{
		sDensity = sCardPara.sDensity;
		
		CrcCheck = GetCrc16Check((uint8 *)&sDensity,sizeof(sDensity) - 2);
		
		if(CrcCheck == sDensity.CrcCheck)				//校验和相等		
		{			
			if(StoreDensity((stcDensity *)&sDensity))
			{
				DisplaySet(150,1,"%d",sDensity.Density);
				
				SetSucceedIndicate();	
				
				return	1;
			}
			else
			{
				StoreErrIndicate();	
				
				return	0;
			}
		}
	}
	
	CrcCheckErrIndicate();
		
	return	0;
} 
コード例 #3
0
ファイル: ParaCard.c プロジェクト: redmorningcn/NC136B-320
////-------------------------------------------------------------------------------------------------
////函数名称:             uint8	ModelSelectCard(stcCardFlg	* sCardFlg)
////函数功能:             模型选择卡
////入口参数:             整个卡结构体
////出口参数:             是否成功
////--------------------------------------------------------------------------------------------------
uint8	ModelSelectCard(void)
{
	uint8			ModelNum;							

	stcCardPara	sCardPara;

	if(ReadCardPara((stcCardPara *)	&sCardPara))
	{
		ModelNum = sCardPara.SetVal;

		if(StoreSelectModel(ModelNum))
		{
			DisplaySet(150,1,"%d",ModelNum);			
			SetSucceedIndicate();	
			
			return	1;
		}
		else
		{
			StoreErrIndicate();	
			
			return	0;
		}
		
	}
	
	CrcCheckErrIndicate();
		
	return	0;
}
コード例 #4
0
ファイル: ParaCard.c プロジェクト: redmorningcn/NC136B-320
//
//extern	uint8 StoreDenChangeTimes(uint32  Times);
//
////------------------------------------------------------------------------
////  名  称 :	uint8 	ReadCurFlshTimes(void)
////  功  能 :	读当前记录装置记录流水号
//// 入口参数:	无
//// 出口参数:	当前流水号
////------------------------------------------------------------------------
//extern	uint32 ReadDenChangeTimes(void);
//
////-------------------------------------------------------------------------------------------------
////函数名称:             uint8	DenDataCard(stcCardFlg	sCardFlg)
////函数功能:             普通卡处理
////入口参数:             无
////出口参数:             无
////--------------------------------------------------------------------------------------------------
uint8	DenDataCard(stcCardFlg *	sCardFlg)
{

	DensityCard();

	DisplaySet(100,1,"DATA.");
	
	DataCard(0);												//数据卡,进行数据转取
		
	return	1;
} 
コード例 #5
0
ファイル: ParaCard.c プロジェクト: redmorningcn/NC136B-320
////-------------------------------------------------------------------------------------------------
////函数名称:             uint8	ExpandCard(stcCardFlg	* sCardFlg)
////函数功能:             扩展卡
////入口参数:             无
////出口参数:             无
////--------------------------------------------------------------------------------------------------
uint8	ExpandCard(void)
{
	uint8	CardType;
	uint32	i;
	uint32	DisTime = 40;		//500ms
	uint32	Time 	= 0;		//500ms
	uint32	Times 	= 0;	
	
	stcTime		sTime;
	stcCardPara	sCardPara;

	if(!ReadCardPara((stcCardPara *)	&sCardPara))
	{	return 0;}


/*	
#ifdef	HARD_VER_090426	
	DisplaySet(150,1,"%u-%u-%u",sTime.Year,sTime.Month,sTime.Date);
	DisplaySet(60,1,"         ");	
	DisplaySet(350,1,"%u-%u-%u.",sTime.Hour,sTime.Min,sTime.Sec);	//等待时间补充
	DisplaySet(60,1,"         ");	
#endif
*/
	CardType = sCardPara.Reserve0;							//卡类型
	
	ReadTime((stcTime *)&sTime);
	i = sTime.Sec + sTime.Min * 60 +  sTime.Hour * 60 * 60;	

	while(1)
	{
		if(CardType == TIME_ADD_CARD)	
		{
			i++;
		}	
		else if(CardType == TIME_SUB_CARD)	
		{
			i--;	
		}
		else
		{
			//printfcom0("\r\n 不是时间卡");
			break;
		}
		
		i = i % (60*60*24);
		
		Times++;
		
		sTime.Sec  =   i % 60;
		sTime.Min  =  (i / 60 ) % 60;
		sTime.Hour =  ((i/60)/60) % 24;
		
		DisplaySet(1,1,"%02u-%02u-%02u.",sTime.Hour,sTime.Min,sTime.Sec);		//
		DelayX10ms(1);		

		Time = GetSysTime();
		while(GetSysTime() - Time < DisTime)
		{
		//SysHoldTast();;
		}
		
		if(DisTime > 4)
		{
			DisTime -= Times/10;		
		}
		
		if(GetPlugFlg() != PLUG_IN_CARD)
		{
			DelayX10ms(200);
			WriteTime(sTime);
			DelayX10ms(100);
			break;
		}
	}
	
	return	1;
} 
コード例 #6
0
ファイル: ParaCard.c プロジェクト: redmorningcn/NC136B-320
////-------------------------------------------------------------------------------------------------
////函数名称:             void	HightCard(stcCardFlg	sCardFlg)
////函数功能:             高度修正卡处理
////入口参数:             无
////出口参数:             无
////--------------------------------------------------------------------------------------------------
uint8	HightCard(void)
{
	stcReviseHight	sReviseHight;							//高度调整
	uint16		CrcCheck;
	int16		StoreHight;	
	stcCardPara	sCardPara;
		
	if(ReadReviseHight((stcReviseHight *)&sReviseHight))
	{
		StoreHight = sReviseHight.ReviseHight;
	}
	else
	{
		StoreHight = 0;
	}
		
	if(ReadCardPara((stcCardPara *)	&sCardPara))
	{
		sReviseHight = sCardPara.sReviseHight;
		
		CrcCheck = GetCrc16Check((uint8 *)&sReviseHight,sizeof(sReviseHight) - 2);
		
		if(CrcCheck == sReviseHight.CrcCheck)				//校验和相等		
		{
		//	DisplaySet(150,1,"SHIG");
			StoreHight = StoreHight + sReviseHight.ReviseHight; 	
			if(StoreHight > 500 ||  StoreHight < -500)
			{
				if(StoreHight > 500)
				{
					sReviseHight.ReviseHight = 500;
					DisplaySet(60,2,"TO_H");
					DisplaySet(60,2,"    ");
					DelayX10ms(250);
				}
				else
				{
					sReviseHight.ReviseHight = -500;
					DisplaySet(60,2,"TO_L");
					DisplaySet(60,2,"    ");
					DelayX10ms(250);					
				}
			}
			else
			{
				sReviseHight.ReviseHight = StoreHight;
			}
			
			CrcCheck = GetCrc16Check((uint8 *)&sReviseHight,sizeof(sReviseHight) - 2);
			sReviseHight.CrcCheck = CrcCheck;
			
			if(StoreReviseHight((stcReviseHight *)&sReviseHight))
			{
				DisplaySet(150,1,"%d",sReviseHight.ReviseHight);

				SetSucceedIndicate();	
				
				return	1;
			}
			else
			{
				StoreErrIndicate();	
				
				return	0;
			}
		}
	}
	
	CrcCheckErrIndicate();
		
	return	0;
} 
コード例 #7
0
ファイル: ParaCard.c プロジェクト: redmorningcn/NC136B-320
////-------------------------------------------------------------------------------------------------
////函数名称:             uint8	CrcCheckErrIndicate(void)
////函数功能:             设置信息校验和失败指示
////入口参数:             无
////出口参数:             无
////--------------------------------------------------------------------------------------------------
void	CrcCheckErrIndicate(void)
{
	DisplaySet(60,100,"CRCE");	
	DisplaySet(60,100,"        ");	
}
コード例 #8
0
ファイル: ParaCard.c プロジェクト: redmorningcn/NC136B-320
////-------------------------------------------------------------------------------------------------
////函数名称:             uint8	StoreErrIndicate(void)
////函数功能:             存设置信息失败指示
////入口参数:             无
////出口参数:             无
////--------------------------------------------------------------------------------------------------
void	StoreErrIndicate(void)
{
	DisplaySet(60,100,"STRE");	
	DisplaySet(60,100,"        ");	
}
コード例 #9
0
ファイル: iAuction.cpp プロジェクト: mshicom/nubot_ws
uint
iAuction::MainStage(uint s){

  InitStage();

  int sink = -1; //here sink is a column
  int i_bar= -1;
  int j_bar= -1;

  SV.insert(s);
  UpdateLabeledRows(s);
  while(sink == -1){
    double delta = std::numeric_limits<double>::infinity();
    for(set<uint>::iterator itr=LU.begin(); itr!=LU.end(); itr++){
      uint cur_j = heaps[*itr].top().first;
      while(SV.find(cur_j)!=SV.end()){
	heaps[*itr].pop();
        cur_j = heaps[*itr].top().first;
      }
      if(SV.find(cur_j) == SV.end()){
        if((orig_matrix[*itr][GetAssignedCol(*itr)]-Deltas[GetAssignedCol(*itr)]) - (orig_matrix[*itr][cur_j] - Deltas[cur_j]) 
		< delta){
          delta = (orig_matrix[*itr][GetAssignedCol(*itr)]-Deltas[GetAssignedCol(*itr)]) - (orig_matrix[*itr][cur_j] - Deltas[cur_j]);
          j_bar = cur_j;
          i_bar = *itr;
        }
      }//if SV
    }//for
    
    assert(j_bar != -1 && i_bar != -1);
    //pred[i_bar] = j_bar;
    pred[i_bar].push_back(j_bar);
    assert(pred_j[j_bar] == -1);
    pred_j[j_bar] = i_bar;
    for(set<uint>::iterator itr=SV.begin(); itr!=SV.end(); itr++)
      Deltas[*itr] += delta;
    price_cnt ++;
    
    if(!GetNumAsgnRows(j_bar)){
      sink = j_bar;
    }
    else{
      //update LU SV
      SV.insert(j_bar);
      UpdateLabeledRows(j_bar);
    }
#if 0
    //display data
    _cout("\tset SV: ");
    DisplaySet(SV);
    _cout("\tset LU: ");
    DisplaySet(LU);
    //_cout("\tpred: ");
    //DisplayVec<int>(pred);
    _cout("\tdalta="<<delta<<"; j*="<<j_bar<<endl);
    _cout("\tDeltas: ");
    DisplayVec<double>(Deltas);
    _cout(endl);
#endif
  }//while sink

  assert(sink!=-1);

  //update the assignment and allocation
  allocated_cols.insert(sink);
  int j_asgn=-1;
  uint cnt = 0;
  uint true_pred = sink;

  while(j_asgn!=(int)s){ 
    if(cnt++ > col_size)
      throw EXCEPTION_BROKEN;
    j_asgn=assignment[i_bar];
    assignment[i_bar] = true_pred;
#if 0
    _cout("\ti_bar="<<i_bar<<" j_asgn="<<j_asgn<<" pred="<<true_pred<<endl);
#endif

   if(pred_j[j_asgn] != -1){
     i_bar=pred_j[j_asgn];
      for(uint j=0; j<pred[i_bar].size(); j++)
          if((int)pred[i_bar][j] == j_asgn){
            true_pred = pred[i_bar][j];
            break;
          }
   } 
   //assert(i<row_size || j_asgn==(int)s);
  }//while

  //update num_allocation, by re-scanning num of assigned rows in each column
  UpdateRecordAllocations();

#if 0
  _cout("Stats of this stage:"<<endl);
  _cout("\tstart col = "<<s<<"; sink col = "<<sink<<endl);
  _cout("\tassignment: ");
  DisplayVec<uint>(assignment);
  _cout("\tallocation: ");
  DisplayVec<uint>(allocation);
  _cout("\trecord_allocations: ");
  DisplayVec<uint>(record_allocations);
  _cout("transformed matrix with current assignment and Deltas: "<<endl);
  DisplayMatrix(orig_matrix, assignment, Deltas);
  _cout("-----------------------------------------------------"<<endl);
#endif

  return (uint)sink;
}