val-off-little/screen/hmi_driver.h~RFb4c298.TMP

950 lines
23 KiB
Plaintext
Raw Permalink 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 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 "usart.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_