951 lines
23 KiB
C
951 lines
23 KiB
C
/*!
|
||
* \file hmi_driver.h
|
||
* \brief 串口屏驱动文件
|
||
* \version 1.0
|
||
* \date 2012-2015
|
||
* \copyright 广州大彩光电科技有限公司
|
||
*/
|
||
|
||
#ifndef _HMI_DRIVER_
|
||
#define _HMI_DRIVER_
|
||
|
||
#define FIRMWARE_VER 917 /*!< 保持此固件版本号与真实屏幕一致,确保新增功能可用*/
|
||
#define CRC16_ENABLE 0 /*!< 如果需要CRC16校验功能,修改此宏为1(此时需要在VisualTFT工程中配CRC校验)*/
|
||
#define CMD_MAX_SIZE 64 /*!<单条指令大小,根据需要调整,尽量设置大一些*/
|
||
#define QUEUE_MAX_SIZE 128 /*!< 指令接收缓冲区大小,根据需要调整,尽量设置大一些*/
|
||
|
||
#define SD_FILE_EN 0
|
||
|
||
//#include "hmi_user_uart.h"
|
||
#include "iousart.h"
|
||
|
||
|
||
#define uchar unsigned char
|
||
#define uint8 unsigned char
|
||
#define uint16 unsigned short int
|
||
#define uint32 unsigned long
|
||
#define int16 short int
|
||
#define int32 long
|
||
|
||
/*!
|
||
* \brief 检查数据是否符合CRC16校验
|
||
* \param buffer 待校验的数据,末尾存储CRC16
|
||
* \param n 数据长度,包含CRC16
|
||
* \return 校验通过返回1,否则返回0
|
||
*/
|
||
uint16 CheckCRC16(uint8 *buffer,uint16 n);
|
||
|
||
/*!
|
||
* \brief 延时
|
||
* \param n 延时时间(毫秒单位)
|
||
*/
|
||
void DelayMS(unsigned int n);
|
||
|
||
/*!
|
||
* \brief 锁定设备配置,锁定之后需要解锁,才能修改波特率、触摸屏、蜂鸣器工作方式
|
||
*/
|
||
void LockDeviceConfig(void);
|
||
|
||
/*!
|
||
* \brief 解锁设备配置
|
||
*/
|
||
void UnlockDeviceConfig(void);
|
||
|
||
/*!
|
||
* \brief 修改串口屏的波特率
|
||
* \details 波特率选项范围[0~14],对应实际波特率
|
||
{1200,2400,4800,9600,19200,38400,57600,115200,1000000,2000000,218750,437500,875000,921800,2500000}
|
||
* \param option 波特率选项
|
||
*/
|
||
void SetCommBps(uint8 option);
|
||
|
||
/*!
|
||
* \brief 发送握手命令
|
||
*/
|
||
void SetHandShake(void);
|
||
|
||
/*!
|
||
* \brief 设置前景色
|
||
* \param color 前景色
|
||
*/
|
||
void SetFcolor(uint16 color);
|
||
|
||
/*!
|
||
* \brief 设置背景色
|
||
* \param color 背景色
|
||
*/
|
||
void SetBcolor(uint16 color);
|
||
|
||
/*!
|
||
* \brief 清除画面
|
||
*/
|
||
void GUI_CleanScreen(void);
|
||
|
||
/*!
|
||
* \brief 设置文字间隔
|
||
* \param x_w 横向间隔
|
||
* \param y_w 纵向间隔
|
||
*/
|
||
void SetTextSpace(uint8 x_w, uint8 y_w);
|
||
|
||
/*!
|
||
* \brief 设置文字显示限制
|
||
* \param enable 是否启用限制
|
||
* \param width 宽度
|
||
* \param height 高度
|
||
*/
|
||
void SetFont_Region(uint8 enable,uint16 width,uint16 height );
|
||
|
||
/*!
|
||
* \brief 设置过滤色
|
||
* \param fillcolor_dwon 颜色下界
|
||
* \param fillcolor_up 颜色上界
|
||
*/
|
||
void SetFilterColor(uint16 fillcolor_dwon, uint16 fillcolor_up);
|
||
|
||
/*!
|
||
* \brief 设置过滤色
|
||
* \param x 位置X坐标
|
||
* \param y 位置Y坐标
|
||
* \param back 颜色上界
|
||
* \param font 字体
|
||
* \param strings 字符串内容
|
||
*/
|
||
void DisText(uint16 x, uint16 y,uint8 back,uint8 font,uchar *strings );
|
||
|
||
/*!
|
||
* \brief 显示光标
|
||
* \param enable 是否显示
|
||
* \param x 位置X坐标
|
||
* \param y 位置Y坐标
|
||
* \param width 宽度
|
||
* \param height 高度
|
||
*/
|
||
void DisCursor(uint8 enable,uint16 x, uint16 y,uint8 width,uint8 height );
|
||
|
||
/*!
|
||
* \brief 显示全屏图片
|
||
* \param image_id 图片索引
|
||
* \param masken 是否启用透明掩码
|
||
*/
|
||
void DisFull_Image(uint16 image_id,uint8 masken);
|
||
|
||
/*!
|
||
* \brief 指定位置显示图片
|
||
* \param x 位置X坐标
|
||
* \param y 位置Y坐标
|
||
* \param image_id 图片索引
|
||
* \param masken 是否启用透明掩码
|
||
*/
|
||
void DisArea_Image(uint16 x,uint16 y,uint16 image_id,uint8 masken);
|
||
|
||
/*!
|
||
* \brief 显示裁剪图片
|
||
* \param x 位置X坐标
|
||
* \param y 位置Y坐标
|
||
* \param image_id 图片索引
|
||
* \param image_x 图片裁剪位置X坐标
|
||
* \param image_y 图片裁剪位置Y坐标
|
||
* \param image_l 图片裁剪长度
|
||
* \param image_w 图片裁剪高度
|
||
* \param masken 是否启用透明掩码
|
||
*/
|
||
void DisCut_Image(uint16 x,uint16 y,uint16 image_id,uint16 image_x,uint16 image_y,
|
||
uint16 image_l, uint16 image_w,uint8 masken);
|
||
|
||
/*!
|
||
* \brief 显示GIF动画
|
||
* \param x 位置X坐标
|
||
* \param y 位置Y坐标
|
||
* \param flashimage_id 图片索引
|
||
* \param enable 是否显示
|
||
* \param playnum 播放次数
|
||
*/
|
||
void DisFlashImage(uint16 x,uint16 y,uint16 flashimage_id,uint8 enable,uint8 playnum);
|
||
|
||
/*!
|
||
* \brief 画点
|
||
* \param x 位置X坐标
|
||
* \param y 位置Y坐标
|
||
*/
|
||
void GUI_Dot(uint16 x,uint16 y);
|
||
|
||
/*!
|
||
* \brief 画线
|
||
* \param x0 起始位置X坐标
|
||
* \param y0 起始位置Y坐标
|
||
* \param x1 结束位置X坐标
|
||
* \param y1 结束位置Y坐标
|
||
*/
|
||
void GUI_Line(uint16 x0, uint16 y0, uint16 x1, uint16 y1);
|
||
|
||
/*!
|
||
* \brief 画折线
|
||
* \param mode 模式
|
||
* \param dot 数据点
|
||
* \param dot_cnt 点数
|
||
*/
|
||
void GUI_ConDots(uint8 mode,uint16 *dot,uint16 dot_cnt);
|
||
|
||
/*!
|
||
* \brief 画空心圆
|
||
* \param x0 圆心位置X坐标
|
||
* \param y0 圆心位置Y坐标
|
||
* \param r 半径
|
||
*/
|
||
void GUI_Circle(uint16 x0, uint16 y0, uint16 r);
|
||
|
||
/*!
|
||
* \brief 画实心圆
|
||
* \param x0 圆心位置X坐标
|
||
* \param y0 圆心位置Y坐标
|
||
* \param r 半径
|
||
*/
|
||
void GUI_CircleFill(uint16 x0, uint16 y0, uint16 r);
|
||
|
||
/*!
|
||
* \brief 画弧线
|
||
* \param x0 圆心位置X坐标
|
||
* \param y0 圆心位置Y坐标
|
||
* \param r 半径
|
||
* \param sa 起始角度
|
||
* \param ea 终止角度
|
||
*/
|
||
void GUI_Arc(uint16 x,uint16 y, uint16 r,uint16 sa, uint16 ea);
|
||
|
||
/*!
|
||
* \brief 画空心矩形
|
||
* \param x0 起始位置X坐标
|
||
* \param y0 起始位置Y坐标
|
||
* \param x1 结束位置X坐标
|
||
* \param y1 结束位置Y坐标
|
||
*/
|
||
void GUI_Rectangle(uint16 x0, uint16 y0, uint16 x1,uint16 y1 );
|
||
|
||
/*!
|
||
* \brief 画实心矩形
|
||
* \param x0 起始位置X坐标
|
||
* \param y0 起始位置Y坐标
|
||
* \param x1 结束位置X坐标
|
||
* \param y1 结束位置Y坐标
|
||
*/
|
||
void GUI_RectangleFill(uint16 x0, uint16 y0, uint16 x1,uint16 y1 );
|
||
|
||
/*!
|
||
* \brief 画空心椭圆
|
||
* \param x0 起始位置X坐标
|
||
* \param y0 起始位置Y坐标
|
||
* \param x1 结束位置X坐标
|
||
* \param y1 结束位置Y坐标
|
||
*/
|
||
void GUI_Ellipse (uint16 x0, uint16 y0, uint16 x1,uint16 y1 );
|
||
|
||
/*!
|
||
* \brief 画实心椭圆
|
||
* \param x0 起始位置X坐标
|
||
* \param y0 起始位置Y坐标
|
||
* \param x1 结束位置X坐标
|
||
* \param y1 结束位置Y坐标
|
||
*/
|
||
void GUI_EllipseFill (uint16 x0, uint16 y0, uint16 x1,uint16 y1 );
|
||
|
||
/*!
|
||
* \brief 画线
|
||
* \param x0 起始位置X坐标
|
||
* \param y0 起始位置Y坐标
|
||
* \param x1 结束位置X坐标
|
||
* \param y1 结束位置Y坐标
|
||
*/
|
||
void SetBackLight(uint8 light_level);
|
||
|
||
/*!
|
||
* \brief 蜂鸣器设置
|
||
* \time time 持续时间(毫秒单位)
|
||
*/
|
||
void SetBuzzer(uint8 time);
|
||
|
||
/*!
|
||
* \brief 触摸屏设置
|
||
* \param enable 触摸使能
|
||
* \param beep_on 触摸蜂鸣器
|
||
* \param work_mode 触摸工作模式:0按下就上传,1松开才上传,2不断上传坐标值,3按下和松开均上传数据
|
||
* \param press_calibration 连续点击触摸屏20下校准触摸屏:0禁用,1启用
|
||
*/
|
||
void SetTouchPaneOption(uint8 enbale,uint8 beep_on,uint8 work_mode,uint8 press_calibration);
|
||
|
||
/*!
|
||
* \brief 校准触摸屏
|
||
*/
|
||
void CalibrateTouchPane(void);
|
||
|
||
/*!
|
||
* \brief 触摸屏测试
|
||
*/
|
||
void TestTouchPane(void);
|
||
|
||
/*!
|
||
* \brief 设置当前写入图层
|
||
* \details 一般用于实现双缓存效果(绘图时避免闪烁):
|
||
* \details uint8 layer = 0;
|
||
* \details WriteLayer(layer); //设置写入层
|
||
* \details ClearLayer(layer); //使图层变透明
|
||
* \details //添加一系列绘图指令
|
||
* \details //DisText(100,100,0,4,"hello hmi!!!");
|
||
* \details DisplyLayer(layer); //切换显示层
|
||
* \details layer = (layer+1)%2; //双缓存切换
|
||
* \see DisplyLayer
|
||
* \see ClearLayer
|
||
* \param layer 图层编号
|
||
*/
|
||
void WriteLayer(uint8 layer);
|
||
|
||
/*!
|
||
* \brief 设置当前显示图层
|
||
* \param layer 图层编号
|
||
*/
|
||
void DisplyLayer(uint8 layer);
|
||
|
||
/*!
|
||
* \brief 清除图层,使图层变成透明
|
||
* \param layer 图层编号
|
||
*/
|
||
void ClearLayer(uint8 layer);
|
||
|
||
/*!
|
||
* \brief 写数据到串口屏用户存储区
|
||
* \param startAddress 起始地址
|
||
* \param length 字节数
|
||
* \param _data 待写入的数据
|
||
*/
|
||
void WriteUserFlash(uint32 startAddress,uint16 length,uint8 *_data);
|
||
|
||
/*!
|
||
* \brief 从串口屏用户存储区读取数据
|
||
* \param startAddress 起始地址
|
||
* \param length 字节数
|
||
*/
|
||
void ReadUserFlash(uint32 startAddress,uint16 length);
|
||
|
||
/*!
|
||
* \brief 拷贝图层
|
||
* \param src_layer 原始图层
|
||
* \param dest_layer 目标图层
|
||
*/
|
||
void CopyLayer(uint8 src_layer,uint8 dest_layer);
|
||
|
||
/*!
|
||
* \brief 设置当前画面
|
||
* \param screen_id 画面ID
|
||
*/
|
||
void SetScreen(uint16 screen_id);
|
||
|
||
/*!
|
||
* \brief 获取当前画面
|
||
*/
|
||
void GetScreen(uint16 screen_id);
|
||
|
||
/*!
|
||
* \brief 禁用\启用画面更新
|
||
* \details 禁用\启用一般成对使用,用于避免闪烁、提高刷新速度
|
||
* \details 用法:
|
||
* \details SetScreenUpdateEnable(0);//禁止更新
|
||
* \details 一系列更新画面的指令
|
||
* \details SetScreenUpdateEnable(1);//立即更新
|
||
* \param enable 0禁用,1启用
|
||
*/
|
||
void SetScreenUpdateEnable(uint8 enable);
|
||
|
||
/*!
|
||
* \brief 设置控件输入焦点
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param focus 是否具有输入焦点
|
||
*/
|
||
void SetControlFocus(uint16 screen_id,uint16 control_id,uint8 focus);
|
||
|
||
/*!
|
||
* \brief 显示\隐藏控件
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param visible 是否显示
|
||
*/
|
||
void SetControlVisiable(uint16 screen_id,uint16 control_id,uint8 visible);
|
||
|
||
/*!
|
||
* \brief 设置触摸控件使能
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param enable 控件是否使能
|
||
*/
|
||
void SetControlEnable(uint16 screen_id,uint16 control_id,uint8 enable);
|
||
|
||
/*!
|
||
* \brief 获取控件值
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void GetControlValue(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 设置按钮状态
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 按钮状态
|
||
*/
|
||
void SetButtonValue(uint16 screen_id,uint16 control_id,uchar value);
|
||
|
||
/*!
|
||
* \brief 设置文本值
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param str 文本值
|
||
*/
|
||
void SetTextValue(uint16 screen_id,uint16 control_id,uchar *str);
|
||
|
||
#if FIRMWARE_VER>=908
|
||
|
||
/*!
|
||
* \brief 设置文本为整数值,要求FIRMWARE_VER>=908
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 文本数值
|
||
* \param sign 0-无符号,1-有符号
|
||
* \param fill_zero 数字位数,不足时左侧补零
|
||
*/
|
||
void SetTextInt32(uint16 screen_id,uint16 control_id,uint32 value,uint8 sign,uint8 fill_zero);
|
||
|
||
/*!
|
||
* \brief 设置文本单精度浮点值,要求FIRMWARE_VER>=908
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 文本数值
|
||
* \param precision 小数位数
|
||
* \param show_zeros 为1时,显示末尾0
|
||
*/
|
||
void SetTextFloat(uint16 screen_id,uint16 control_id,float value,uint8 precision,uint8 show_zeros);
|
||
|
||
void SetTextDouble(uint16 screen_id,uint16 control_id,double value,uint8 precision,uint8 show_zeros);
|
||
|
||
#endif
|
||
|
||
/*!
|
||
* \brief 设置进度值
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 数值
|
||
*/
|
||
void SetProgressValue(uint16 screen_id,uint16 control_id,uint32 value);
|
||
|
||
/*!
|
||
* \brief 设置仪表值
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 数值
|
||
*/
|
||
void SetMeterValue(uint16 screen_id,uint16 control_id,uint32 value);
|
||
|
||
/*!
|
||
* \brief 设置滑动条
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 数值
|
||
*/
|
||
void SetSliderValue(uint16 screen_id,uint16 control_id,uint32 value);
|
||
|
||
/*!
|
||
* \brief 设置选择控件
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param item 当前选项
|
||
*/
|
||
void SetSelectorValue(uint16 screen_id,uint16 control_id,uint8 item);
|
||
|
||
/*!
|
||
* \brief 开始播放动画
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void AnimationStart(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 停止播放动画
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void AnimationStop(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 暂停播放动画
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void AnimationPause(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 播放制定帧
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param frame_id 帧ID
|
||
*/
|
||
void AnimationPlayFrame(uint16 screen_id,uint16 control_id,uint8 frame_id);
|
||
|
||
/*!
|
||
* \brief 播放上一帧
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void AnimationPlayPrev(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 播放下一帧
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void AnimationPlayNext(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 曲线控件-添加通道
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param channel 通道号
|
||
* \param color 颜色
|
||
*/
|
||
void GraphChannelAdd(uint16 screen_id,uint16 control_id,uint8 channel,uint16 color);
|
||
|
||
/*!
|
||
* \brief 曲线控件-删除通道
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param channel 通道号
|
||
*/
|
||
void GraphChannelDel(uint16 screen_id,uint16 control_id,uint8 channel);
|
||
|
||
/*!
|
||
* \brief 曲线控件-添加数据
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param channel 通道号
|
||
* \param pData 曲线数据
|
||
* \param nDataLen 数据个数
|
||
*/
|
||
void GraphChannelDataAdd(uint16 screen_id,uint16 control_id,uint8 channel,uint16 *pData,uint16 nDataLen);
|
||
|
||
/*!
|
||
* \brief 曲线控件-清除数据
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param channel 通道号
|
||
*/
|
||
void GraphChannelDataClear(uint16 screen_id,uint16 control_id,uint8 channel);
|
||
|
||
/*!
|
||
* \brief 曲线控件-设置视图窗口
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param x_offset 水平偏移
|
||
* \param x_mul 水平缩放系数
|
||
* \param y_offset 垂直偏移
|
||
* \param y_mul 垂直缩放系数
|
||
*/
|
||
void GraphSetViewport(uint16 screen_id,uint16 control_id,int16 x_offset,uint16 x_mul,int16 y_offset,uint16 y_mul);
|
||
|
||
/*!
|
||
* \brief 开始批量更新
|
||
* \param screen_id 画面ID
|
||
*/
|
||
void BatchBegin(uint16 screen_id);
|
||
|
||
/*!
|
||
* \brief 批量更新按钮控件
|
||
* \param control_id 控件ID
|
||
* \param value 数值
|
||
*/
|
||
void BatchSetButtonValue(uint16 control_id,uint8 state);
|
||
|
||
/*!
|
||
* \brief 批量更新进度条控件
|
||
* \param control_id 控件ID
|
||
* \param value 数值
|
||
*/
|
||
void BatchSetProgressValue(uint16 control_id,uint32 value);
|
||
|
||
/*!
|
||
* \brief 批量更新滑动条控件
|
||
* \param control_id 控件ID
|
||
* \param value 数值
|
||
*/
|
||
void BatchSetSliderValue(uint16 control_id,uint32 value);
|
||
|
||
/*!
|
||
* \brief 批量更新仪表控件
|
||
* \param control_id 控件ID
|
||
* \param value 数值
|
||
*/
|
||
void BatchSetMeterValue(uint16 control_id,uint32 value);
|
||
|
||
/*!
|
||
* \brief 批量更新文本控件
|
||
* \param control_id 控件ID
|
||
* \param strings 字符串
|
||
*/
|
||
void BatchSetText(uint16 control_id,uchar *strings);
|
||
|
||
/*!
|
||
* \brief 批量更新动画\图标控件
|
||
* \param control_id 控件ID
|
||
* \param frame_id 帧ID
|
||
*/
|
||
void BatchSetFrame(uint16 control_id,uint16 frame_id);
|
||
|
||
#if FIRMWARE_VER>=908
|
||
|
||
/*!
|
||
* \brief 批量设置控件可见
|
||
* \param control_id 控件ID
|
||
* \param visible 帧ID
|
||
*/
|
||
void BatchSetVisible(uint16 control_id,uint8 visible);
|
||
|
||
/*!
|
||
* \brief 批量设置控件使能
|
||
* \param control_id 控件ID
|
||
* \param enable 帧ID
|
||
*/
|
||
void BatchSetEnable(uint16 control_id,uint8 enable);
|
||
|
||
#endif
|
||
|
||
/*!
|
||
* \brief 结束批量更新
|
||
*/
|
||
void BatchEnd(void);
|
||
|
||
/*!
|
||
* \brief 设置倒计时控件
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param timeout 倒计时(秒)
|
||
*/
|
||
void SeTimer(uint16 screen_id,uint16 control_id,uint32 timeout);
|
||
|
||
/*!
|
||
* \brief 开启倒计时控件
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void StartTimer(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 停止倒计时控件
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void StopTimer(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 暂停倒计时控件
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void PauseTimer(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 设置控件背景色
|
||
* \details 支持控件:进度条、文本
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param color 背景色
|
||
*/
|
||
void SetControlBackColor(uint16 screen_id,uint16 control_id,uint16 color);
|
||
|
||
/*!
|
||
* \brief 设置控件前景色
|
||
* \details 支持控件:进度条
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param color 前景色
|
||
*/
|
||
void SetControlForeColor(uint16 screen_id,uint16 control_id,uint16 color);
|
||
|
||
/*!
|
||
* \brief 显示\隐藏弹出菜单控件
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param show 是否显示,为0时focus_control_id无效
|
||
* \param focus_control_id 关联的文本控件(菜单控件的内容输出到文本控件)
|
||
*/
|
||
void ShowPopupMenu(uint16 screen_id,uint16 control_id,uint8 show,uint16 focus_control_id);
|
||
|
||
/*!
|
||
* \brief 显示\隐藏系统键盘
|
||
* \param show 0隐藏,1显示
|
||
* \param x 键盘显示位置X坐标
|
||
* \param y 键盘显示位置Y坐标
|
||
* \param type 0小键盘,1全键盘
|
||
* \param option 0正常字符,1密码,2时间设置
|
||
* \param max_len 键盘录入字符长度限制
|
||
*/
|
||
void ShowKeyboard(uint8 show,uint16 x,uint16 y,uint8 type,uint8 option,uint8 max_len);
|
||
|
||
#if FIRMWARE_VER>=914
|
||
/*!
|
||
* \brief 多语言设置
|
||
* \param ui_lang 用户界面语言0~9
|
||
* \param sys_lang 系统键盘语言-0中文,1英文
|
||
*/
|
||
void SetLanguage(uint8 ui_lang,uint8 sys_lang);
|
||
#endif
|
||
|
||
#if FIRMWARE_VER>=917
|
||
/*!
|
||
* \brief 开始保存控件数值到FLASH
|
||
* \param version 数据版本号,可任意指定,高16位为主版本号,低16位为次版本号
|
||
* \param address 数据在用户存储区的存放地址,注意防止地址重叠、冲突
|
||
*/
|
||
void FlashBeginSaveControl(uint32 version,uint32 address);
|
||
|
||
/*!
|
||
* \brief 保存某个控件的数值到FLASH
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void FlashSaveControl(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 保存结束
|
||
*/
|
||
void FlashEndSaveControl(void);
|
||
|
||
/*!
|
||
* \brief 从FLASH中恢复控件数据
|
||
* \param version 数据版本号,主版本号必须与存储时一致,否则会加载失败
|
||
* \param address 数据在用户存储区的存放地址
|
||
*/
|
||
void FlashRestoreControl(uint32 version,uint32 address);
|
||
#endif
|
||
|
||
#if FIRMWARE_VER>=921
|
||
/*!
|
||
* \brief 设置历史曲线采样数据值(单字节,uint8或int8)
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 采样点数据
|
||
* \param channel 通道数
|
||
*/
|
||
void HistoryGraph_SetValueInt8(uint16 screen_id,uint16 control_id,uint8 *value,uint8 channel);
|
||
|
||
/*!
|
||
* \brief 设置历史曲线采样数据值(双字节,uint16或int16)
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 采样点数据
|
||
* \param channel 通道数
|
||
*/
|
||
void HistoryGraph_SetValueInt16(uint16 screen_id,uint16 control_id,uint16 *value,uint8 channel);
|
||
|
||
/*!
|
||
* \brief 设置历史曲线采样数据值(四字节,uint32或int32)
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 采样点数据
|
||
* \param channel 通道数
|
||
*/
|
||
void HistoryGraph_SetValueInt32(uint16 screen_id,uint16 control_id,uint32 *value,uint8 channel);
|
||
|
||
/*!
|
||
* \brief 设置历史曲线采样数据值(单精度浮点数)
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 采样点数据
|
||
* \param channel 通道数
|
||
*/
|
||
void HistoryGraph_SetValueFloat(uint16 screen_id,uint16 control_id,float *value,uint8 channel);
|
||
|
||
/*!
|
||
* \brief 允许或禁止历史曲线采样
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param enable 0-禁止,1-允许
|
||
*/
|
||
void HistoryGraph_EnableSampling(uint16 screen_id,uint16 control_id,uint8 enable);
|
||
|
||
/*!
|
||
* \brief 显示或隐藏历史曲线通道
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param channel 通道编号
|
||
* \param show 0-隐藏,1-显示
|
||
*/
|
||
void HistoryGraph_ShowChannel(uint16 screen_id,uint16 control_id,uint8 channel,uint8 show);
|
||
|
||
|
||
/*!
|
||
* \brief 设置历史曲线时间长度(即采样点数)
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param sample_count 一屏显示的采样点数
|
||
*/
|
||
void HistoryGraph_SetTimeLength(uint16 screen_id,uint16 control_id,uint16 sample_count);
|
||
|
||
/*!
|
||
* \brief 历史曲线缩放到全屏
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void HistoryGraph_SetTimeFullScreen(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 设置历史曲线缩放比例系数
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param zoom 缩放百分比(zoom>100%时水平方向缩小,反正放大)
|
||
* \param max_zoom 缩放限制,一屏最多显示采样点数
|
||
* \param min_zoom 缩放限制,一屏最少显示采样点数
|
||
*/
|
||
void HistoryGraph_SetTimeZoom(uint16 screen_id,uint16 control_id,uint16 zoom,uint16 max_zoom,uint16 min_zoom);
|
||
#endif
|
||
|
||
#if SD_FILE_EN
|
||
/*!
|
||
* \brief 检测SD卡是否插入
|
||
*/
|
||
void SD_IsInsert(void);
|
||
|
||
#define FA_READ 0x01 /*!< 可读取*/
|
||
#define FA_WRITE 0x02 /*!< 可写入*/
|
||
#define FA_CREATE_NEW 0x04 /*!< 创建新文件,如果文件已经存在,则返回失败*/
|
||
#define FA_CREATE_ALWAYS 0x08 /*!< 创建新文件,如果文件已经存在,则覆盖*/
|
||
#define FA_OPEN_EXISTING 0x00 /*!< 打开文件,如果文件不存在,则返回失败*/
|
||
#define FA_OPEN_ALWAYS 0x10 /*!< 打开文件,如果文件不存在,则创建新文件*/
|
||
|
||
/*!
|
||
* \brief 打开或创建文件
|
||
* \param filename 文件名称(仅ASCII编码)
|
||
* \param mode 模式,可选组合模式如上FA_XXXX
|
||
*/
|
||
void SD_CreateFile(uint8 *filename,uint8 mode);
|
||
|
||
/*!
|
||
* \brief 以当前时间创建文件,例如:20161015083000.txt
|
||
* \param ext 文件后缀,例如 txt
|
||
*/
|
||
void SD_CreateFileByTime(uint8 *ext);
|
||
|
||
/*!
|
||
* \brief 在当前文件末尾写入数据
|
||
* \param buffer 数据
|
||
* \param dlc 数据长度
|
||
*/
|
||
void SD_WriteFile(uint8 *buffer,uint16 dlc);
|
||
|
||
/*!
|
||
* \brief 读取当前文件
|
||
* \param offset 文件位置偏移
|
||
* \param dlc 数据长度
|
||
*/
|
||
void SD_ReadFile(uint32 offset,uint16 dlc);
|
||
|
||
/*!
|
||
* \brief 获取当前文件长度
|
||
*/
|
||
void SD_GetFileSize();
|
||
|
||
/*!
|
||
* \brief 关闭当前文件
|
||
*/
|
||
void SD_CloseFile();
|
||
#endif
|
||
|
||
/*!
|
||
* \brief 记录控件-触发警告
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 告警值
|
||
* \param time 告警产生的时间,为0时使用屏幕内部时间
|
||
*/
|
||
void Record_SetEvent(uint16 screen_id,uint16 control_id,uint16 value,uint8 *time);
|
||
|
||
/*!
|
||
* \brief 记录控件-解除警告
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param value 告警值
|
||
* \param time 告警解除的时间,为0时使用屏幕内部时间
|
||
*/
|
||
void Record_ResetEvent(uint16 screen_id,uint16 control_id,uint16 value,uint8 *time);
|
||
|
||
/*!
|
||
* \brief 记录控件- 添加常规记录
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param record 一条记录(字符串),子项通过分号隔开,例如:第一项;第二项;第三项;
|
||
*/
|
||
void Record_Add(uint16 screen_id,uint16 control_id,uint8 *record);
|
||
|
||
/*!
|
||
* \brief 记录控件-清除记录数据
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void Record_Clear(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 记录控件-设置记录显示偏移
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param offset 显示偏移,滚动条位置
|
||
*/
|
||
void Record_SetOffset(uint16 screen_id,uint16 control_id,uint16 offset);
|
||
|
||
/*!
|
||
* \brief 记录控件-获取当前记录数目
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
*/
|
||
void Record_GetCount(uint16 screen_id,uint16 control_id);
|
||
|
||
/*!
|
||
* \brief 记录控件-读取指定位置的记录
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param index 索引
|
||
*/
|
||
void Record_Read(uint16 screen_id,uint16 control_id,uint16 index);
|
||
|
||
/*!
|
||
* \brief 记录控件-修改指定位置的记录
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param index 索引
|
||
* \param record 一条记录(字符串),子项通过分号隔开,例如:第一项;第二项;第三项;
|
||
*/
|
||
void Record_Modify(uint16 screen_id,uint16 control_id,uint16 index,uint8 *record);
|
||
|
||
/*!
|
||
* \brief 记录控件-删除指定位置的记录
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param index 索引
|
||
*/
|
||
void Record_Delete(uint16 screen_id,uint16 control_id,uint16 index);
|
||
|
||
/*!
|
||
* \brief 记录控件-在指定位置插入记录
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param index 索引
|
||
* \param record 一条记录(字符串),子项通过分号隔开,例如:第一项;第二项;第三项;
|
||
*/
|
||
void Record_Insert(uint16 screen_id,uint16 control_id,uint16 index,uint8 *record);
|
||
|
||
/*!
|
||
* \brief 记录控件-选中指定记录索引
|
||
* \param screen_id 画面ID
|
||
* \param control_id 控件ID
|
||
* \param index 索引
|
||
*/
|
||
void Record_Select(uint16 screen_id,uint16 control_id,uint16 index);
|
||
|
||
|
||
#endif//_HMI_DRIVER_
|