FluxDC/components/FluxProtocol/FluxProtocol.h

211 lines
4.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file FluxProtocol.h
* @brief 流量计通讯协议部分
*
* 用于声明流量计参数计便携制氧机参数
*
* @author wang xiang en
* @date 2025-04-18
* @version 版本号
* @copyright 版权声明((C)2025, YUWELL MEDTECH Co.ltd
*/
#ifndef _FLUX_PROTOCOL_H
#define _FLUX_PROTOCOL_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "freertos/semphr.h"
#include "freertos/event_groups.h"
#include "ui.h"
#include "FluxUart.h"
/* 导出三种流量计体积数据 */
extern float Spirit3_Volume[4];
extern float Spirit6_Volume[6];
extern float YULite8_Volume[6];
/* 导出消息数据*/
extern char *test_info[];
/* 导出LED小灯控制句柄 */
extern TaskHandle_t bs_stateLED_task_handle;
extern TaskHandle_t nom_stateLED_task_handle;
/* 定义LED小灯闪烁时间间隔 ms */
#define BS_LED_BLINK_INTERVAL_MS 500
#define NOM_LED_BLINK_INTERVAL_MS 500
/* 定义枚举用于标记当前测试阶段 */
typedef enum Bs_test_Stage{
BS_STAGE_15BPM,
BS_STAGE_20BPM,
BS_STAGE_25BPM,
BS_STAGE_30BPM,
BS_STAGE_35BPM,
BS_STAGE_40BPM,
BS_STAGE_MAX,
BS_STAGE_NONE,
BS_STAGE_ERROR,
BS_STAGE_FINISH,
BS_STAGE_START,
};
/* 声明设备类型 */
typedef enum DeviceType{
Spirit3,
Spirit6,
YU_Lite8,
};
/* 工作模式声明 */
typedef enum OperationMode
{
Normal,//正常模式,收到开始命令后开始进行累积计算,停止指令收到后停止积分
Timer,//计时模式,计算在设定时间内的累积值
Volume,//体积模式,体积到达后停止累积
};
/* 地址0x0001处的启停指令 */
typedef enum MeasureCommand
{
StartMeasure=1,
StopMeasure=2,
};
/**
* @brief 声明流量数据结构体
*
*/
typedef struct FluxProtocol
{
float testVolume;
uint16_t currentStage;
uint16_t currentBPM;
float nominalVolumeStage;
float nominalVolumeBPM;
float nominalVolumeMax;
float nominalVolumeMin;
enum DeviceType currentDevice;
};
extern struct FluxProtocol fluxProtocol;
/**
* @brief 地址数据 Not Used
*
*/
typedef struct FluxCommand
{
uint16_t addr;
uint32_t PLC_ADDR;
};
#define BS_ALL_RESULT_CLEAR lv_label_set_text(ui_pageHome_LabelRate15Result, "0");\
lv_label_set_text(ui_pageHome_LabelRate20Result, "0");\
lv_label_set_text(ui_pageHome_LabelRate25Result, "0");\
lv_label_set_text(ui_pageHome_LabelRate30Result, "0");\
lv_label_set_text(ui_pageHome_LabelRate35Result, "0");\
lv_label_set_text(ui_pageHome_LabelRate40Result, "0");
#define NOM_ALL_RESULT_CLEAR lv_label_set_text(ui_pageHome_labelTestResult, "0");
/* 创建led任务挂起宏函数 */
#define BS_STATE_LED_TASK_SUSPEND vTaskSuspend(bs_stateLED_task_handle);\
lv_obj_set_style_bg_color(ui_pageHome_panelBSLEDing,lv_color_hex(0xFFFFFF),LV_PART_MAIN);
/* 创建常规测试led任务挂起宏函数 */
#define NOM_STATE_LED_TASK_SUSPEND vTaskSuspend(nom_stateLED_task_handle);\
lv_obj_set_style_bg_color(ui_pageHome_panelNomTest,lv_color_hex(0xFFFFFF),LV_PART_MAIN);
/* BS测试过程中快速显示测试状态 */
#define BS_HOMEPAGE_SHOW(x) lv_label_set_text(ui_pageHome_labelBSInfo,x);
/**
* @brief 新建用于进行带BS测试的任务函数
*
* @param[in] arg not used
*
*/
void bs_test_task(void* arg);
/**
* @brief 测试状态显示线程
*
* 设置一个LED小灯测试的时候bling bling 闪
*
* @param[in] arg not used
*
*/
void bs_test_led_task(void* arg);
/**
* @brief 测试状态显示线程
*
* 设置一个LED小灯测试的时候bling bling 闪
*
* @param[in] arg not used
*
*/
void bs_test_led_task(void* arg);
/**
* @brief 向流量计下发测试时间
*
* 时间下发
*
* @param[in] time 向流量计下发测试的时间
*
*/
void flux_test_time_set(float var_time);
/**
* @brief 向流量计下发启动测试指令
*
*/
void flux_test_start(void);
/**
* @brief 向流量计下获取测试结果指令
*
*/
void flux_test_result_get(void);
/**
* @brief 测试状态显示线程
*
* 设置一个LED小灯测试的时候bling bling 闪
*
* @param[in] arg not used
*
*/
void nom_test_led_task(void* arg);
/**
* @brief 新建用于进行带常规测试的任务函数
*
* @param[in] arg not used
*
*/
void nom_test_task(void* arg);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif