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

📄 myuart.cpp

📁 一个具体的项目程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    nCount   = DATAST_PLACE;
    //dat=restoreparam_from_Mem();
    memcpy(&uartSbuf[DATAST_PLACE],&con_param_Info,sizeof(Con_param_Info));
    nCount+=sizeof(Con_param_Info);
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}


void  Do_SetSystemTime(void)
{
    BYTE  buf[7];// = {0x00,0x45,0x23,0x16,0x06,0x03,0x04};
    BYTE  nCount;
    BYTE  dat = SUCCESS;
	if(uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE != 6)
	{
	  dat = FORMAT_ERR;
	}
    else
    {
  	  nCount=DATAST_PLACE;
      buf[YEAR_ADDR]=uartSbuf[nCount++];
	  buf[MOM_ADDR] =uartSbuf[nCount++];
	  buf[DATE_ADDR]=uartSbuf[nCount++];
	  buf[HOUR_ADDR]=uartSbuf[nCount++];
	  buf[MIN_ADDR] =uartSbuf[nCount++];
	  buf[SEC_ADDR] =uartSbuf[nCount++];
  	  Do_WriteClock(buf);
	}
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]   = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = dat;
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);

	if(dat==SUCCESS)
	{
	   do_buzzer(BUZZER_WAIT);
	}
}


void  Do_GetSystemTime(void)
{
    BYTE  buf[7];// = {0x00,0x45,0x23,0x16,0x06,0x03,0x04};
    BYTE  nCount = ASP_PLACE;
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;

    Do_ReadClock(buf);
    nCount   = DATAST_PLACE;
    uartSbuf[nCount++]=buf[YEAR_ADDR];
    uartSbuf[nCount++]=buf[MOM_ADDR];
    uartSbuf[nCount++]=buf[DATE_ADDR];
    uartSbuf[nCount++]=buf[HOUR_ADDR];
    uartSbuf[nCount++]=buf[MIN_ADDR];
    uartSbuf[nCount++]=buf[SEC_ADDR];

	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}


void  Do_ReadConData(void)
{
    Con_Record pdata con_record;
    BYTE  ii,dat,nCount = ASP_PLACE;
    //SendStr(uartSbuf,10);//for test.

	if((uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE) != 1)return; //err.
	if((dat=uartSbuf[DATAST_PLACE])==0)return;

    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
    while(dat--)
	{
	 if((ii=Read_ConData_From_Memory(&con_record))==SUCCESS)
	 {
       memcpy(&uartSbuf[nCount],&con_record,sizeof(Con_Record));
       nCount += sizeof(Con_Record);
       if((con_record.mark==CONSUME_FLAG)&&(con_statusinfo.con_records>0))
	   {
	    con_statusinfo.con_records--;
	    con_statusinfo.con_allmoney-=con_record.con_Money;
	   }
	 }
	 else if(ii==NO_CON_RECORD)
	 {
        uartSbuf[FRAMECODE_PLACE] |= THELAST_FRAME;
		receive_timer = 0; //must!
	    break;
	 }
	 else
	 {
	    Equip_CurStatus=ii;
	    Do_CheckEquip();
	    do_buzzer(BUZZER_ALARM);//Dis_Err(ii);
		return;
	 }
	}
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}


void  Do_SetConRecode(void)
{

}


void  Do_SetCardClass_Para(void)
{
    Card_Class_Para  pdata  card_class;
    BYTE  nCount = ASP_PLACE;
    BYTE  dat = SUCCESS;
	if(uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE<sizeof(Card_Class_Para))
	{
	  dat = FORMAT_ERR;
	}
    else
    {
	  memcpy(&card_class,&uartSbuf[DATAST_PLACE],sizeof(Card_Class_Para));
      dat=SaveCardClass_To_Mem(&card_class);
	}
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = dat;
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);

	if(dat==SUCCESS)
	{
	   do_buzzer(BUZZER_WAIT);
	}
}


void  Do_GetCardClass_Para(void)
{
    Card_Class_Para  pdata  card_class;
    BYTE  nCount = ASP_PLACE,dat;

	if((uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE) != 1)return; //err.
	if((dat=uartSbuf[DATAST_PLACE])<1 || dat>8)return;

    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;

	card_class.card_class=dat; //must.
    if((dat=ReadCardClass_from_Mem(&card_class))!=SUCCESS)
	{
	   Equip_CurStatus=dat;
	   Do_CheckEquip();
	   do_buzzer(BUZZER_ALARM);//Dis_Err(ii);
	   return;
	}
    memcpy(&uartSbuf[DATAST_PLACE],&card_class,sizeof(Card_Class_Para));
    nCount += sizeof(Card_Class_Para);
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}


void  Do_SetBh_Money(void)
{
    BYTE  nCount,dat=uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE;

	if((dat<sizeof(Bh_Money))||(dat>DATLENGTH_MAX))
	{
	  dat=FORMAT_ERR;
    }
    else
	{
  	  if(uartSbuf[FRAMECODE_PLACE]&FRAMES_MAX == 0)
	  {//这就决定了编号只能一次下载下去!否则只保留最后一次的。
       if((dat=DelAllBh_Money())!=SUCCESS)goto SKIP;
	  }
      dat = uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE;
  	  dat = SaveBh_Money_To_Mem(&uartSbuf[DATAST_PLACE],dat);
	}

SKIP:
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]   = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = dat;
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}


#define  FRAME_BHSTRUCT_S  (DATLENGTH_MAX/sizeof(Bh_Money))
void   Do_GetBh_Money(void)
{
    Bh_Money  pdata  bh_money;
    BYTE ii,dat,nCount,frame=uartSbuf[FRAMECODE_PLACE]&FRAMES_MAX;
    //SendStr(uartSbuf,10);//for test.
	if((uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE) != 1)return; //err.
	if(((dat=uartSbuf[DATAST_PLACE])<1)||(dat>FRAME_BHSTRUCT_S))return;

    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;

    for(ii=frame*FRAME_BHSTRUCT_S,frame=ii+dat;ii<frame;ii++)
	{
	 if((dat=ReadBh_Money_From_Memory(&bh_money,ii))==SUCCESS)
	 {
	   if(bh_money.Bh_code==0xffff)
	     {
		  bh_money.Bh_code=ii,bh_money.money=0;
		 }
       memcpy(&uartSbuf[nCount],&bh_money,sizeof(Bh_Money));
       nCount += sizeof(Bh_Money);
	 }
	 else if(dat==KEY_VALERR_CODE)
	 {
       uartSbuf[FRAMECODE_PLACE] |= THELAST_FRAME;
	   receive_timer = 0; //must!
	   break;
	 }
	 else
	 {
	    Equip_CurStatus=dat;
	    Do_CheckEquip();
	    do_buzzer(BUZZER_ALARM);//Dis_Err(ii);
		return;
	 }
	}
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}


void  Do_SetNumber(void)
{
    BYTE  nCount = ASP_PLACE;
    BYTE  dat = SUCCESS;
	if(uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE<sizeof(Equip_Addr))
	{
	  dat = FORMAT_ERR;
	}
	else if((con_statusinfo.con_records>0))
	{
	  dat= OP_UNALLOWED;//可能还有消费数据
	}
    else
    {
	  memcpy(&equip_addr,&uartSbuf[DATAST_PLACE],sizeof(Equip_Addr));
      dat=Saveparam_To_Mem();
	}
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = dat;
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);

	if(dat==SUCCESS)
	{
	   do_buzzer(BUZZER_WAIT);
	}
}


void  Do_SendDcpeoples(void)
{
    BYTE  nCount,dat = SUCCESS;
	if(uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE<sizeof(Dc_Peoples))
	{
	  dat = FORMAT_ERR;
	}
    else
    {
	  memcpy(&dc_peoples,&uartSbuf[DATAST_PLACE],sizeof(Dc_Peoples));
	}
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = dat;
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);

	if(dat==SUCCESS)
	{
	   do_buzzer(BUZZER_WAIT);
	}
}


void  Do_GetConStatusInfo(void)
{
    BYTE  nCount = ASP_PLACE;
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]   = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
    //dat=restoreparam_from_Mem();
    memcpy(&uartSbuf[nCount],&con_statusinfo,sizeof(Con_StatusInfo));
    nCount += sizeof(Con_StatusInfo);
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}

extern const  BYTE  code  YsnOysFlag_Str[];
extern const  BYTE  code  MyReVision_Str[];
extern const  BYTE  code  Con_Types_Str[];
void  Do_GetEquipVersionInfo(void)
{
    BYTE  nCount = ASP_PLACE;
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]   = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
    memcpy(&uartSbuf[nCount],Con_Types_Str,strlen(Con_Types_Str));
    nCount+=strlen(Con_Types_Str);
    memcpy(&uartSbuf[nCount],",",1);
    nCount+=1;
    memcpy(&uartSbuf[nCount],MyReVision_Str,strlen(MyReVision_Str));
    nCount+=strlen(MyReVision_Str);
    memcpy(&uartSbuf[nCount],&YsnOysFlag_Str[3],strlen(YsnOysFlag_Str)-2);
    nCount+=strlen(YsnOysFlag_Str)-2;

	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}


void  Do_SetOpUserInfo(void)
{
    BYTE  nCount,dat = SUCCESS;
	if(uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE<sizeof(Op_User_Info))
	{
	  dat = FORMAT_ERR;
	}
    else
    {
	  memcpy(&op_user_info,&uartSbuf[DATAST_PLACE],sizeof(Op_User_Info));
	  dat=Saveparam_To_Mem();
	}
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = dat;
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);

	if(dat==SUCCESS)
	{
	   do_buzzer(BUZZER_WAIT);
	}
}


void  Do_GetCurOpUserInfo(void)
{
    BYTE  nCount = ASP_PLACE;
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原来下传的不变。
	uartSbuf[ORDOR_PLACE]   = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
    //dat=restoreparam_from_Mem();
    memcpy(&uartSbuf[nCount],&op_user_info,sizeof(Op_User_Info));
    nCount += sizeof(Op_User_Info);
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}



⌨️ 快捷键说明

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