📄 trmprc.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 + -