|
|
@ -67,7 +67,10 @@ SCRControlPkg scrPingOnPkg = { |
|
|
|
0x71, 0xAC, // CRC
|
|
|
|
}; |
|
|
|
|
|
|
|
//蜂鸣器指令A5 5A 05 80 02 C8 70 DE
|
|
|
|
//蜂鸣器指令
|
|
|
|
// A5 5A 05 80 02 32 F0 9D 0.5s
|
|
|
|
// A5 5A 05 80 02 C8 70 DE 2s
|
|
|
|
// A5 5A 05 80 02 FF 31 08 2.55s
|
|
|
|
SCRControlPkg scrBeepOnPkg = { |
|
|
|
0xA5, 0x5A, |
|
|
|
0x05, //长度
|
|
|
@ -100,12 +103,6 @@ void L3_task_screen_handler(S_TASK_SCREEN *s) |
|
|
|
TTSS_Task_step(D_task_RS485_SEND_BEFORE): |
|
|
|
//检测功耗模式
|
|
|
|
ScreenPingOff_judge(); |
|
|
|
// L0_uart1_str("R.power_mode: ");
|
|
|
|
// L0_uart1_uchex(R.power_mode);
|
|
|
|
// L0_uart1_0d0a();
|
|
|
|
// L0_uart1_str("s->power_mode : ");
|
|
|
|
// L0_uart1_uchex(s->power_mode );
|
|
|
|
// L0_uart1_0d0a();
|
|
|
|
|
|
|
|
//检测到模式转变
|
|
|
|
if(s->power_mode != R.power_mode) |
|
|
@ -140,7 +137,7 @@ void L3_task_screen_handler(S_TASK_SCREEN *s) |
|
|
|
L2_task_go_Tdelay(D_task_RS485_SEND_BEFORE, D_Tdelay_400ms); |
|
|
|
//发送后
|
|
|
|
// TTSS_Task_step(D_task_RS485_SEND_AFTER):
|
|
|
|
// L2_task_go_Tdelay(D_task_RS485_SEND, D_Tdelay_100ms);
|
|
|
|
// L2_task_go_Tdelay(D_task_RS485_SEND, D_Tdelay_100ms);
|
|
|
|
|
|
|
|
TTSS_Task_end(); |
|
|
|
} |
|
|
@ -165,27 +162,28 @@ void constructor_scr_pkg() |
|
|
|
// L0_uart1_str("scrSetValPkg.buf.dl: ");
|
|
|
|
// L0_uart1_us(R.dl);
|
|
|
|
// L0_uart1_0d0a();
|
|
|
|
// scrSetValPkg.buf.dl[0] = R.dl >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.dl[1] = R.dl >> 0 & 0xFF;
|
|
|
|
|
|
|
|
// scrSetValPkg.buf.net_status[0] = R.net_status >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.net_status[1] = R.net_status >> 0 & 0xFF;
|
|
|
|
//
|
|
|
|
// scrSetValPkg.buf.danwei[0] = R.danwei >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.danwei[1] = R.danwei >> 0 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.dl[0] = R.dl >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.dl[1] = R.dl >> 0 & 0xFF;
|
|
|
|
|
|
|
|
// scrSetValPkg.buf.beep[0] = R.beep >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.beep[1] = R.beep >> 0 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.net_status[0] = R.net_status >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.net_status[1] = R.net_status >> 0 & 0xFF;
|
|
|
|
//
|
|
|
|
// scrSetValPkg.buf.danwei[0] = R.danwei >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.danwei[1] = R.danwei >> 0 & 0xFF;
|
|
|
|
|
|
|
|
// scrSetValPkg.buf.LeaveForbid_flag[0] = R.LeaveForbid_flag >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.LeaveForbid_flag[1] = R.LeaveForbid_flag >> 0 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.beep[0] = R.beep >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.beep[1] = R.beep >> 0 & 0xFF;
|
|
|
|
|
|
|
|
// scrSetValPkg.buf.LeaveForbid_flag[0] = R.LeaveForbid_flag >> 8 & 0xFF;
|
|
|
|
// scrSetValPkg.buf.LeaveForbid_flag[1] = R.LeaveForbid_flag >> 0 & 0xFF;
|
|
|
|
|
|
|
|
CRC = CRC_16(((U8 *)&scrSetValPkg) + 3, 5); |
|
|
|
scrSetValPkg.crc[1] = CRC; |
|
|
|
scrSetValPkg.crc[0] = CRC >> 8; |
|
|
|
} |
|
|
|
|
|
|
|
//构造历史重量数据协议包
|
|
|
|
// 构造历史重量数据协议包
|
|
|
|
void constructor_weightsave_pkg() |
|
|
|
{ |
|
|
|
U16 CRC = 0; |
|
|
@ -202,7 +200,7 @@ void constructor_weightsave_pkg() |
|
|
|
scrSaveValPkg.crc[0] = CRC >> 8; |
|
|
|
} |
|
|
|
|
|
|
|
// 屏幕回传协议解析 A5 5A 07 83 00 01 02 22 00 00
|
|
|
|
// 屏幕回传协议解析 A55A 07 83 0001 0222 0000
|
|
|
|
void parse_screen_pkg() |
|
|
|
{ |
|
|
|
SCReturnPkg *p = (SCReturnPkg *) ts_Urec[D_UART1].sp; |
|
|
@ -228,10 +226,17 @@ void parse_screen_pkg() |
|
|
|
tst_weight.kgx10_zero = tst_weight.kgx10; |
|
|
|
break; |
|
|
|
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 = 当前重量
|
|
|
|
L0_uart1_str("LeaveForbid_OPEN!!!"); |
|
|
|
L0_uart1_0d0a(); |
|
|
|
L0_uart1_0d0a(); |
|
|
|
} |
|
|
|
else if (R.LeaveForbid_flag == LeaveForbid_OPEN) |
|
|
|
{ |
|
|
|
R.LeaveForbid_flag = LeaveForbid_OFF; |
|
|
|
} |
|
|
|
break; |
|
|
|
case 0xD4://保存
|
|
|
|
screen_save_push(tst_weight.kgx10);// register1 = tst_weight.kgx10;
|
|
|
@ -243,7 +248,7 @@ void parse_screen_pkg() |
|
|
|
// scrSetValPkg.buf.language[1] = p->Data[1];
|
|
|
|
break; |
|
|
|
case 0xD7://重量单位切换
|
|
|
|
R.danwei = p->Data[1]; |
|
|
|
R.danwei = (R.danwei == KG)? lb : KG; |
|
|
|
break; |
|
|
|
case 0xD8://查看历史数据
|
|
|
|
// 1.从eeprom中读出数组
|
|
|
@ -260,12 +265,12 @@ void parse_screen_pkg() |
|
|
|
// 发送pkg
|
|
|
|
L1_uart1_Array((U8 *)&scrSaveValPkg, sizeof(scrSaveValPkg)); |
|
|
|
break; |
|
|
|
case 0xD9://校准确认 buf[index] 放入寄存器,写入eeprom
|
|
|
|
case 0xD9://校准确认
|
|
|
|
// ts_weight_SPara.ts_WPoint[pd485->buf[0]].kg = D_2uc_u16(pd485->buf[1],pd485->buf[2]);
|
|
|
|
ts_weight_SPara.ts_WPoint[R.calib_index].kg = R.calib_kg_x100 / 100; |
|
|
|
ts_weight_SPara.ts_WPoint[R.calib_index].kg = R.calib_kg_x100 / 10; |
|
|
|
ts_weight_SPara.ts_WPoint[R.calib_index].adc = tst_weight.adc32;//使用当前采样值
|
|
|
|
L4_WPoint_out(); |
|
|
|
//写入IAP
|
|
|
|
// 写入IAP
|
|
|
|
L3_R_2_S(); |
|
|
|
L0_Iap_Program_array(D_EEP_BASE,D_struct2U8(S),D_S_LEN); |
|
|
|
break; |
|
|
@ -278,11 +283,29 @@ void parse_screen_pkg() |
|
|
|
{ |
|
|
|
switch (p->start_addr[1]) |
|
|
|
{ |
|
|
|
case 0xA0://校准点
|
|
|
|
R.calib_index = 0; |
|
|
|
// L0_uart1_str("R.calib_index =");
|
|
|
|
// L0_uart1_uchex(R.calib_index);
|
|
|
|
// L0_uart1_0d0a();
|
|
|
|
break; |
|
|
|
case 0xA1://校准点
|
|
|
|
R.calib_index = p->Data[1]; |
|
|
|
R.calib_index = 1; |
|
|
|
// 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();
|
|
|
|
break; |
|
|
|
case 0xA2://校准体重
|
|
|
|
R.calib_kg_x100 = (U16)p->Data[0] << 8 & p->Data[1]; |
|
|
|
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();
|
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
@ -290,6 +313,7 @@ void parse_screen_pkg() |
|
|
|
} |
|
|
|
} |
|
|
|
// 亮屏时回传A5 5A 06 81 01 01 40 79 B8
|
|
|
|
// 给屏幕发送熄屏指令时,回传 A5 5A 06 81 01 01 00 78 48
|
|
|
|
if(p->cmd == 0x81 && p->num_word == 0x40 ) |
|
|
|
{ |
|
|
|
R.ScrTouch_flag = 1; |
|
|
@ -320,7 +344,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秒
|
|
|
|
if( Nowtime - R.ScrTouch_time > D_COUNT_JIFFIES(30000)) //180000 180秒 30000 30秒
|
|
|
|
{ |
|
|
|
R.ScrTouch_flag = 0; |
|
|
|
R.power_mode = POWER_LOW; |
|
|
|