131 lines
4.3 KiB
C
131 lines
4.3 KiB
C
/*
|
||
* @Author: wangxujie wangxujie@wuxismart.com
|
||
* @Date: 2025-03-10 15:05:20
|
||
* @LastEditors: wangxujie wangxujie@wuxismart.com
|
||
* @LastEditTime: 2025-07-30 16:50:15
|
||
* @FilePath: \signal_generator\User\driver\uart_lcd.h
|
||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||
*/
|
||
#ifndef __UART_LCD_H__
|
||
#define __UART_LCD_H__
|
||
|
||
#include "main.h"
|
||
|
||
#define LCD_CMD_HEAD 0xEE // LCD指令帧头
|
||
#define LCD_CMD_TYPE 0xB1 // LCD指令类型,对控件操作基本都为0xB1,具体查询手册
|
||
#define LCD_CMD_CTRL_TYPE_SWITCH_SCREEN 0x00 // 切换屏幕命令
|
||
#define LCD_CMD_CTRL_TYPE_SET_BUTTON 0x10 // 设置按钮状态命令
|
||
#define LCD_CMD_CTRL_TYPE_SET_TXT 0x10 // 设置文本命令
|
||
#define LCD_CMD_CTRL_TYPE_SET_PROGRESS 0x10 // 设置进度条命令
|
||
#define LCD_CMD_CTRL_TYPE_MAKE_CURVE 0x30 // 绘制曲线命令
|
||
#define LCD_CMD_TAIL 0xFFFCFFFF
|
||
|
||
#define LCD_SCREEN_ID_CRUUENT 0x00 // 电流输出界面ID
|
||
#define LCD_SCREEN_ID_CURVE 0x01 // 绘制曲线界面ID
|
||
|
||
#define LCD_CMD_SET_BUTTON_LEN 0x0C // 设置按钮状态命令长度
|
||
|
||
#pragma pack(1)
|
||
typedef struct
|
||
{
|
||
uint8_t cmd_head; // 帧头
|
||
uint8_t cmd_type; // 命令类型
|
||
uint8_t cmd_ctrl_type; // 控制类型
|
||
uint16_t cmd_screen_id; // 画面ID
|
||
uint16_t cmd_ctrl_id; // 控件ID
|
||
|
||
uint8_t cmd_curve_channel; // 曲线通道
|
||
uint16_t cmd_data_len; // 数据长度
|
||
uint8_t cmd_data[256]; // 数据内容
|
||
|
||
uint32_t cmd_tail; // 帧尾
|
||
} lcd_makecurve_t; // lcd绘制曲线结构体
|
||
#pragma pack()
|
||
extern lcd_makecurve_t lcd_makecurve_data;
|
||
#pragma pack(1)
|
||
typedef struct
|
||
{
|
||
uint8_t cmd_head; // 帧头
|
||
uint8_t cmd_type; // 命令类型
|
||
uint8_t cmd_ctrl_type; // 控制类型
|
||
uint16_t cmd_screen_id; // 画面ID
|
||
uint16_t cmd_ctrl_id; // 控件ID
|
||
|
||
uint8_t cmd_button_status; // 按钮状态
|
||
|
||
uint32_t cmd_tail; // 帧尾
|
||
} lcd_set_button_t; // lcd设置按钮状态结构体
|
||
#pragma pack()
|
||
extern lcd_set_button_t lcd_set_button1_data;
|
||
extern lcd_set_button_t lcd_set_button2_data;
|
||
extern lcd_set_button_t lcd_set_button3_data;
|
||
extern lcd_set_button_t lcd_set_button4_data;
|
||
extern lcd_set_button_t lcd_set_button5_data;
|
||
typedef struct
|
||
{
|
||
uint8_t cmd_head; // 帧头
|
||
uint8_t cmd_type; // 命令类型
|
||
uint8_t cmd_ctrl_type; // 控制类型
|
||
uint16_t cmd_screen_id; // 画面ID
|
||
uint16_t cmd_ctrl_id; // 控件ID
|
||
|
||
float cmd_txt_data; // 文本内容,应该为字符串形式且长度不定,当前项目中只需要上传浮点,需要浮点转ASCII码
|
||
|
||
uint32_t cmd_tail; // 帧尾
|
||
} lcd_set_txt_t; // lcd设置按钮状态结构体
|
||
extern lcd_set_txt_t lcd_set_txt_data;
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t cmd_head; // 帧头
|
||
uint8_t cmd_type; // 命令类型
|
||
uint8_t cmd_ctrl_type; // 控制类型
|
||
uint16_t cmd_screen_id; // 画面ID
|
||
uint16_t cmd_ctrl_id; // 控件ID
|
||
|
||
uint32_t cmd_progress_value; // 按钮状态
|
||
|
||
uint32_t cmd_tail; // 帧尾
|
||
} lcd_set_progress_t; // lcd设置按钮状态结构体
|
||
extern lcd_set_progress_t lcd_set_progress_data;
|
||
|
||
#pragma pack(1)
|
||
typedef struct
|
||
{
|
||
uint8_t cmd_head; // 帧头
|
||
uint8_t cmd_type; // 命令类型
|
||
uint8_t cmd_ctrl_type; // 控制类型
|
||
uint16_t cmd_screen_id; // 画面ID
|
||
uint32_t cmd_tail; // 帧尾
|
||
} lcd_switchscreen_t; // 切换画面
|
||
#pragma pack()
|
||
extern lcd_switchscreen_t lcd_switchscreen_data;
|
||
typedef struct
|
||
{
|
||
uint8_t page_num;
|
||
uint8_t current_out_channel; // 当前输出通道
|
||
uint8_t current_value[2];
|
||
uint8_t lcd_flag;
|
||
} uart_lcd_t;
|
||
extern uart_lcd_t uart_lcd_state;
|
||
typedef struct
|
||
{
|
||
uint8_t confirm_key_flag;
|
||
uint8_t confirm_key_flag_last;
|
||
int direction;
|
||
int encode_num_last;
|
||
int encode_num;
|
||
} ec11_t;
|
||
extern ec11_t ec11_data;
|
||
|
||
void uart_lcd_draw_ipaddr(void);
|
||
void uart_lcd_init(void);
|
||
void uart_lcd_current_out(uint8_t channel);
|
||
void uart_lcd_channel_switch(uint8_t channel);
|
||
void uart_lcd_page_switch(uint8_t page);
|
||
void uart_lcd_ecll_control_current_out(void);
|
||
void uart_lcd_ec11_control_current(void);
|
||
void uart_lcd_makecurvet(lcd_makecurve_t *makecurve_data);
|
||
void uart_lcd_makecurve_test(void);
|
||
#endif
|