Browse Source

feature:屏幕程序配置完成: 1.ui配置完成 2.板卡适配ui完成

weight-flt
Zhangwen 9 months ago
parent
commit
a925608e94
  1. 6
      source/app/app_config.h
  2. 166
      source/app/task_screen.c

6
source/app/app_config.h

@ -26,6 +26,9 @@
#define KG 0 //0 KG; 1 磅
#define lb 1
#define Chinese 0 //0 Chinese 1 English
#define English 1
#define beep_on 1 //1 开启,0 关闭
#define beep_off 0
@ -211,6 +214,9 @@ typedef struct global_register
//单位
U8 danwei;
//单位
U8 Language;
//蜂鸣器
U8 beep;

166
source/app/task_screen.c

@ -8,7 +8,7 @@
S_TASK_SCREEN _s_task_screen;
// 实时重量
// 实时重量 A5 5A 07 82 02 A1 00 C8 0D D2
SCRSetValPkg scrSetValPkg =
{
0xA5, 0x5A, //帧头
@ -79,6 +79,82 @@ SCRControlPkg scrBeepOnPkg = {
0x70, 0xDE, // CRC
};
// A5 5A 08 82 07 A0 01 00 00 D8 39 清除图标0
SCReturnPkg scrPkgIcon0ClearPkg = {
0xA5, 0x5A,
0x08, //指令字节长度(不含帧头)
0x82, //指令
0x07, 0xA0, //变量存储地址
0x01, //数据字长度
0x00,0x00, // 数据内容
0xD8,0x39, // CRC
};
// A5 5A 08 82 07 A1 01 00 00 D9 C5 清除图标1
SCReturnPkg scrPkgIcon1ClearPkg = {
0xA5, 0x5A,
0x08, //指令字节长度(不含帧头)
0x82, //指令
0x07, 0xA1, //变量存储地址
0x01, //数据字长度
0x00,0x00, // 数据内容
0xD9,0xC5, // CRC
};
// A5 5A 08 82 07 A2 01 00 00 D9 81 清除图标2
SCReturnPkg scrPkgIcon2ClearPkg = {
0xA5, 0x5A,
0x08, //指令字节长度(不含帧头)
0x82, //指令
0x07, 0xA2, //变量存储地址
0x01, //数据字长度
0x00,0x00, // 数据内容
0xD9,0x81, // CRC
};
// A5 5A 08 82 06 D9 01 00 00 FC A5 清除图标确定
SCReturnPkg scrPkgIconYClearPkg = {
0xA5, 0x5A,
0x08, //指令字节长度(不含帧头)
0x82, //指令
0x06, 0xD9, //变量存储地址
0x01, //数据字长度
0x00,0x00, // 数据内容
0xFC,0xA5, // CRC
};
// A5 5A 08 82 06 D3 01 00 00 FF 7D 清除报警图标
SCReturnPkg scrPkgAlarmClearPkg = {
0xA5, 0x5A,
0x08, //指令字节长度(不含帧头)
0x82, //指令
0x06, 0xD3, //变量存储地址
0x01, //数据字长度
0x00,0x00, // 数据内容
0xFF,0x7D, // CRC
};
// A5 5A 08 82 06 D7 01 00 00 FE 4D 切换单位
SCReturnPkg scrPkgUnitSwitchPkg = {
0xA5, 0x5A,
0x08, //指令字节长度(不含帧头)
0x82, //指令
0x06, 0xD7, //变量存储地址
0x01, //数据字长度
0x00,0x00, // 数据内容
0xFE,0x4D, // CRC
};
// A5 5A 08 82 06 D6 01 00 00 FF B1 切换中英文
SCReturnPkg scrPkgLanguageSwitchPkg = {
0xA5, 0x5A,
0x08, //指令字节长度(不含帧头)
0x82, //指令
0x06, 0xD6, //变量存储地址
0x01, //数据字长度
0x00,0x00, // 数据内容
0xFF,0xB1, // CRC
};
//=============================================
void L3_task_screen_init(void)
{
@ -159,8 +235,10 @@ void constructor_scr_pkg()
scrSetValPkg.weight_kgx100[0] = (R.weight.kgx10_out * 22) >> 8 & 0xFF;
scrSetValPkg.weight_kgx100[1] = (R.weight.kgx10_out * 22) >> 0 & 0xFF;
}
// L0_uart1_str("scrSetValPkg.buf.dl: ");
// L0_uart1_us(R.dl);
// L0_uart1_str("scrSetValPkg.weight_kgx100= ");
// L0_uart1_uchex(scrSetValPkg.weight_kgx100[0]);
// L0_uart1_uchex(scrSetValPkg.weight_kgx100[1]);
// L0_uart1_0d0a();
// scrSetValPkg.buf.dl[0] = R.dl >> 8 & 0xFF;
@ -200,12 +278,21 @@ void constructor_weightsave_pkg()
scrSaveValPkg.crc[0] = CRC >> 8;
}
// 屏幕回传协议解析 A55A 07 83 0001 0222 0000
// 屏幕回传协议解析 A55A 07 83 0000 01 0222 0000
// A55A 08 83 06D2 01 0001 3E90
void parse_screen_pkg()
{
SCReturnPkg *p = (SCReturnPkg *) ts_Urec[D_UART1].sp;
// p->ocr = p->buf[p->num[0] << 8 | p->num[1]];
L1_uart1_Array((U8 *)&p, sizeof(p));
L0_uart1_str("ts_Urec[D_UART1].sp = ");
L1_uart1_Array(p, sizeof(*p));
L0_uart1_0d0a();
// L0_uart1_str("sizeof(*p) = ");
// L0_uart1_ushex(sizeof(*p));
// L0_uart1_0d0a();
// L0_uart1_str("sizeof(&p) = ");
// L0_uart1_ushex(sizeof(&p));
if(p->head[0] == 0xA5 && p->head[1] == 0x5A/*count_ocr()*/)
{
if(p->cmd == 0x83)
@ -221,34 +308,61 @@ void parse_screen_pkg()
case 0xD0://菜单
break;
case 0xD1://Home
if(p->Data[1] == 1)
{
//返回键值为1时,代表从校准界面返回,清除图标
L1_uart1_Array((U8 *)&scrPkgIcon0ClearPkg, sizeof(scrPkgIcon0ClearPkg));
L1_uart1_Array((U8 *)&scrPkgIcon1ClearPkg, sizeof(scrPkgIcon1ClearPkg));
L1_uart1_Array((U8 *)&scrPkgIcon2ClearPkg, sizeof(scrPkgIcon2ClearPkg));
L1_uart1_Array((U8 *)&scrPkgIconYClearPkg, sizeof(scrPkgIconYClearPkg));
}
break;
case 0xD2://清零
tst_weight.kgx10_zero = tst_weight.kgx10;
if(p->Data[1] == 1)
{
tst_weight.kgx10_zero = tst_weight.kgx10;
}
break;
case 0xD3://离床报警
case 0xD3://离床报警
if(R.LeaveForbid_flag != LeaveForbid_OPEN)
{
R.LeaveForbid_flag = LeaveForbid_OPEN;//按键按下时,就置标志位R.LeaveForbid_flag == LeaveForbid_OPEN和获取参考点位的重量。
R.Weight_Ref = tst_weight.kgx10; // 参考重量 weight_ref = 当前重量
R.LeaveForbid_flag = LeaveForbid_OPEN; //按键按下时,就置标志位R.LeaveForbid_flag == LeaveForbid_OPEN和获取参考点位的重量。
R.Weight_Ref = tst_weight.kgx10; //参考重量 weight_ref = 当前重量
L0_uart1_str("LeaveForbid_OPEN!!!");
L0_uart1_0d0a();
}
else if (R.LeaveForbid_flag == LeaveForbid_OPEN)
{
R.LeaveForbid_flag = LeaveForbid_OFF;
R.LeaveForbid_flag = LeaveForbid_OFF;
//A5 5A 08 83 06 D3 01 00 00 FE AC手动解除报警时,清除图标
L1_uart1_Array((U8 *)&scrPkgAlarmClearPkg, sizeof(scrPkgAlarmClearPkg));
}
break;
case 0xD4://保存
screen_save_push(tst_weight.kgx10);// register1 = tst_weight.kgx10;
if(p->Data[1] == 1)
{
// screen_save_push(tst_weight.kgx10);
screen_save_push(tst_weight.kgx10_out);
}
break;
case 0xD5://校准菜单按钮
// scrSetValPkg.buf.ui[1] = p->Data[1];
break;
case 0xD6://语言切换
// scrSetValPkg.buf.language[1] = p->Data[1];
R.Language = (R.Language == Chinese)? English : Chinese;
if( R.Language == Chinese )
{
// 切换回Chinese图标
L1_uart1_Array((U8 *)&scrPkgLanguageSwitchPkg, sizeof(scrPkgLanguageSwitchPkg));
}
break;
case 0xD7://重量单位切换
R.danwei = (R.danwei == KG)? lb : KG;
if( R.danwei == KG )
{
// 切换回KG单位图标
L1_uart1_Array((U8 *)&scrPkgUnitSwitchPkg, sizeof(scrPkgUnitSwitchPkg));
}
break;
case 0xD8://查看历史数据
// 1.从eeprom中读出数组
@ -272,7 +386,7 @@ void parse_screen_pkg()
L4_WPoint_out();
// 写入IAP
L3_R_2_S();
L0_Iap_Program_array(D_EEP_BASE,D_struct2U8(S),D_S_LEN);
L0_Iap_Program_array(D_EEP_BASE,D_struct2U8(S),D_S_LEN);
break;
default:
break;
@ -285,27 +399,27 @@ void parse_screen_pkg()
{
case 0xA0://校准点
R.calib_index = 0;
// L0_uart1_str("R.calib_index =");
// L0_uart1_uchex(R.calib_index);
// L0_uart1_0d0a();
L0_uart1_str("R.calib_index =");
L0_uart1_uchex(R.calib_index);
L0_uart1_0d0a();
break;
case 0xA1://校准点
R.calib_index = 1;
// L0_uart1_str("R.calib_index =");
// L0_uart1_uchex(R.calib_index);
// L0_uart1_0d0a();
L0_uart1_str("R.calib_index =");
L0_uart1_uchex(R.calib_index);
L0_uart1_0d0a();
break;
case 0xA2://校准点
R.calib_index = 2;
// L0_uart1_str("R.calib_index =");
// L0_uart1_uchex(R.calib_index);
// L0_uart1_0d0a();
L0_uart1_str("R.calib_index =");
L0_uart1_uchex(R.calib_index);
L0_uart1_0d0a();
break;
case 0xA3://校准体重
R.calib_kg_x100 = (U16)p->Data[0] << 8 | p->Data[1];
// L0_uart1_str("R.calib_kg_x100 = ");
// L0_uart1_ushex(R.calib_kg_x100);
// L0_uart1_0d0a();
L0_uart1_str("R.calib_kg_x100 = ");
L0_uart1_ushex(R.calib_kg_x100);
L0_uart1_0d0a();
break;
default:
break;
@ -344,7 +458,7 @@ U16 CRC_16(U8 *pMsg, U16 Len)
void ScreenPingOff_judge()
{
U32 Nowtime = D_sys_now;
if( Nowtime - R.ScrTouch_time > D_COUNT_JIFFIES(30000)) //180000 180秒 30000 30秒
if( Nowtime - R.ScrTouch_time > D_COUNT_JIFFIES(60000)) //180000 180秒 30000 30秒 60000 60秒
{
R.ScrTouch_flag = 0;
R.power_mode = POWER_LOW;

Loading…
Cancel
Save