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

📄 trmprc.c

📁 日本FAMILY按摩椅W-1用的配套操作器程序。带VFD显示
💻 C
字号:
//*******************************************************
//*														*
//*		REMOCON OF MASSAGE MACHINE FOR FAMILY			*
//*														*
//*					DEVICE : uPD784218					*
//*														*
//*						Copyright (C) 2000 K.K NUMATA	*
//*														*
//*******************************************************
//*					TERMINAL PROCESS					*
//*******************************************************

#pragma		sfr
#pragma     nop
#include	<stdio.h>
#include	"trm.h"
#include	"trm2.h"
#include	"tmr.h"
#include	"hsio.h"
//#include	"light.h"
#include	"sound.h"
#include	"dlcd.h"
#include	"disp.h"									
#include	"cmd.h"										
#include    "mode.h"
#include    "text.h"
#include    "vfd.h"

//*******************************************************
//		function prototype
//*******************************************************
extern bit repeat_play_F ;
void	Trm_init(void);
void	Trm_prc(void);
int	    Tget_data(void);
void	Tset_sts(void);
int	    Trcpt_chk(void);
void	chk_retry(void);


extern	int	Lcd_chk_mcourse(void);						

//*******************************************************
//		  initialize
//*******************************************************
void 	Trm_init(void)
{
	int	i;

	for( i = 0 ; i < 9 ; i++)
	{
		rx_data.com_data[i] = 0;      /*rx_data ds 9 byte,the 9byte ram area is cleared*/
	}
	rx_byte_cnt = 0;
	com_tmr = COM_TM1;				/* 30*1000/100 */
	receive_err = 3;				/*  receive_err ds 1 */
//	dlcd_err_tmr = 0;				/*  清?ERR—9的寄存器 */
	com_step = 0;					
	stop_step = 0;
	dsp_err = 0;
	com_ok_F = 0 ;
}


//*******************************************************
//		terminal process
//*******************************************************
void	Trm_prc(void)
{
	int	c;

	if(COMERR_F == 0)     //_sts_flag2.4
	{
		c = Tget_data();							
		if(c == NORMAL_END)                         /*NORMAL_END define 0*/
		{
			Tset_sts();
			
		}
	}
	old_dsp_err = dsp_err ;
	if(COMERR_F == 1)                              /* if communication is err */
	{                
		if(dsp_err == 0)
		{
			dsp_err = 8;
			Snd_out(ERR_SOUND);
		}
	}
//	else if((err_no >= 1) && (err_no <= 7))        //I-1 
    else if((err_no >= 1)&& (err_no <= 15))        //2003-12-10 add W-1 
	{
		if(dsp_err == 0)
		{
			dsp_err = err_no;
			Snd_out(ERR_SOUND);
		}
	}

	if(COMERR_F == 1)
	{
//		sts_flag1 = 0;   //I-1 
/* 2003-12-10 add */
		yn_mode = 0 ;        //no select
		KLSON_F = 0 ;
		TIMEUP_F = 0 ;
		ESTOP_F = 0 ;
/* add over */
		sts_flag2 &= 0x10;	//remain  COMERR_F                                                            						/* 捠怣僄儔乕僼儔僌埲奜僋儕傾 */
	}
}              //power_f equ sts_flag2.7/heater_f equ sts_flag2.6/bvib_f equ sts_flag2.5
               //comerr_F equ sts_flag2.4

//*******************************************************
//		communication data get
//*******************************************************
   int		Tget_data(void)
   {

	WRD_BYT	rx_dt;          
	unsigned char parity;
	int	i;
    
	while(((rx_dt.wd = Hget()) != -1 ) && ( rx_byte_cnt < 9 ))
	{
	    NOP();
		if((rx_byte_cnt == 0) && (rx_dt.wd != START_DATA))   //START_DATA 0X7F
		{
//			break;
		    continue ;
		}
		else
		{
			if( rx_dt.bt.h == 0 )                    //COMMUNICATE NO ERROR
			{                                       //typedef union{ unsigned char com_data[9];
				if( rx_byte_cnt == 0)               //               CDFRM data;}CDFRM2;
				{                                   //extern CDFRM2 rx_data;
					if(rx_dt.bt.l == START_DATA )
					{
						rx_data.com_data[rx_byte_cnt] = rx_dt.bt.l; 
						rx_byte_cnt++;
					}
				}
				else
				{
				 	rx_data.com_data[rx_byte_cnt] = rx_dt.bt.l;
				 	rx_byte_cnt++;
				}
			}
			else        //communicate error
			{											
				rx_byte_cnt = 0;							/* 处理因超时?起的错误 */
	        	break ;
			}
		}
	}
	if( rx_byte_cnt == 9)
	{
		rx_byte_cnt = 0;
		parity = 0xff;
		for(i = 0 ; i < 8 ; i++)
		{
			parity ^= rx_data.com_data[i];
		}
		if(parity == rx_data.com_data[8])
		{
			receive_err = 0;
			com_tmr = COM_TM2;		//define COM_TM2 100/100						
			com_step = 1;	
			com_ok_F = 1 ;							/* 初期通信结束 */
			return((int)NORMAL_END);  //define NORMAL_END 0
		}
	}
	if( com_tmr != 0 )                  /*init communication if err,need send 30s 超时检查 */
	{					
		if(main_step == 0)				/* 100ms检查 */
			com_tmr--;
	}
	if(com_tmr == 0)   
	{					
		rx_byte_cnt = 0;
		if(com_step ==0)               /* init communication after 30s, communication is err,then COMERR_F is 1 */ 
			COMERR_F = 1;							
		else                           /* no init communication ,repeat send check*/
			chk_retry();
		return((int)COM_ERROR);       //define COM_ERROR -1
	}
	return((int)NOW_COMMUNI);    
}


//*******************************************************
//		check transmit retry (receive error )
//*******************************************************
void	chk_retry(void)
{

	if(com_step != 0)
	{
		receive_err++;
		com_tmr = COM_TM2;              //define COM_TM2 100/100
		if(receive_err > TX_RETRY_MAX)  //define TX_RETRY_MAX 3+1
		{
			COMERR_F = 1;								/* 通常动作 */
			receive_err = 0;
		}
	}
}


//*******************************************************/
//		status data set
//*******************************************************

void	Tset_sts(void)
 {

	old_ac_mode = ac_mode;					/* 保存现在处理的模式 */
	old_mm_mode = mm_mode;
	old_mr_mode = mr_mode;
	old_mb_mode = mb_mode;
	old_mh_mode = mh_mode;
	
	old_hand_ma_mode = hand_ma_mode;
	old_leg_hip_ma_mode = leg_hip_ma_mode;
	old_mn_speed = mn_speed;
	old_mn_width = mn_width;
	old_err_no = err_no;             // all fifteen mode

	old_sts_flag1 = sts_flag1 ;  //  OLD_ESTOP_F = ESTOP_F ;OLD_TIMEUP_F =  TIMEUP_F ;OLD_KLSON_F = KLSON_F ;	
	old_yn_mode = yn_mode ;                 /* 2003-12-10 add */
    old_sts_flag2 = sts_flag2 ;  // OLD_POWER_F = POWER_F; OLD_HEATER_F = HEATER_F ; OLD_BVIB_F = BVIB_F ;
	                             //OLD_COMERR_F = COMERR_F ;OLD_LEG_SIDE_F = LEG_SIDE_F ;OLD_HVIB_F = HVIB_F
	                             //OLD_INSERT_DISP_F = INSERT_DISP_F
	mm_mode = rx_data.data.mm;
	mr_mode = rx_data.data.mr;
	mb_mode = rx_data.data.mb;      //strength
	mh_mode = rx_data.data.mh;      //strength
	hand_ma_mode = rx_data.data.hand_air_F ;
	leg_hip_ma_mode = rx_data.data.lleg_hip_air_F ;           
	mn_speed = rx_data.data.speed;
	mn_width = rx_data.data.width;
	err_no = rx_data.data.er;			/* 更新错误信息 */
	POWER_F = rx_data.data.power_F;
	ESTOP_F = rx_data.data.stop_F ;
	KLSON_F = rx_data.data.klson_F ;
	COMERR_F = rx_data.data.comerr_F ;
	TIMEUP_F = rx_data.data.timeup_F ;       //couse or manul action timer over 
	
	marm_air_strength = rx_data.data.hand_air_strength ;
	mh_air_strength = rx_data.data.hip_air_strength ;
	LEG_SIDE_F = rx_data.data.leg_side_F ;
	ml_air_strength = rx_data.data.lleg_air_strength ;
	stp_mode = rx_data.data.stp;            //LBD_F EQU STS_FLAG3.7/ UBD_F EQU STS_FLAG3.6
	BVIB_F = rx_data.data.bvib_F ;
	HVIB_F = rx_data.data.hand_vib_F ;
	yn_mode = rx_data.data.yn;  
	INSERT_DISP_F = rx_data.data.insert_disp_F ;           
	
	if( ESTOP_F == 0)  //sts_flag1.7
	{
		ac_mode = rx_data.data.ac;
		stop_step = 0;
	}
	else       //not normal stop opreation
	{
		if(stop_step == 0)
			stop_step = 3;
	}
//	if((old_err_no != 9) && (err_no == 9))  //检测ERR-9 
//	{
//		dlcd_err_tmr = ER9_TM;      //define ER9_TM 10000/100
//		Snd_out(&Snd_tbl03[0]);					/*  */
//	}  //2003-10-31 DELEATE

/** sound out precess **/
	if(stop_step == 0)  
	{    
	//	if((bctbl == 0) && (ac_mode != 0))
	    if(ac_mode != 0)          /* 2003-10-31  add */
		{
	//		if(EXCSLD_F == 1)  //EXCSLD_F EQU STS_FLAG1.0
	//      if(yn_mode == 1 )  //is now checking shoulder potion 2003-10-31
	        if((old_code_p == finger_check_tbl_j[1])&&(sound_prc_F == 0))
			{
		//	    if(( play_sound_F ==1)&&(sound_prc_F == 0))
	    //        {
	                 
	                 Snd_out(CHECK_SOUND) ;
	    //        }
			}
	//		else if(SLD_F == 1)    //SLD_F EQU STS_FLAG1.1
	//        else if((yn_mode == 2)&&(SLDBZ_F == 0))  // shoulder is checked 2003-10-31
	        if((old_code_p == finger_check_tbl_j[2])&&(SLDBZ_F == 0))
			{	
			              Snd_out(KEY_SOUND);     //2003-10-31
                          SLDBZ_F = 1 ;
                 
			}
	//		else if((FIXSLD_F == 1) && (FIXSLDBZ_F == 0))
	//        else if((yn_mode == 3)&&(FIXSLDBZ_F == 0))       //2003-10-31
	        if((old_code_p == finger_check_tbl_j[3])&&(FIXSLDBZ_F == 0))
			{
				FIXSLDBZ_F = 1;
			    Snd_out(CHECK_OVER_SOUND);
			}
		}
	}
	if((TIMEUP_F == 1) || (POWER_F == 0))
	{
		cs_tmr_h = 0;
		cs_tmr_l = 0;

	}
}


//*******************************************************
//		shuunou dousa check
//*******************************************************

int	Trcpt_chk(void)
{

	int c;
	c = 0;
//	if(((POWER_F == 0) && (ENDHM_F == 0))|| (EXCHM_F == 1 ))//SYSTERM INIT ENDHM_F=1
    if((POWER_F == 0)&&(yn_mode != 5)||(yn_mode == 4))
	{
		c = 1;
	}
	return(c);
}

⌨️ 快捷键说明

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