Files
B_Current_Ctrl/APP/monitor_task.c
T
2025-10-14 21:34:28 +08:00

288 lines
5.2 KiB
C

#include "FreeRTOS.h"
#include "cmsis_os.h"
#include "drv_uart.h"
#include "middle/ParsePack.h"
#include "monitor_task.h"
#include "device_task.h"
#include "drv_power.h"
#include "drv_relay.h"
#include "drv_fan.h"
#include "main_task.h"
uint32_T mode;
int32_T bat_type;
int32_T bat_num;
int32_T run_state;
real32_T cmd_current;
real32_T bat_capacity;
uint32_t getParam = 0;
uint32_t NormalTestMode = 0;//0 normal 1 test
uint32_t send_tick = 0;
void StartMonitorTask(void * argument)
{
uint8_t buff[256];
uint16_t len;
init_uart_fifos();
for(;;)
{
osDelay(5);
send_tick++;
//监控任务
//执行UI工作,执行状态监控工作
//len = UART_RX_FIFO_read(&hub_rx, buff, sizeof(buff));
if(len)
{
/*
int rst = -1;
for(int i = 0;i<len;i++)
{
rst = Parser_char(&parser[index], buff[i]);
switch(rst)
{
case 0://设置系统
{
uint32_t cmd;
uint32_t value;
union { uint32_t W; uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
cmd = src.W;
src.B[0] = parser.buff[4];
src.B[1] = parser.buff[5];
src.B[2] = parser.buff[6];
src.B[3] = parser.buff[7];
value = src.W;
if(cmd != 0)
{
NormalTestMode = 1;
}
switch(cmd)
{
case 0:
{
NormalTestMode = 0x00;//normal
}break;
case 1:
{
power_set(0,value);
}break;
case 2:
{
relay_set(0,value);
}break;
case 3:
{
relay_set(1,value);
}break;
case 4:
{
fan_set(value);
}break;
}
}break;
case 1://设置参数
{
union { uint32_t W; uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
getParam = src.W;
}break;
case 0x02://电压P
{
union { float F;uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
voltage_p = src.F;
}break;
case 0x03://电压I
{
union { float F;uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
voltage_i = src.F;
}break;
case 0x04://电压d
{
union { float F;uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
voltage_d = src.F;
}break;
case 0x05://电流p
{
union { float F;uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
current_p = src.F;
}break;
case 0x06://电流I
{
union { float F;uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
current_i = src.F;
}break;
case 0x07://电流d
{
union { float F;uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
current_d = src.F;
}break;
case 0x10://设置运行模式
{
union { uint32_t W; uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
mode = src.W;
}break;
case 0x11://设置运行状态
{
union { int32_t w; uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
run_state = src.w;
}break;
case 0x12://设置电池数量
{
union { int32_t w; uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
bat_num = src.w;
}break;
case 0x13://电池类型
{
union { int32_t w; uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
bat_type = src.w;
}break;
case 0x14://电池充电电流
{
union { float F;uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
cmd_current = src.F;
}break;
case 0x15://电池容量
{
union { float F;uint8_t B[4];}src;
src.B[0] = parser.buff[0];
src.B[1] = parser.buff[1];
src.B[2] = parser.buff[2];
src.B[3] = parser.buff[3];
bat_capacity = src.F * 0.001;//Ah
}break;
}
}*/
}
//=======================周期消息================================
}
}