Browse Source

feature:完善相关功能

weight-flt
Zhangwen 10 months ago
parent
commit
96316665a9
  1. 3
      .vscode/settings.json
  2. 875
      keilp/stcTTSS2_W5.uvguix.Administrator
  3. 40
      keilp/stcTTSS2_W5.uvoptx
  4. 54
      keilp/stcTTSS2_W5.uvprojx
  5. 7
      source/app/app_config.c
  6. 10
      source/app/app_config.h
  7. 3
      source/app/app_weight.c
  8. 6
      source/app/app_weight.h
  9. 5
      source/app/main.c
  10. 2
      source/app/main.h
  11. 48
      source/app/task_bedalarm.c
  12. 128
      source/app/task_screen.c
  13. 62
      source/app/task_screen.h

3
.vscode/settings.json

@ -15,6 +15,7 @@
"debug_drv.h": "c",
"task_screen_save.h": "c",
"app_screen_save.h": "c",
"msp_eeprom.h": "c"
"msp_eeprom.h": "c",
"app_weight.h": "c"
}
}

875
keilp/stcTTSS2_W5.uvguix.Administrator

File diff suppressed because one or more lines are too long

40
keilp/stcTTSS2_W5.uvoptx

@ -100,9 +100,6 @@
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
@ -149,16 +146,6 @@
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
@ -173,6 +160,7 @@
<FileNumber>1</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\app\app_weight.c</PathWithFileName>
@ -185,6 +173,7 @@
<FileNumber>2</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\app\main.c</PathWithFileName>
@ -197,6 +186,7 @@
<FileNumber>3</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\app\app_config.c</PathWithFileName>
@ -209,6 +199,7 @@
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\app\task_screen.c</PathWithFileName>
@ -221,6 +212,7 @@
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\app\app_screen_save.c</PathWithFileName>
@ -233,6 +225,7 @@
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\app\task_bedalarm.c</PathWithFileName>
@ -253,6 +246,7 @@
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\asp\asp_schain.c</PathWithFileName>
@ -265,6 +259,7 @@
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\asp\asp_lowpower.c</PathWithFileName>
@ -285,6 +280,7 @@
<FileNumber>9</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\cpu\STARTUP.A51</PathWithFileName>
@ -297,6 +293,7 @@
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\cpu\stc_8_delay.c</PathWithFileName>
@ -317,6 +314,7 @@
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\msp\uart\msp_uartN.c</PathWithFileName>
@ -329,6 +327,7 @@
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\msp\msp_time2.c</PathWithFileName>
@ -341,6 +340,7 @@
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\msp\uart\msp_uart1.c</PathWithFileName>
@ -353,6 +353,7 @@
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\msp\msp_iicMx.c</PathWithFileName>
@ -365,6 +366,7 @@
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\msp\msp_eeprom.c</PathWithFileName>
@ -377,6 +379,7 @@
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\msp\msp_adc.c</PathWithFileName>
@ -397,6 +400,7 @@
<FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\bsp\TTSSbsp\bsp_config.c</PathWithFileName>
@ -409,6 +413,7 @@
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\bsp\bsp_led.c</PathWithFileName>
@ -421,6 +426,7 @@
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\bsp\bsp_cs1232.c</PathWithFileName>
@ -441,6 +447,7 @@
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\ctask\TTSS_task.c</PathWithFileName>
@ -453,6 +460,7 @@
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\ctask\TTSS_tick.c</PathWithFileName>
@ -465,6 +473,7 @@
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\ctask\TTSS_time_stc.c</PathWithFileName>
@ -485,6 +494,7 @@
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\tpc\tpc_road.c</PathWithFileName>
@ -505,6 +515,7 @@
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\clib\c_lib.c</PathWithFileName>
@ -517,6 +528,7 @@
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\clib\c_delay.c</PathWithFileName>
@ -537,6 +549,7 @@
<FileNumber>26</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\debug\cc_as_stc01_main.ini</PathWithFileName>
@ -549,6 +562,7 @@
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<Focus>1</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\source\debug\debug_drv.c</PathWithFileName>

54
keilp/stcTTSS2_W5.uvprojx

@ -10,7 +10,6 @@
<TargetName>STC8H3K64S2</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STC8H3K64S4 Series</Device>
@ -124,6 +123,47 @@
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
<Simulator>
<UseSimulator>1</UseSimulator>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>1</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>1</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
<RestoreSysVw>1</RestoreSysVw>
</Simulator>
<Target>
<UseTarget>0</UseTarget>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>0</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>0</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<RestoreTracepoints>1</RestoreTracepoints>
<RestoreSysVw>1</RestoreSysVw>
</Target>
<RunDebugAfterBuild>0</RunDebugAfterBuild>
<TargetSelection>-1</TargetSelection>
<SimDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
</SimDlls>
<TargetDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
<Driver></Driver>
</TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
@ -177,14 +217,12 @@
<Mx51P>0</Mx51P>
<hadXRAM2>0</hadXRAM2>
<uocXram2>0</uocXram2>
<hadXRAM3>0</hadXRAM3>
<ModC2>0</ModC2>
<ModH2>0</ModH2>
<Mdu_R515>0</Mdu_R515>
<Mdu_F120>0</Mdu_F120>
<Psoc>0</Psoc>
<hadIROM2>0</hadIROM2>
<hadIROM3>0</hadIROM3>
<ModSmx2>0</ModSmx2>
<cBanks>0</cBanks>
<xBanks>0</xBanks>
@ -254,16 +292,6 @@
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</IROM512>
<XRA513>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRA513>
<IROM513>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</IROM513>
</OnChipMemories>
</Target51Misc>
<C51>

7
source/app/app_config.c

@ -40,16 +40,19 @@ void L3_reg_reset(void)
R.beep_startime = 0;
//离床报警开启标志
R.LeaveForbid_flag = 0;
R.LeaveForbid_flag = LeaveForbid_OFF;
// 手动解除报警标志
R.ForbidDelate_flag = 0;
// 屏幕按键按下标志
R.ScrTouch_flag = 0;
R.ScrTouch_flag = 1;
// 记录每次屏幕按下时间
R.ScrTouch_time = 0;
//离床报警参考重量值
R.Weight_Ref = 0;
}

10
source/app/app_config.h

@ -15,7 +15,7 @@
#define POWER_NORMAL 0
#define POWER_LOW 1
#define LeaveForbid_OPEN 1 //1 打开报警,0 不打开
#define LeaveForbid_OPEN 1 //1 打开,0 不打开
#define LeaveForbid_OFF 0
// #define RFID_FREE_NO 0x00FA
@ -199,9 +199,7 @@ typedef struct global_register
U16 sensor_adc[4];
U16 kgx10_out;
U16 adc16;
U16 last;
U16 differ;
} weight;
//电量
@ -237,6 +235,12 @@ typedef struct global_register
//屏幕按键按下时间
U32 ScrTouch_time;
// 校准index
U8 calib_index;
// 校准重量
U16 calib_kg;
} GlobalRegister;
extern GlobalRegister R;

3
source/app/app_weight.c

@ -138,7 +138,8 @@ void L3_task_weight_handler(TS_TASK_weight_ *s)
*/
s->slow = 0;
s->zero = 0;s->kgx10_zero = 0;
s->zero = 0;
s->kgx10_zero = 0;
printfs(" L3_task_weight_handler ");
L2_task_go(D_task_WEIGHT_get);

6
source/app/app_weight.h

@ -158,14 +158,14 @@ typedef struct
vU32 sum32;
vU32 sum32b;
vU32 out6;
vU32 t32a,t32b;
vU32 t32a,t32b; //计算重量所用参数
/// ts_weight_sheet_
u8 slow;
u8 zero;
u8 pp;
vU16 kgx10;///计算出来的重量
vU16 kgx10_zero;///
vU16 kgx10_out;///
vU16 kgx10_zero;/// 重量零点值
vU16 kgx10_out;/// 串口对外输出的重量数值,受kgx10_zero影响: s->kgx10_out = s->kgx10 - s->kgx10_zero;
}TS_TASK_weight_;
extern TS_TASK_weight_ tst_weight;

5
source/app/main.c

@ -101,6 +101,7 @@ void main(void)
L0_main_init();
L3_task_weight_init();
L3_task_screen_init();
L3_task_bed_alarm_init();
TTSS_run_every_init(s_nos_tick.stamp,10);
@ -112,7 +113,7 @@ void main(void)
{
s_nos_tick.t1s_heartbeat = 0;
// L1_uartD_uc('.');
// D_LED2_REV();
// D_LED1_REV();
}
if((tpc_flag = L2_debug_ONcomand()))
@ -131,6 +132,8 @@ void main(void)
L3_task_screen_handler(&_s_task_screen);
L3_task_bed_alarm_handler(&_s_task_bed_alarm);
}
}

2
source/app/main.h

@ -92,6 +92,8 @@
#include "bsp_pt100x.h"
#include "app_weight.h"
#include "task_screen.h"
#include "task_bedalarm.h"
#include "app_config.h"
//////////////////////////////////////////////////////////////////

48
source/app/task_bedalarm.c

@ -13,6 +13,8 @@
#include "task_bedalarm.h"
#include "app_config.h"
#include "../msp/uart/msp_uart1.h"
#include "../bsp/TTSSbsp/bsp_config.h"
S_TASK_Bed_ALARM _s_task_bed_alarm;
@ -38,34 +40,56 @@ void L3_task_bed_alarm_handler(S_TASK_Bed_ALARM *s)
// }
//判定是否触发报警
TTSS_Task_step(D_task_ALARM_JUDGE):
R.weight.differ = R.Weight_Ref - 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);
}
R.weight.differ = R.Weight_Ref - R.weight.kgx10_out;
//放在该task的第二步
if(R.LeaveForbid_flag == LeaveForbid_OPEN)
{ //触发报警 //取绝对值abs();
if( abs(R.weight.differ) > 50 ) //&& R.beep != beep_on R.weight.differ
{
L0_uart1_str("R.weight.differ:");
L0_uart1_ushex(abs(R.weight.differ));
L0_uart1_0d0a();
L0_uart1_str("R.Weight_Ref:");
L0_uart1_ushex(R.Weight_Ref);
L0_uart1_0d0a();
R.beep = beep_on;
D_LED1_ON();
L0_uart1_str("Enter1->");
L0_uart1_0d0a();
R.beep_startime = D_sys_now;
L2_task_go_Tdelay(D_task_ALARM_DELETE, D_Tdelay_200ms);
}
//未触发报警
L2_task_go_Tdelay(D_task_ALARM_JUDGE, 0);
}
else
L2_task_go_Tdelay(D_task_ALARM_JUDGE, D_Tdelay_200ms);
//判定是否解除报警
TTSS_Task_step(D_task_ALARM_DELETE):
L0_uart1_str("Jump1Jump1Jump1->");
L0_uart1_0d0a();
//手动解除
// if(R.ForbidDelate_flag == 1)
// {
// R.beep = beep_on;
// R.beep_startime = 0;
// R.LeaveForbid_flag = LeaveForbid_OFF; 应在按键按下时,操作beep还和置位R.LeaveForbid_flag = LeaveForbid_OFF
// R.LeaveForbid_flag = LeaveForbid_OFF; 应在解除按键按下时,操作beep还和置位R.LeaveForbid_flag = LeaveForbid_OFF
// }
//超时解除 //放在该task的第一步
if(D_sys_now - R.beep_startime > D_COUNT_JIFFIES(30000))
if(D_sys_now - R.beep_startime > D_COUNT_JIFFIES(5000)) //5000 5秒 30000 30秒
{
R.beep = beep_off;
L0_uart1_str("Jump1->");
L0_uart1_0d0a();
D_LED1_OFF();
R.beep_startime = 0;
R.LeaveForbid_flag = LeaveForbid_OFF;
L2_task_go_Tdelay(D_task_ALARM_JUDGE, D_Tdelay_200ms);
}
L2_task_go_Tdelay(D_task_ALARM_JUDGE, 0);
else
L2_task_go_Tdelay(D_task_ALARM_DELETE, D_Tdelay_200ms);
TTSS_Task_end();
}

128
source/app/task_screen.c

@ -9,21 +9,31 @@
S_TASK_SCREEN _s_task_screen;
// SCRSetValPkg scrSetValPkg =
// {
// 0xA5, 0x5A, //帧头
// 0x1C, //长度
// 0x82, //指令
// 0x02, 0xA1, //起始地址
// 0x00, 0x00, //体重
// 0x00, 0x00, //电量
// 0x00, 0x00, //网络状态
// 0x00, 0x00, //单位标志
// 0x00, 0x00, //语言标志
// 0x00, 0x00, //蜂鸣器状态
// 0x00, 0x00, //
// 0x00, 0x00, //离床报警标志
// 0x00, 0x00, //
// 0x1C, 0x78, //CRC
// };
SCRSetValPkg scrSetValPkg =
{
0xA5, 0x5A, //帧头
0x1C, //长度
0x07, //长度
0x82, //指令
0x01, 0x1E, //起始地址
0x02, 0xA1, //起始地址
0x00, 0x00, //体重
0x00, 0x00, //电量
0x00, 0x00, //网络状态
0x00, 0x00, //单位标志
0x00, 0x00, //语言标志
0x00, 0x00, //蜂鸣器状态
0x00, 0x00, //
0x00, 0x00, //离床报警标志
0x00, 0x00, //
0x1C, 0x78, //CRC
};
@ -69,23 +79,33 @@ void L3_task_screen_handler(S_TASK_SCREEN *s)
// L0_uart1_str("_s_task_screen.task.sh: ");
// L0_uart1_uchex(_s_task_screen.task.sh);
// L0_uart1_0d0a();
TTSS_Task_init():
TTSS_Task_init():
L2_task_go(D_task_RS485_SEND_BEFORE);
//发送前
TTSS_Task_step(D_task_RS485_SEND_BEFORE):
//检测功耗模式
ScreenPingOff_judge();
if(R.ScrTouch_flag == 0)// if (s->power_mode == POWER_LOW)
{
//发送熄屏指令
L1_uart1_Array((U8 *)&scrPingOffPkg, sizeof(scrPingOffPkg));
}
else if(R.ScrTouch_flag == 1)
// 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)
{
//发送亮屏指令
L1_uart1_Array((U8 *)&scrPingOnPkg, sizeof(scrPingOnPkg));
s->power_mode = R.power_mode;
if(R.ScrTouch_flag == 0) // if (s->power_mode == POWER_LOW)
{
//发送熄屏指令
L1_uart1_Array((U8 *)&scrPingOffPkg, sizeof(scrPingOffPkg));
}
else if(R.ScrTouch_flag == 1)
{
//发送亮屏指令
L1_uart1_Array((U8 *)&scrPingOnPkg, sizeof(scrPingOnPkg));
}
}
L2_task_go_Tdelay(D_task_RS485_SEND, D_Tdelay_400ms);
//发送
TTSS_Task_step(D_task_RS485_SEND):
@ -113,47 +133,51 @@ void constructor_scr_pkg()
// L0_uart1_0d0a();
if(R.danwei == KG)
{
scrSetValPkg.buf.weight_kgx100[0] = (R.weight.kgx10_out * 10) >> 8 & 0xFF;
scrSetValPkg.buf.weight_kgx100[1] = (R.weight.kgx10_out * 10) >> 0 & 0xFF;
scrSetValPkg.weight_kgx100[0] = (R.weight.kgx10_out * 10) >> 8 & 0xFF;
scrSetValPkg.weight_kgx100[1] = (R.weight.kgx10_out * 10) >> 0 & 0xFF;
}
else if(R.danwei == lb) //1kg = 2.20462262磅
{
scrSetValPkg.buf.weight_kgx100[0] = (R.weight.kgx10_out * 22) >> 8 & 0xFF;
scrSetValPkg.buf.weight_kgx100[1] = (R.weight.kgx10_out * 22) >> 0 & 0xFF;
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_0d0a();
scrSetValPkg.buf.dl[0] = R.dl >> 8 & 0xFF;
scrSetValPkg.buf.dl[1] = R.dl >> 0 & 0xFF;
// 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.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.beep[0] = R.beep >> 8 & 0xFF;
scrSetValPkg.buf.beep[1] = R.beep >> 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;
// 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, 21);
CRC = CRC_16(((U8 *)&scrSetValPkg) + 3, 5);
scrSetValPkg.crc[1] = CRC;
scrSetValPkg.crc[0] = CRC >> 8;
}
// 屏幕回传协议解析
// 屏幕回传协议解析 A5 5A 07 83 00 01 02 22 00 00
void parse_screen_pkg()
{
SCReturnPkg *p = (SCReturnPkg *) ts_Urec[D_UART1].reg;
SCReturnPkg *p = (SCReturnPkg *) ts_Urec[D_UART1].sp;
// p->ocr = p->buf[p->num[0] << 8 | p->num[1]];
if(p->head[0] == 0xA5 && p->head[1] == 0x5A/*count_ocr() */)
L1_uart1_Array((U8 *)&p, sizeof(p));
if(p->head[0] == 0xA5 && p->head[1] == 0x5A/*count_ocr()*/)
{
if(p->cmd == 0x83)
{
//L0_uart1_str("Enter1->:");
// L0_uart1_0d0a();
R.ScrTouch_flag = 1;
R.power_mode = POWER_NORMAL;
R.ScrTouch_time = D_sys_now; //2024.9.13 15:04:59
// 按钮
if(p->start_addr[0] == 0x06)
@ -169,27 +193,33 @@ void parse_screen_pkg()
break;
case 0xD3://离床报警
R.LeaveForbid_flag = LeaveForbid_OPEN;//按键按下时,就置标志位R.LeaveForbid_flag == LeaveForbid_OPEN和获取参考点位的重量。
R.Weight_Ref = tst_weight.kgx10; // 参考重量 weight_ref = 当前重量
R.Weight_Ref = tst_weight.kgx10; // 参考重量 weight_ref = 当前重量
L0_uart1_str("LeaveForbid_OPEN!!!");
L0_uart1_0d0a();
break;
case 0xD4://保存
screen_save_push(tst_weight.kgx10);// register1 = tst_weight.kgx10;
break;
case 0xD5://校准菜单按钮
scrSetValPkg.buf.ui[1] = p->Data[1];
// scrSetValPkg.buf.ui[1] = p->Data[1];
break;
case 0xD6://语言切换
scrSetValPkg.buf.language[1] = p->Data[1];
// scrSetValPkg.buf.language[1] = p->Data[1];
break;
case 0xD7://重量单位切换
R.danwei = p->Data[1];
break;
case 0xD8://查看历史数据
L0_Iap_Read_array(EEPROM_WEIGHT_ADDR, screen_save_arr,sizeof(screen_save_arr));//1先从eeprom中读出数组
// 判断头尾
// 2推送到屏幕
break;
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[pd485->buf[0]].adc = tst_weight.adc32;////使用当前采样值
case 0xD9://校准确认 buf[index] 放入寄存器,写入eeprom
// ts_weight_SPara.ts_WPoint[pd485->buf[0]].kg = D_2uc_u16(pd485->buf[1],pd485->buf[2]);
ts_weight_SPara.ts_WPoint[pd485->buf[R.calib_index]].kg = R.calib_kg;
ts_weight_SPara.ts_WPoint[pd485->buf[R.calib_index]].adc = tst_weight.adc32;//使用当前采样值
L4_WPoint_out();
//写入IAP
L3_R_2_S();
@ -205,10 +235,10 @@ void parse_screen_pkg()
switch (p->start_addr[1])
{
case 0xA1://校准点
// register2 = p->data[1];
R.calib_index = p->Data[1];
break;
case 0xA2://校准体重
// register3 = p->data[1];
R.calib_kg = p->Data[0] << 8 & p->Data[1];
break;
default:
break;
@ -238,8 +268,8 @@ U16 CRC_16(U8 *pMsg, U16 Len)
// 180s无操作 判定函数
void ScreenPingOff_judge(void)
{
U32 Ntime = D_sys_now;
if( Ntime - R.ScrTouch_time > D_COUNT_JIFFIES(180000))
U32 Nowtime = D_sys_now;
if( Nowtime - R.ScrTouch_time > D_COUNT_JIFFIES(5000)) //180000 180秒
{
R.ScrTouch_flag = 0;
R.power_mode = POWER_LOW;

62
source/app/task_screen.h

@ -10,46 +10,48 @@ typedef struct _s_task_screen
U8 power_mode;
} S_TASK_SCREEN;
// typedef struct
// {
// U8 head[2];
// U8 num;
// U8 cmd;
// U8 start_addr[2];
// U8 buf[D_send3_max];
// U8 crc[2];
// } SCRSetValPkg;
// A5 5A 05 82 02 A1 03 E8 0C FA
typedef struct
{
U8 head[2];
U8 num;
U8 cmd;
U8 start_addr[2];
struct
{
//重量
U8 weight_kgx100[2];
//电量
U8 dl[2];
//网络状态
U8 net_status[2];
//单位
U8 danwei[2];
//语言
U8 language[2];
//蜂鸣器状态
U8 beep[2];
//界面
U8 ui[2];
//离床报警标志
U8 LeaveForbid_flag[2];
//重量保持标志
U8 WeightKeep_flag[2];
} buf;
U8 weight_kgx100[2];
U8 crc[2];
} SCRSetValPkg;
// typedef struct
// {
// U8 head[2];
// U8 num;
// U8 cmd;
// U8 start_addr[2];
// struct
// {
// //重量
// U8 weight_kgx100[2];
// //电量
// U8 dl[2];
// //网络状态
// U8 net_status[2];
// //单位
// U8 danwei[2];
// //语言
// U8 language[2];
// //蜂鸣器状态
// U8 beep[2];
// //界面
// U8 ui[2];
// //离床报警标志
// U8 LeaveForbid_flag[2];
// //重量保持标志
// U8 WeightKeep_flag[2];
// } buf;
// U8 crc[2];
// } SCRSetValPkg;
// A5 5A 08 83 00 00 01 02 22 00 00
typedef struct
{

Loading…
Cancel
Save