|
|
@ -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; |
|
|
|