STM32_WGY/User/display.h

146 lines
3.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.

#ifndef USER_DISPLAY_PRESENT
#define USER_DISPLAY_PRESENT
#include "type.h"
typedef enum {UNIT_INH2O, UNIT_KPA, UNIT_MMH2O} TDiffUnit;
typedef enum {UNIT_MPA} TPresUnit;
typedef enum {UNIT_C} TTempUnit;
typedef enum {UNIT_PA} TVacuUnit;
typedef enum {SOURCE_LNG, SOURCE_O2, SOURCE_N2, SOURCE_AR, SOURCE_CO2,
SOURCE_H2, SOURCE_CNG, SOURCE_HE, SOURCE_C2H4, SOURCE_LPG, SOURCE_NH3,
SOURCE_PENT, SOURCE_POPO} TDispSource; // 戊烷,聚醚多元醇
// 显示一个8段码
// pos: Fld1为0~4从左到右真值表1~5)
void Disp_DispChar(u8 pos, char c);
// 显示差压(液位)数据
void Disp_Fld1Text(s8 *text);
// 显示小数点
void Disp_Fld1PointOn(u8 pos);
void Disp_Fld1PointOff();
// 显示单位切换
void Disp_SwitchDiffUnit(TDiffUnit unit);
void Disp_SwitchPresUnit(TPresUnit unit);
void Disp_SwitchTempUnit(TTempUnit unit);
void Disp_SwitchVacuUnit(TVacuUnit unit);
void Disp_Fld1UnitOff();
// 显示通道切换
void Disp_ChannelOn(uint8_t channel);
void Disp_ChannelOff();
// 显示液源
void Disp_SwitchSource(TDispSource src);
// 写指针数据
void Disp_WriteNeedle(u8 val);
// 写电量数据
void Disp_WriteBattery(u8 val);
// 写信号强度
void Disp_WriteStrength(u8 val);
// 写通讯状态(是否发送数据)
void Disp_WriteCommunication(u8 val);
// 写告警状态
void Disp_WriteAlarm(u8 val);
// 写错误状态
void Disp_WriteError(u8 val);
// 写充装状态
void Disp_WriteFill(u8 val);
// 写充电状态
void Disp_WritePower(u8 val);
// 写RF状态
void Disp_WriteRF(u8 val);
// 写GPS状态
void Disp_WriteGPS(u8 val);
// 清屏
void Disp_Clear();
// 设置闪烁
void Disp_SetBlinkVisible(u8 visible);
void Disp_Fld1Blink(u8 blink);
void Disp_BatteryBlink(u8 blink);
// ********************************************
// 以下为窗口界面实现
// ********************************************
// 设置焦点显示
void Disp_SetCursor(u8 pos, u8 width);
void Disp_ClearCursor();
// 选择框函数
typedef struct
{
u8 pos; // 显示位置0~30为差压显示最左边3位差压显示最右边
u8 width; // 显示位数
u8 count; // 选项个数最多10个可选项
u8 idx; // 当前选项
u8 read_only; // 只读
u8 hide; // 隐藏
char items[13][5]; // 可选项内容每个可选项最长4个字符
} TSelectBox;
// 刷新显示
void SelectBox_Refresh(TSelectBox *pBox);
// 创建选择框
void SelectBox_Create(TSelectBox *pBox, u8 pos, u8 width, u8 count, const char items[][5], u8 idx);
// 设置只读属性
void SelectBox_ReadOnly(TSelectBox *pBox);
// 设置隐藏属性
void SelectBox_Hide(TSelectBox *pBox);
// 选择框处理按键
u8 SelectBox_OnKey(TSelectBox *pBox, u8 key);
// 选择框获得焦点
void SelectBox_SetFocus(TSelectBox *pBox);
// 编辑框函数
typedef struct
{
u8 pos; // 显示位置
u8 width; // 显示位数
u8 len; // 编辑数据长度如len>width则需向左滚动才能输入完整的数据
u8 left_idx; // 编辑框最左位的数据idx
u8 curr_idx; // 光标所在数据idx
u8 read_only; // 只读
u8 hide; // 隐藏
char text[20]; // 编辑内容
} TEditBox;
// 刷新显示
void EditBox_Refresh(TEditBox *pEdit);
// 创建编辑框
void EditBox_Create(TEditBox *pEdit, u8 pos, u8 width, u8 len, char *text);
// 设置只读属性
void EditBox_ReadOnly(TEditBox *pEdit);
// 设置隐藏属性
void EditBox_Hide(TEditBox *pEdit);
// 编辑框处理按键
u8 EditBox_OnKey(TEditBox *pEdit, u8 key);
// 编辑框获得焦点
void EditBox_SetFocus(TEditBox *pEdit);
// 按钮函数
typedef struct
{
u8 pos; // 显示位置
u8 width; // 显示位数
u8 hide; // 隐藏
char caption[5]; // 标题
} TButton;
// 刷新显示
void Button_Refresh(TButton *pButton);
// 创建按钮
void Button_Create(TButton *pButton, u8 pos, u8 width, char *caption);
// 设置隐藏属性
void Button_Hide(TButton *pButton);
// 按钮处理按键
u8 Button_OnKey(TButton *pButton, u8 key);
// 按钮获得焦点
void Button_SetFocus(TButton *pButton);
#endif