16 changed files with 661 additions and 895 deletions
File diff suppressed because one or more lines are too long
@ -0,0 +1,80 @@ |
|||||
|
////////////////////////////////////////////////////////////////////////////
|
||||
|
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
|
||||
|
///-------------------------------------------------------------------------
|
||||
|
/// @file bsp_drv.c
|
||||
|
/// @brief bsp @ driver config
|
||||
|
///-------------------------------------------------------------------------
|
||||
|
/// @version 1.0
|
||||
|
/// @author CC
|
||||
|
/// @date 20180331
|
||||
|
/// @note cc_AS_stc02
|
||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||
|
|
||||
|
#include "task_bedalarm.h" |
||||
|
#include "app_config.h" |
||||
|
#include "../msp/uart/msp_uart1.h" |
||||
|
|
||||
|
S_TASK_Bed_ALARM _s_task_bed_alarm; |
||||
|
|
||||
|
//=============================================
|
||||
|
void L3_task_bed_alarm_init(void) |
||||
|
{ |
||||
|
L1_task_init(&_s_task_bed_alarm.task); |
||||
|
L3_task_s_go(_s_task_bed_alarm,D_task_init); |
||||
|
} |
||||
|
|
||||
|
#define D_task_STATUS_READ 0x50 |
||||
|
#define D_task_WEIGHT_READ_AGAIN 0x51 |
||||
|
#define D_task_ALARM_DELETE 0x52 |
||||
|
|
||||
|
|
||||
|
void L3_task_bed_alarm_handler(S_TASK_Bed_ALARM *s) |
||||
|
{ |
||||
|
TTSS_Task_init(): |
||||
|
L2_task_go(D_task_STATUS_READ); |
||||
|
//判定是否开启离床报警
|
||||
|
TTSS_Task_step(D_task_STATUS_READ): |
||||
|
// if(R.LeaveForbid_flag == LeaveForbid_OPEN)
|
||||
|
// {
|
||||
|
// R.weight.last = R.weight.kgx10_out * 10; 应该在 按键按下时,就置标志位R.LeaveForbid_flag == LeaveForbid_OPEN和获取参考点位的重量。
|
||||
|
// L2_task_go_Tdelay(D_task_WEIGHT_READ_AGAIN, D_Tdelay_100ms);
|
||||
|
// }
|
||||
|
//判定是否触发报警
|
||||
|
TTSS_Task_step(D_task_WEIGHT_READ_AGAIN): |
||||
|
R.weight.differ = R.weight.last - R.weight.kgx10_out * 10; |
||||
|
//触发报警 //放在该task的第二步
|
||||
|
if(R.weight.differ >= 100) |
||||
|
{ |
||||
|
R.beep = beep_on; |
||||
|
R.beep_startime = D_sys_now; |
||||
|
L2_task_go_Tdelay(D_task_ALARM_DELETE, 0); |
||||
|
} |
||||
|
//未触发报警
|
||||
|
else |
||||
|
{ |
||||
|
R.weight.last = R.weight.kgx10_out * 10; |
||||
|
L2_task_go_Tdelay(D_task_WEIGHT_READ_AGAIN, 0); |
||||
|
} |
||||
|
//判定是否解除报警
|
||||
|
TTSS_Task_step(D_task_ALARM_DELETE): |
||||
|
//手动解除
|
||||
|
// if(R.ForbidDelate_flag == 1)
|
||||
|
// {
|
||||
|
// R.beep = beep_on;
|
||||
|
// R.beep_startime = 0;
|
||||
|
// R.LeaveForbid_flag = LeaveForbid_OFF; 应在按键按下时,操作beep还和置位R.LeaveForbid_flag = LeaveForbid_OFF
|
||||
|
// }
|
||||
|
//超时解除 //放在该task的第一步
|
||||
|
else if(D_sys_now - R.beep_startime > D_COUNT_JIFFIES(30000)) |
||||
|
{ |
||||
|
R.beep = beep_on; |
||||
|
R.beep_startime = 0; |
||||
|
R.LeaveForbid_flag = LeaveForbid_OFF; |
||||
|
} |
||||
|
L2_task_go_Tdelay(D_task_STATUS_READ, 0); |
||||
|
TTSS_Task_end(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,33 @@ |
|||||
|
////////////////////////////////////////////////////////////////////////////
|
||||
|
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
|
||||
|
///-------------------------------------------------------------------------
|
||||
|
/// @file bsp_drv.h
|
||||
|
/// @brief bsp @ driver config
|
||||
|
///-------------------------------------------------------------------------
|
||||
|
/// @version 1.0
|
||||
|
/// @author CC
|
||||
|
/// @date 20180331
|
||||
|
/// @note cc_AS_stc02
|
||||
|
|
||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||
|
|
||||
|
#ifndef _APP_TASK_Bed_Alarm_H |
||||
|
#define _APP_TASK_Bed_Alarm_H |
||||
|
|
||||
|
#include "../ctask/TTSS_task.h" |
||||
|
#include "../clib/c_lib.h" |
||||
|
|
||||
|
|
||||
|
typedef struct _s_task_low_power |
||||
|
{ |
||||
|
TS_task task; |
||||
|
}S_TASK_Bed_ALARM; |
||||
|
|
||||
|
extern S_TASK_Bed_ALARM _s_task_bed_alarm; |
||||
|
|
||||
|
extern void L3_task_bed_alarm_init(void); |
||||
|
extern void L3_task_bed_alarm_handler(S_TASK_Bed_ALARM *s); |
||||
|
|
||||
|
|
||||
|
#endif // #ifndef _APP_TASK_Bed_Alarm_H
|
||||
|
|
@ -0,0 +1,63 @@ |
|||||
|
#include "task_screen_save.h" |
||||
|
|
||||
|
|
||||
|
#define SCREEN_SAVE_LEN 10 |
||||
|
|
||||
|
#define EEPROM_WEIGHT_ADDR 0x100 |
||||
|
|
||||
|
#define HEAD0 0xa3 |
||||
|
#define HEAD1 0xa4 |
||||
|
#define TAIL0 0xa5 |
||||
|
#define TAIL1 0xa6 |
||||
|
|
||||
|
|
||||
|
SCREEN_SAVE screen_save_arr[SCREEN_SAVE_LEN]; |
||||
|
|
||||
|
void screen_save_init() |
||||
|
{ |
||||
|
for(i = 0;i < SCREEN_SAVE_LEN; i++) |
||||
|
{ |
||||
|
screen_save_arr[i].head[0] = HEAD0; |
||||
|
screen_save_arr[i].head[1] = HEAD1; |
||||
|
screen_save_arr[i].kgx10_out = 0; |
||||
|
screen_save_arr[i].available = 0; |
||||
|
screen_save_arr[i].tail[0] = TAIL0; |
||||
|
screen_save_arr[i].tail[1] = TAIL1; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void screen_save_push(U16 weight) |
||||
|
{ |
||||
|
int i = 0; |
||||
|
int free = 0; |
||||
|
// 从eeprom中取出数组
|
||||
|
L0_Iap_Read_array(EEPROM_WEIGHT_ADDR, screen_save_arr,sizeof(screen_save_arr)); |
||||
|
if(screen_save_arr[0].head[0] != HEAD0 || screen_save_arr[0].head[1] != HEAD1 |
||||
|
|| screen_save_arr[0].tail[0] != TAIL0 || screen_save_arr[0].tail[1] != TAIL1) |
||||
|
{ |
||||
|
screen_save_init(); |
||||
|
} |
||||
|
// 遍历寻找空位
|
||||
|
for(i = 0;i < SCREEN_SAVE_LEN; i++) |
||||
|
{ |
||||
|
if(screen_save_arr[i].available =! 1) |
||||
|
{ |
||||
|
free = i; |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
// 当都有数据时
|
||||
|
if(i == SCREEN_SAVE_LEN) |
||||
|
{ |
||||
|
for(i = 0; i < SCREEN_SAVE_LEN-1; i++ ) |
||||
|
{ |
||||
|
screen_save_arr[i] = screen_save_arr[i+1]; |
||||
|
} |
||||
|
free = SCREEN_SAVE_LEN-1; |
||||
|
} |
||||
|
// 放到free位置
|
||||
|
screen_save_arr[free].available = 1; |
||||
|
screen_save_arr[free].kgx10_out = weight; |
||||
|
// 把数组放回eeprom中
|
||||
|
L0_Iap_Program_array(EEPROM_WEIGHT_ADDR, screen_save_arr,sizeof(screen_save_arr)); |
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
#ifndef _APP_TASK_SCREEN_SAVE_H |
||||
|
#define _APP_TASK_SCREEN_SAVE_H |
||||
|
|
||||
|
#include "../bsp/TTSSbsp/bsp_config.h" |
||||
|
|
||||
|
typedef struct |
||||
|
{ |
||||
|
U8 head[2]; |
||||
|
U8 available; |
||||
|
U16 kgx10_out; |
||||
|
U8 tail[2]; |
||||
|
|
||||
|
}SCREEN_SAVE; |
||||
|
|
||||
|
|
||||
|
typedef struct _s_task_screen_save |
||||
|
{ |
||||
|
TS_task task; |
||||
|
}S_TASK_SCREEN_SAVE; |
||||
|
|
||||
|
extern S_TASK_SCREEN_SAVE _s_task_screen_save; |
||||
|
|
||||
|
extern void L3_task_screen_save_init(void); |
||||
|
extern void L3_task_screen_save_handler(S_TASK_Bed_ALARM *s); |
||||
|
|
||||
|
|
||||
|
void screen_save_push(U16 weight); |
||||
|
|
||||
|
|
||||
|
#endif |
Loading…
Reference in new issue