177 lines
4.5 KiB
C
177 lines
4.5 KiB
C
#ifndef USER_DISPLAY_PRESENT
|
||
#define USER_DISPLAY_PRESENT
|
||
|
||
#include "type.h"
|
||
|
||
// Fld1显示差压单位:UNIT_L实际显示为m3,UNIT_KG实际显示为t,此处为兼容老版本程序而采用原有符号
|
||
typedef enum {UNIT_KPA, UNIT_PCT, UNIT_L, UNIT_KG, UNIT_MMH2O} TDiffUnit;
|
||
// Fld1显示差压/压力/温度/真空模式
|
||
typedef enum {MODE_DIFF, MODE_PRES, MODE_TEMP, MODE_VACU} TFld1Mode;
|
||
// Fld2/3显示压力/温度单位
|
||
typedef enum {UNIT_PT_C, UNIT_PT_MPA} TPresTempUnit;
|
||
// Fld4显示压力/温度/真空单位
|
||
typedef enum {UNIT_PTV_C, UNIT_PTV_MPA, UNIT_PTV_PA} TPresTempVacuUnit;
|
||
|
||
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~3(从左到右,真值表1~4),Fld2为4~7(真值表5~8),
|
||
// Fld3为8~10(真值表9~11),Fld4为11~13(真值表12~14)
|
||
void Disp_DispChar(u8 pos, char c);
|
||
|
||
// 显示差压(液位)数据
|
||
void Disp_Fld1Text(s8 *text);
|
||
// 显示小数点
|
||
void Disp_Fld1PointOn(u8 pos);
|
||
void Disp_Fld1PointOff();
|
||
// 显示倍数
|
||
void Disp_Fld1MultiOn();
|
||
void Disp_Fld1MultiOff();
|
||
|
||
// 显示温度/压力数据
|
||
void Disp_Fld2Text(s8 *text);
|
||
// 显示小数点
|
||
void Disp_Fld2PointOn(u8 pos);
|
||
void Disp_Fld2PointOff();
|
||
// 显示单位
|
||
void Disp_Fld2UnitOn(TPresTempUnit unit);
|
||
void Disp_Fld2UnitOff();
|
||
|
||
// 显示温度/压力数据
|
||
void Disp_Fld3Text(s8 *text);
|
||
// 显示小数点
|
||
void Disp_Fld3PointOn(u8 pos);
|
||
void Disp_Fld3PointOff();
|
||
// 显示单位
|
||
void Disp_Fld3UnitOn(TPresTempUnit unit);
|
||
void Disp_Fld3UnitOff();
|
||
|
||
// 显示真空/温度/压力数据
|
||
void Disp_Fld4Text(s8 *text);
|
||
// 显示小数点
|
||
void Disp_Fld4PointOn(u8 pos);
|
||
void Disp_Fld4PointOff();
|
||
// 显示单位
|
||
void Disp_Fld4UnitOn(TPresTempVacuUnit unit);
|
||
void Disp_Fld4UnitOff();
|
||
|
||
// 差压(液位)显示切换
|
||
void Disp_SwitchDiffUnit(TFld1Mode mode, TDiffUnit unit);
|
||
|
||
// 显示液源
|
||
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_Fld2Blink(u8 blink);
|
||
void Disp_Fld3Blink(u8 blink);
|
||
void Disp_Fld4Blink(u8 blink);
|
||
void Disp_BatteryBlink(u8 blink);
|
||
// ********************************************
|
||
// 以下为窗口界面实现
|
||
// ********************************************
|
||
|
||
// 设置焦点显示
|
||
void Disp_SetCursor(u8 pos, u8 width);
|
||
void Disp_ClearCursor();
|
||
|
||
// 选择框函数
|
||
typedef struct
|
||
{
|
||
u8 pos; // 显示位置(0~3,0为差压显示最左边,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
|