562 lines
18 KiB
C
562 lines
18 KiB
C
|
|
/* USER CODE BEGIN Header */
|
|||
|
|
/**
|
|||
|
|
******************************************************************************
|
|||
|
|
* @file ht16k33_dot_matrix.c
|
|||
|
|
* @author Motor Control SDK Team, Yuwell Software XiangenWang
|
|||
|
|
* @brief Voice Recognition Module Initialization Section,
|
|||
|
|
including peripheral initialization and message node insertion, etc.
|
|||
|
|
* @version 1.0
|
|||
|
|
* @changelog version 1.0 <EFBFBD><EFBFBD>ʼ<EFBFBD>汾 2025.11.13
|
|||
|
|
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
******************************************************************************
|
|||
|
|
* @attention
|
|||
|
|
*
|
|||
|
|
* <h2><center>© Copyright (c) 2025 Yuwell Software Danyang.Jiangsu.China.
|
|||
|
|
* All rights reserved.</center></h2>
|
|||
|
|
*
|
|||
|
|
* Redistribution and use in source and binary forms, with or without
|
|||
|
|
* modification, are permitted, provided that the following conditions are met:
|
|||
|
|
*
|
|||
|
|
* 1. Redistribution of source code must retain the above copyright notice,
|
|||
|
|
* this list of conditions and the following disclaimer.
|
|||
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|||
|
|
* this list of conditions and the following disclaimer in the documentation
|
|||
|
|
* and/or other materials provided with the distribution.
|
|||
|
|
* 3. Neither the name of Yuwell Software nor the names of other
|
|||
|
|
* contributors to this software may be used to endorse or promote products
|
|||
|
|
* derived from this software without specific written permission.
|
|||
|
|
* 4. This software, including modifications and/or derivative works of this
|
|||
|
|
* software, must execute solely and exclusively on microcontroller or
|
|||
|
|
* microprocessor devices manufactured by or for Yuwell Software.
|
|||
|
|
* 5. Redistribution and use of this software other than as permitted under
|
|||
|
|
* this license is void and will automatically terminate your rights under
|
|||
|
|
* this license.
|
|||
|
|
*
|
|||
|
|
* THIS SOFTWARE IS PROVIDED BY Yuwell Software AND CONTRIBUTORS "AS IS"
|
|||
|
|
* AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
|
|||
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|||
|
|
* PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
|
|||
|
|
* RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
|
|||
|
|
* SHALL Yuwell Software OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|||
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|||
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|||
|
|
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|||
|
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|||
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|||
|
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
|
*
|
|||
|
|
******************************************************************************
|
|||
|
|
*/
|
|||
|
|
/* USER CODE END Header */
|
|||
|
|
#include "ht16k33_dot_matrix.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
UIElements ui;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĻUI<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param p_ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD><EFBFBD>
|
|||
|
|
* @retval NONE
|
|||
|
|
* @note 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* 2. <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ָʾ<EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(1)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>(0)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>(0)
|
|||
|
|
* 3. <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾģʽΪ<EFBFBD><EFBFBD>ʱģʽ(DISPLAY_MODE_TIMER)
|
|||
|
|
* 4. <EFBFBD><EFBFBD>Ũ<EFBFBD>ȳ<EFBFBD>ʼֵ<EFBFBD><EFBFBD>Ϊ210<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ʾ21.0%<EFBFBD><EFBFBD>
|
|||
|
|
* 5. <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><EFBFBD>
|
|||
|
|
* @author jarvis
|
|||
|
|
* @date 2025.11.25
|
|||
|
|
*/
|
|||
|
|
void ht16k33_ui_init(UIElements* p_ui)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
FL_GPIO_InitTypeDef GPIO_InitStruct;
|
|||
|
|
MsgQueueItem queue_item;
|
|||
|
|
bool result = false;
|
|||
|
|
|
|||
|
|
if (p_ui == NULL)
|
|||
|
|
{
|
|||
|
|
return; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ָʾ<D6B8><CABE>Ĭ<EFBFBD><C4AC>״̬
|
|||
|
|
p_ui->ok_led_show = 1;
|
|||
|
|
p_ui->alarm_led_show = 0;
|
|||
|
|
p_ui->clean_filter_show = 0;
|
|||
|
|
p_ui->replace_box_show = 0;
|
|||
|
|
|
|||
|
|
// <20><>ʾģʽĬ<CABD><C4AC>ֵ
|
|||
|
|
p_ui->disp_info.oxygen_val = 210; // <20><>Ũ<EFBFBD>ȳ<EFBFBD>ʼ21.0%<25><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
GPIO_InitStruct.pin = HT16K33_SDA_GPIO_PIN;
|
|||
|
|
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
|
|||
|
|
GPIO_InitStruct.pull = FL_DISABLE;
|
|||
|
|
GPIO_InitStruct.remapPin = FL_DISABLE;
|
|||
|
|
GPIO_InitStruct.analogSwitch = FL_DISABLE;
|
|||
|
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_OPENDRAIN;
|
|||
|
|
|
|||
|
|
FL_GPIO_Init(HT16K33_SDA_GPIO_GROUP, &GPIO_InitStruct); // <20><>ʼ<EFBFBD><CABC>SDA<44><41><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
GPIO_InitStruct.pin = HT16K33_SCL_GPIO_PIN;
|
|||
|
|
GPIO_InitStruct.pull = FL_ENABLE;
|
|||
|
|
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
|
|||
|
|
|
|||
|
|
FL_GPIO_Init(HT16K33_SCL_GPIO_GROUP, &GPIO_InitStruct); // <20><>ʼ<EFBFBD><CABC>SCL<43><4C><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
ht16k33_chip_init();
|
|||
|
|
|
|||
|
|
ht16k33_send_buffer(ht16k33_disp_buff); // <20><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>Ƶ<EFBFBD><C6B5>Դ棨<D4B4><E6A3A8><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ִ<EFBFBD>У<EFBFBD>
|
|||
|
|
|
|||
|
|
if(global_queue.length != 0)
|
|||
|
|
{
|
|||
|
|
result = remove_queue_node_by_type(&global_queue, MSG_TYPE_TIME_SEND, &queue_item); // ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
if(result == true)
|
|||
|
|
{
|
|||
|
|
ui.disp_info.work_hours = queue_item.data.hour_meter.hour;
|
|||
|
|
ui.disp_info.work_minutes = queue_item.data.hour_meter.minute;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У/<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
|
|||
|
|
* @param first_value - <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
* @param first_index - <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>
|
|||
|
|
* @param second_value - <EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
* @param second_index - <EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>
|
|||
|
|
* @retval NONE
|
|||
|
|
* @note 1. ÿ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ʾ2<EFBFBD>루ͨ<EFBFBD><EFBFBD>show_switch_count<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ100ms<EFBFBD><EFBFBD>
|
|||
|
|
* 2. ʹ<EFBFBD>þ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>ʾ״̬<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* 3. <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʮλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
* @author wxe
|
|||
|
|
* @date 2025.11.25
|
|||
|
|
*/
|
|||
|
|
static void switch_show_2_num(uint16_t first_value, uint16_t first_index, uint16_t second_value, uint16_t second_index)
|
|||
|
|
{
|
|||
|
|
static uint16_t show_switch_count = 20;
|
|||
|
|
|
|||
|
|
static uint16_t show_mode_record = 1;
|
|||
|
|
|
|||
|
|
if(show_switch_count >= 20) // ÿ<><C3BF>״̬<D7B4><CCAC>ʾ2s
|
|||
|
|
{
|
|||
|
|
show_switch_count = 0;
|
|||
|
|
|
|||
|
|
if(show_mode_record)
|
|||
|
|
{
|
|||
|
|
show_mode_record = 0;
|
|||
|
|
|
|||
|
|
ui.disp_info.seg_index.fourth_8_index = first_value % 10;
|
|||
|
|
ui.disp_info.seg_index.third_8_index = (first_value / 10) % 10;
|
|||
|
|
ui.disp_info.seg_index.second_8_index = (first_value / 100) % 10;
|
|||
|
|
ui.disp_info.seg_index.first_8_index = first_index;
|
|||
|
|
|
|||
|
|
}else{
|
|||
|
|
show_mode_record = 1;
|
|||
|
|
|
|||
|
|
ui.disp_info.seg_index.fourth_8_index = second_value % 10;
|
|||
|
|
ui.disp_info.seg_index.third_8_index = (second_value / 10) % 10;
|
|||
|
|
ui.disp_info.seg_index.second_8_index = (second_value / 100) % 10;
|
|||
|
|
|
|||
|
|
ui.disp_info.seg_index.first_8_index = second_index;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}else{
|
|||
|
|
show_switch_count++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>״̬<EFBFBD>µ<EFBFBD>UIˢ<EFBFBD>£<EFBFBD>STM_INIT״̬<EFBFBD><EFBFBD>
|
|||
|
|
* @param ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬ָ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD><EFBFBD>
|
|||
|
|
* @retval NONE
|
|||
|
|
* @note 1. <EFBFBD><EFBFBD>ʼ״̬<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>OK<EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱСʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ǧλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʮλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
|||
|
|
* 3. <EFBFBD><EFBFBD>λΪ0ʱ<EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Чλ<EFBFBD><EFBFBD>
|
|||
|
|
* @author wxe
|
|||
|
|
* @date 2025.11.25
|
|||
|
|
*/
|
|||
|
|
static void on_stm_init_ui_refresh(UIElements* ui)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
// <20><>ʼ״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
ui->total_time_chn = 1;
|
|||
|
|
|
|||
|
|
ui->oxg_concentration_chn = 0;
|
|||
|
|
ui->replace_box_show = 0;
|
|||
|
|
ui->clean_filter_show = 0;
|
|||
|
|
// ui->alarm_led_show = 0; // <20>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>it<69>ļ<EFBFBD><C4BC>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
|
|||
|
|
// <20><>ʾok<6F><6B>
|
|||
|
|
ui->ok_led_show = 1;
|
|||
|
|
|
|||
|
|
// <20><>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0>ʱ
|
|||
|
|
uint8_t wh_ten_thou, wh_thou, wh_hund, wh_ten, wh_unit; // <20><>λ<EFBFBD><CEBB>ǧλ<C7A7><CEBB><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʮλ<CAAE><CEBB><EFBFBD><EFBFBD>λ
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD>趨<EFBFBD><E8B6A8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
wh_ten_thou = (ui->disp_info.work_hours / 10000) % 10; // <20><>λ<EFBFBD><CEBB>12508/10000=1 <20><> 1%10=1
|
|||
|
|
wh_thou = (ui->disp_info.work_hours / 1000) % 10; // ǧλ<C7A7><CEBB>12508/1000=12 <20><> 12%10=2
|
|||
|
|
wh_hund = (ui->disp_info.work_hours / 100) % 10; // <20><>λ<EFBFBD><CEBB>12508/100=125 <20><> 125%10=5
|
|||
|
|
wh_ten = (ui->disp_info.work_hours / 10) % 10; // ʮλ<CAAE><CEBB>12508/10=1250 <20><> 1250%10=0
|
|||
|
|
wh_unit = ui->disp_info.work_hours % 10; // <20><>λ<EFBFBD><CEBB>12508%10=8
|
|||
|
|
|
|||
|
|
if(wh_ten_thou != 0)
|
|||
|
|
{
|
|||
|
|
ui->disp_info.seg_index.num1_is_show = 1;
|
|||
|
|
}else{
|
|||
|
|
ui->disp_info.seg_index.num1_is_show = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ui->disp_info.seg_index.first_8_index = wh_thou;
|
|||
|
|
ui->disp_info.seg_index.second_8_index = wh_hund;
|
|||
|
|
ui->disp_info.seg_index.third_8_index = wh_ten;
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = wh_unit;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>µ<EFBFBD>UIˢ<EFBFBD>£<EFBFBD>STM_NOM״̬<EFBFBD><EFBFBD>
|
|||
|
|
* @param ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬ָ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD><EFBFBD>
|
|||
|
|
* @retval NONE
|
|||
|
|
* @note 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* 2. <EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>Ũ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>UI<EFBFBD>ṹ<EFBFBD><EFBFBD>
|
|||
|
|
* 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ϊ<EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>11<EFBFBD><EFBFBD>
|
|||
|
|
* @author wxe
|
|||
|
|
* @date 2025.11.25
|
|||
|
|
*/
|
|||
|
|
static void on_stm_nom_ui_refresh(UIElements* ui)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui->total_time_chn = 0;
|
|||
|
|
ui->oxg_concentration_chn = 1;
|
|||
|
|
|
|||
|
|
MsgQueueItem oxg_item;
|
|||
|
|
|
|||
|
|
// ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if(peek_queue_node_by_type(&global_queue, MSG_TYPE_OXYGEN_SENSOR, &oxg_item))
|
|||
|
|
{
|
|||
|
|
ui->disp_info.oxygen_val = oxg_item.data.oxygen.concentration;
|
|||
|
|
ui->disp_info.flow_val = oxg_item.data.oxygen.flow_rate;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
uint8_t o2_hund, o2_ten, o2_unit; // <20><>λ<EFBFBD><CEBB>ʮλ<CAAE><CEBB><EFBFBD><EFBFBD>λ
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ũ<EFBFBD><C5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
|
o2_hund = (ui->disp_info.oxygen_val / 100) % 10; // <20><>λ<EFBFBD><CEBB>935/100=9 <20><> 9%10=9
|
|||
|
|
o2_ten = (ui->disp_info.oxygen_val / 10) % 10; // ʮλ<CAAE><CEBB>935/10=93 <20><> 93%10=3
|
|||
|
|
o2_unit = ui->disp_info.oxygen_val % 10; // <20><>λ<EFBFBD><CEBB>935%10=5
|
|||
|
|
|
|||
|
|
ui->disp_info.seg_index.num1_is_show = 0;
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 11;
|
|||
|
|
ui->disp_info.seg_index.second_8_index = o2_hund;
|
|||
|
|
ui->disp_info.seg_index.third_8_index = o2_ten;
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = o2_unit;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>µ<EFBFBD>UIˢ<EFBFBD>£<EFBFBD>STM_ERROR_SHOUNTDOWN/STM_ERROR_NONE_STOP״̬<EFBFBD><EFBFBD>
|
|||
|
|
* @param ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬ָ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD><EFBFBD>
|
|||
|
|
* @retval NONE
|
|||
|
|
* @note 1. <EFBFBD>ر<EFBFBD>OK<EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>ʱ/<EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>루E3>E4>E5>LL>E2>E1>E7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>
|
|||
|
|
* 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>E3(<EFBFBD>͵<EFBFBD>ѹ)<EFBFBD><EFBFBD>E4(<EFBFBD>ߵ<EFBFBD>ѹ)<EFBFBD><EFBFBD>E5(<EFBFBD>¶ȸ<EFBFBD>)<EFBFBD><EFBFBD>LL(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>E2(ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>E1(ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>E7(220V<EFBFBD><EFBFBD>)
|
|||
|
|
* 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʾȫ<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @author wxe
|
|||
|
|
* @date 2025.11.25
|
|||
|
|
*/
|
|||
|
|
static void on_stm_error_ui_refresh(UIElements* ui)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ģʽ
|
|||
|
|
// <20><><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><>ֻ<EFBFBD><D6BB><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD> E3 > E4 > E5 > LL > E2 > E1 > E7
|
|||
|
|
|
|||
|
|
ui->ok_led_show = 0; // <20>ر<EFBFBD>OK<4F><4B><EFBFBD><EFBFBD>ʾ
|
|||
|
|
ui->total_time_chn = 0;
|
|||
|
|
ui->oxg_concentration_chn = 0;
|
|||
|
|
|
|||
|
|
// <20><>ʾE3
|
|||
|
|
if(xOxygenEventGroupCheckBit(&global_event, EVENT_E3_ELEC_LOW))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = 3; // <20><>ʾ<EFBFBD><CABE>3<EFBFBD><33>
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E4_ELEC_HIGH)) // <20><>ʾE4
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = 4; // <20><>ʾ<EFBFBD><CABE>4<EFBFBD><34>
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E5_NTC_HIGH)) // <20><>ʾE5
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = 5; // <20><>ʾ<EFBFBD><CABE>5<EFBFBD><35>
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_LL_FLOW_LOW)) // <20><>ʾLL
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.third_8_index = 13; // <20><>ʾ<EFBFBD><CABE>L<EFBFBD><4C>
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = 13; // <20><>ʾ<EFBFBD><CABE>L<EFBFBD><4C>
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E2_PRESS_HIGH)) // <20><>ʾE2
|
|||
|
|
{
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = 2; // <20><>ʾ<EFBFBD><CABE>2<EFBFBD><32>
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E1_PRESS_LOW)) // <20><>ʾE1
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = 1; // <20><>ʾ<EFBFBD><CABE>1<EFBFBD><31>
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E7_220V_LOW)) // <20><>ʾE7
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
|
|||
|
|
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = 7; // <20><>ʾ<EFBFBD><CABE>7<EFBFBD><37>
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_O2_SENSOR_ERROR)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ui->disp_info.seg_index.first_8_index = 10; // <20><>ʾ<EFBFBD><CABE>-<2D><>
|
|||
|
|
ui->disp_info.seg_index.second_8_index = 10; // <20><>ʾ<EFBFBD><CABE>-<2D><>
|
|||
|
|
ui->disp_info.seg_index.third_8_index = 10; // <20><>ʾ<EFBFBD><CABE>-<2D><>
|
|||
|
|
ui->disp_info.seg_index.fourth_8_index = 10; // <20><>ʾ<EFBFBD><CABE>-<2D><>
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(xOxygenEventGroupCheckBit(&global_event, EVENT_BEEP_MUTE))
|
|||
|
|
{
|
|||
|
|
ui->alarm_led_show = 1;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}else{
|
|||
|
|
ui->alarm_led_show = 0;// <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief У/<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>µ<EFBFBD>UIˢ<EFBFBD>£<EFBFBD>STM_CARLIB/STM_DEBUG״̬<EFBFBD><EFBFBD>
|
|||
|
|
* @param ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬ָ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD><EFBFBD>
|
|||
|
|
* @retval NONE
|
|||
|
|
* @note 1. <EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* 3. <EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ͬ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ֵ+ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD>+<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
|
|||
|
|
* @author wxe
|
|||
|
|
* @date 2025.11.25
|
|||
|
|
*/
|
|||
|
|
static void on_stm_carlib_ui_refresh(UIElements* ui)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
MsgQueueItem stm_item;
|
|||
|
|
MsgQueueItem adc_item;
|
|||
|
|
MsgQueueItem o2_item;
|
|||
|
|
MsgQueueItem boundary_item;
|
|||
|
|
|
|||
|
|
|
|||
|
|
peek_queue_node_by_type(&global_queue, MSG_TYPE_OXYGEN_SENSOR, &o2_item);
|
|||
|
|
peek_queue_node_by_type(&global_queue, MSG_TYPE_AD_SAMPLING, &adc_item);
|
|||
|
|
peek_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, &stm_item);
|
|||
|
|
peek_queue_node_by_type(&global_queue, MSG_TYPE_AD_BOUNDARY_SEND, &boundary_item);
|
|||
|
|
|
|||
|
|
|
|||
|
|
switch(stm_item.data.state_machine.data)
|
|||
|
|
{
|
|||
|
|
case NETCODE_PRESS:
|
|||
|
|
// <20><>ʾ<EFBFBD><CABE>ǰѹ<C7B0><D1B9>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>ߵ<EFBFBD>
|
|||
|
|
switch_show_2_num(adc_item.data.adc_data.real_press, 14, boundary_item.data.adc_boundary.press_high_boundary, 15);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case NETCODE_O2:
|
|||
|
|
switch_show_2_num(o2_item.data.oxygen.concentration, 16, o2_item.data.oxygen.flow_rate, 17);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case NETCODE_TEMP_PRESS:
|
|||
|
|
switch_show_2_num(adc_item.data.adc_data.real_ntc, 16, adc_item.data.adc_data.real_press, 14);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case NETCODE_ELEC:
|
|||
|
|
switch_show_2_num(adc_item.data.adc_data.real_elec/10, 16, boundary_item.data.adc_boundary.elec_low_boundary/10, 13);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case NETCODE_E1_CALIB:
|
|||
|
|
switch_show_2_num(adc_item.data.adc_data.real_press, 14,boundary_item.data.adc_boundary.press_low_boundary, 13); // 13-L 14-P 15-H 16-C 17-F 18-U 19-A
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case NETCODE_E2_CALIB:
|
|||
|
|
switch_show_2_num(adc_item.data.adc_data.real_press, 14, boundary_item.data.adc_boundary.press_high_boundary, 15);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case NETCODE_E4_CALIB:
|
|||
|
|
switch_show_2_num(adc_item.data.adc_data.real_elec/10, 19, boundary_item.data.adc_boundary.elec_high_boundary/10, 15);
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case NETCODE_E7_CALIB:
|
|||
|
|
switch_show_2_num(adc_item.data.adc_data.real_220V, 18, boundary_item.data.adc_boundary.net220v_low_boundary, 13);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief HT16K33<EFBFBD><EFBFBD>Ļˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>+<EFBFBD><EFBFBD>Ļˢ<EFBFBD>£<EFBFBD>
|
|||
|
|
* @param queue - MessageQueue<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ʵ<EFBFBD><EFBFBD>δֱ<EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>global_queue<EFBFBD><EFBFBD>
|
|||
|
|
* @retval NONE
|
|||
|
|
* @note 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>ˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ
|
|||
|
|
* 2. <EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>global_queue<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>MSG_TYPE_OXYGEN_SENSOR<EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ũ<EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* 3. <EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD>(oxygen_val)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(flow_val)<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ȫ<EFBFBD><EFBFBD>UI<EFBFBD>ṹ<EFBFBD><EFBFBD>ui<EFBFBD><EFBFBD>
|
|||
|
|
* 4. <EFBFBD><EFBFBD>Ļˢ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ht16k33_refresh_screen()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʾ
|
|||
|
|
* 5. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>global_queue<EFBFBD>ѳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MSG_TYPE_OXYGEN_SENSOR<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><EFBFBD>壬
|
|||
|
|
* ȫ<EFBFBD><EFBFBD>UI<EFBFBD>ṹ<EFBFBD><EFBFBD>ui<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<EFBFBD>壨<EFBFBD><EFBFBD>concentration/flow_rate<EFBFBD>ֶΣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @author wxe
|
|||
|
|
* @date 2025.11.25
|
|||
|
|
*/
|
|||
|
|
void ht16k33_refresh_task(void)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
MsgQueueItem stm_item;
|
|||
|
|
static uint16_t ok_blink_count = 0;
|
|||
|
|
static uint16_t blue_blink_count = 0;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ʾģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵģʽȷ<CABD><C8B7>ui.dispinfo <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if(peek_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, &stm_item))
|
|||
|
|
{
|
|||
|
|
switch(stm_item.data.state_machine.oxg_stm)
|
|||
|
|
{
|
|||
|
|
case STM_INIT:
|
|||
|
|
on_stm_init_ui_refresh(&ui); // <20><>ʼ4sʱ<73><CAB1><EFBFBD><EFBFBD>ui<75><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>и<EFBFBD><D0B8><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case STM_NOM:
|
|||
|
|
on_stm_nom_ui_refresh(&ui); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Ũ<EFBFBD><C5A8>
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case STM_ERROR_SHOUNTDOWN: // <20><><EFBFBD>ϵ<EFBFBD>ͣ<EFBFBD><CDA3>״̬ʱ
|
|||
|
|
case STM_ERROR_NONE_STOP: // <20><><EFBFBD><EFBFBD>E7<45><37><EFBFBD><EFBFBD> <20><>ʾE7<45><37><EFBFBD>Dz<EFBFBD>ͣ<EFBFBD><CDA3>
|
|||
|
|
on_stm_error_ui_refresh(&ui);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case STM_CARLIB: // <20><><EFBFBD><EFBFBD>ǰΪУ״̬
|
|||
|
|
case STM_DEBUG:
|
|||
|
|
on_stm_carlib_ui_refresh(&ui);
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}else{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(xOxygenEventGroupCheckBit(&global_event, EVENT_REPLACE_FILTER_NOTIFY))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui.replace_box_show = 1;
|
|||
|
|
}else{
|
|||
|
|
ui.replace_box_show = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(xOxygenEventGroupCheckBit(&global_event, EVENT_CLEAN_FILTER_NOTIFY))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
ui.clean_filter_show = 1;
|
|||
|
|
}else{
|
|||
|
|
ui.clean_filter_show = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(xOxygenEventGroupCheckBit(&global_event, EVENT_OK_BLINK)) // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>OK<4F><4B><EFBFBD><EFBFBD>˸
|
|||
|
|
{
|
|||
|
|
ok_blink_count++;
|
|||
|
|
if(ok_blink_count % 2 == 0) // ÿ<><C3BF>0.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸һ<EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ui.ok_led_show = !ui.ok_led_show;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(ok_blink_count == 9)
|
|||
|
|
{
|
|||
|
|
ok_blink_count = 0;
|
|||
|
|
vOxygenEventGroupClearBits(&global_event, EVENT_OK_BLINK);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(xOxygenEventGroupCheckBit(&global_event, EVENT_BLUE_BLINK))
|
|||
|
|
{
|
|||
|
|
blue_blink_count++;
|
|||
|
|
if(blue_blink_count % 2 == 0) // ÿ<><C3BF>0.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸һ<EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ui.alarm_led_show = !ui.alarm_led_show;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(blue_blink_count == 9)
|
|||
|
|
{
|
|||
|
|
blue_blink_count = 0;
|
|||
|
|
vOxygenEventGroupClearBits(&global_event, EVENT_BLUE_BLINK);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
ht16k33_refresh_screen(); // ˢ<><CBA2><EFBFBD><EFBFBD>Ļ
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/************************ (C) COPYRIGHT YUWELL *****END OF FILE****/
|
|||
|
|
|