signal_generator/User/driver/uart_lcd.h

139 lines
4.5 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.

/*
* @Author: wangxujie wangxujie@wuxismart.com
* @Date: 2025-03-10 15:05:20
* @LastEditors: wangxujie wangxujie@wuxismart.com
* @LastEditTime: 2025-07-31 11:06:48
* @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_SLIDERVALUE 0x10 // 设置滑块值命令
#define LCD_CMD_CTRL_TYPE_MAKE_CURVE 0x32 // 绘制曲线命令
#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;
#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
float cmd_txt_data; // 文本内容应该为字符串形式且长度不定当前项目中只需要上传浮点需要浮点转ASCII码
uint32_t cmd_tail; // 帧尾
} lcd_set_txt_t; // lcd设置按钮状态结构体
#pragma pack()
extern lcd_set_txt_t lcd_set_txt1_data;
extern lcd_set_txt_t lcd_set_txt2_data;
extern lcd_set_txt_t lcd_set_txt3_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
uint32_t cmd_slidervalue; // 滑块数值
uint32_t cmd_tail; // 帧尾
} lcd_set_slidervalue_t; // lcd设置滑块结构体
#pragma pack(1)
extern lcd_set_slidervalue_t lcd_set_slidervalue1_data;
extern lcd_set_slidervalue_t lcd_set_slidervalue2_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; // 当前输出通道
uint32_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_current_out_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