增加英文界面显示

This commit is contained in:
haifeng.wang 2025-04-24 08:10:26 +08:00
parent d9b1f12e24
commit a6888da205
3 changed files with 2205 additions and 2135 deletions

View File

@ -312,7 +312,8 @@ typedef struct
char pwd1[6]; // 储罐参数修改密码 char pwd1[6]; // 储罐参数修改密码
char pwd2[6]; // 传感器标定密码 char pwd2[6]; // 传感器标定密码
char APN[8]; // 运营商APN char APN[8]; // 运营商APN
uint8_t reserved[90]; uint8_t ch_en;
uint8_t reserved[89];
uint16_t crc; uint16_t crc;
} config_display_t; } config_display_t;

View File

@ -53,7 +53,7 @@ uint8_t Form_KeyM_Data[sizeof(form_data_t) * (FORM_KEY_COUNT + 1)] = {0};
SemaphoreHandle_t Form_KeyQ = NULL; SemaphoreHandle_t Form_KeyQ = NULL;
// 首页表格,报警页表格,查询表格, 关于表格 // 首页表格,报警页表格,查询表格, 关于表格
form_grid_t gridAll, gridWarn, gridQuery, gridAbout; form_grid_t gridAll, gridWarn, gridQuery, gridAbout,gridAboutEn;
// 用于生成显示屏命令 // 用于生成显示屏命令
form_data_t formData; form_data_t formData;
@ -125,9 +125,9 @@ void DWIN_ParseFrame(uint8_t c)
memmove(readData.byte, DWIN_Data + 7, readData.count); memmove(readData.byte, DWIN_Data + 7, readData.count);
printf("\nRead from screen, 0x%04X (%d bytes):\n", readData.Addr, readData.count); printf("\nRead from screen, 0x%04X (%d bytes):\n", readData.Addr, readData.count);
// for(i = 0; i < readData.count; i++) for(i = 0; i < readData.count; i++)
// printf(" %02X", readData.byte[i]); printf(" %02X", readData.byte[i]);
// printf("\n"); printf("\n");
// 触摸按键返回 // 触摸按键返回
if(readData.Addr == 0x5000 || readData.Addr == 0x5012 || readData.Addr == 0x5030 if(readData.Addr == 0x5000 || readData.Addr == 0x5012 || readData.Addr == 0x5030
@ -416,10 +416,12 @@ void Form_Open()
memset(&gridWarn, 0, sizeof(gridWarn)); memset(&gridWarn, 0, sizeof(gridWarn));
memset(&gridQuery, 0, sizeof(gridQuery)); memset(&gridQuery, 0, sizeof(gridQuery));
memset(&gridAbout, 0, sizeof(gridAbout)); memset(&gridAbout, 0, sizeof(gridAbout));
memset(&gridAboutEn, 0, sizeof(gridAboutEn));
gridAll.rowCount = 10; gridAll.rowCount = 10;
gridWarn.rowCount = 10; gridWarn.rowCount = 10;
gridQuery.rowCount = 10; gridQuery.rowCount = 10;
gridAbout.rowCount = 10; gridAbout.rowCount = 10;
gridAboutEn.rowCount = 10;
gridAll.hdrAddr = 0x5200; gridAll.hdrAddr = 0x5200;
for(i = 0; i < gridAll.rowCount; i++) for(i = 0; i < gridAll.rowCount; i++)
@ -445,7 +447,12 @@ void Form_Open()
gridAbout.rowDesc[i] = 0xA7F0 + 0x10 * i; gridAbout.rowDesc[i] = 0xA7F0 + 0x10 * i;
gridAbout.rowPtr[i] = 0x6A00 + 0x80 * i; gridAbout.rowPtr[i] = 0x6A00 + 0x80 * i;
} }
gridAboutEn.hdrAddr = 0x7980;
for(i = 0; i < gridAboutEn.rowCount; i++)
{
gridAboutEn.rowDesc[i] = 0xB7F0 + 0x10 * i;
gridAboutEn.rowPtr[i] = 0x7A00 + 0x80 * i;
}
// 启动串口 // 启动串口
huart10.RxISR = DWIN_IRQHandler; huart10.RxISR = DWIN_IRQHandler;
SET_BIT(UART10->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); SET_BIT(UART10->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
@ -593,6 +600,13 @@ void Form_Task(void *p_arg)
" 日期", " 时间", " 罐箱号 ", "液位(mmWC)", "质量(kg)", "百分比", "压力(MPa)", "温度(℃)", "报警", "故障", " PSN "); " 日期", " 时间", " 罐箱号 ", "液位(mmWC)", "质量(kg)", "百分比", "压力(MPa)", "温度(℃)", "报警", "故障", " PSN ");
data.count = strlen(data.str); data.count = strlen(data.str);
DWIN_Refresh(&data); DWIN_Refresh(&data);
// 设置表头
data.oper = DWIN_OPER_WRITE;
data.Addr = gridAll.hdrAddr+0x2000;
sprintf(data.str, " %5s %5s %11s %10s %8s %6s %9s %6s %4s %4s %13s",
" data", " time", "Number_Box", "Level(mmWC)", "Qual(kg)", "Per(%)", "Pres(MPa)", "T(deg)", "Warn", "Err", " PSN ");
data.count = strlen(data.str);
DWIN_Refresh(&data);
data.oper = DWIN_OPER_WRITE; data.oper = DWIN_OPER_WRITE;
data.Addr = gridWarn.hdrAddr; data.Addr = gridWarn.hdrAddr;
@ -600,7 +614,12 @@ void Form_Task(void *p_arg)
" 日期", " 时间", " 罐箱号 ", "液位(mmWC)", "质量(kg)", "百分比", "压力(MPa)", "温度(℃)", "报警", "故障", " PSN "); " 日期", " 时间", " 罐箱号 ", "液位(mmWC)", "质量(kg)", "百分比", "压力(MPa)", "温度(℃)", "报警", "故障", " PSN ");
data.count = strlen(data.str); data.count = strlen(data.str);
DWIN_Refresh(&data); DWIN_Refresh(&data);
data.oper = DWIN_OPER_WRITE;
data.Addr = gridWarn.hdrAddr+0x2000;
sprintf(data.str, " %5s %5s %11s %10s %8s %6s %9s %6s %4s %4s %13s",
" data", " time", "Number_Box", "Level(mmWC)", "Qual(kg)", "Per(%)", "Pres(MPa)", "T(deg)", "Warn", "Err", " PSN ");
data.count = strlen(data.str);
DWIN_Refresh(&data);
// 设置曲线的纵坐标 // 设置曲线的纵坐标
// 绿轴:液位(百分比) // 绿轴:液位(百分比)
data.oper = DWIN_OPER_WRITE; data.oper = DWIN_OPER_WRITE;
@ -655,8 +674,11 @@ void Form_Task(void *p_arg)
Form_LoadRecent(); Form_LoadRecent();
// 开机画面等待4秒 // 开机画面等待4秒
osDelay(4000); osDelay(3000);
// 跳转到首页 // 跳转到首页
if(dcBuff.configDisplay.ch_en)
Form_SwitchPage(50);
else
Form_SwitchPage(0); Form_SwitchPage(0);
while(1) while(1)
@ -2252,14 +2274,16 @@ void Form_QueryCurve(int32_t lastRec)
0x5A, 0xA5, 0x0F, 0x82, 0x28, 0x03, 0x5A, 0xA5, 0x0F, 0x82, 0x28, 0x03,
282 >> 8, 282 & 0xFF, 579 >> 8, 579 & 0xFF, 282 >> 8, 282 & 0xFF, 579 >> 8, 579 & 0xFF,
282 >> 8, 282 & 0xFF, 158 >> 8, 158 & 0xFF, 282 >> 8, 282 & 0xFF, 158 >> 8, 158 & 0xFF,
1212 >> 8, 1212 & 0xFF, 158 >> 8, 158 & 0xFF}; 1212 >> 8, 1212 & 0xFF, 158 >> 8, 158 & 0xFF
};
uint8_t cmd2[50] = { uint8_t cmd2[50] = {
0x5A, 0xA5, 0x0B, 0x82, 0x28, 0x09, 0x5A, 0xA5, 0x0B, 0x82, 0x28, 0x09,
1212 >> 8, 1212 & 0xFF, 579 >> 8, 579 & 0xFF, 1212 >> 8, 1212 & 0xFF, 579 >> 8, 579 & 0xFF,
282 >> 8, 282 & 0xFF, 579 >> 8, 579 & 0xFF 282 >> 8, 282 & 0xFF, 579 >> 8, 579 & 0xFF
}; };
uint8_t cmd3[50] = { uint8_t cmd3[50] = {
0x5A, 0xA5, 0x09, 0x82, 0x28, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x1F}; 0x5A, 0xA5, 0x09, 0x82, 0x28, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x1F
};
UART_Transmit(&huart10, cmd1, cmd1[2] + 3); UART_Transmit(&huart10, cmd1, cmd1[2] + 3);
UART_Transmit(&huart10, cmd2, cmd2[2] + 3); UART_Transmit(&huart10, cmd2, cmd2[2] + 3);
UART_Transmit(&huart10, cmd3, cmd3[2] + 3); UART_Transmit(&huart10, cmd3, cmd3[2] + 3);
@ -2302,6 +2326,31 @@ void Form_About()
Form_RefreshGrid(&gridAbout); Form_RefreshGrid(&gridAbout);
} }
// 关于信息
void Form_En_About()
{
uint8_t row = 0;
sprintf(gridAboutEn.rowStr[row++], "PSN of Device: 20%02d%02d%02d%02d%03d",
dcBuff.configBottle.PSN[0], dcBuff.configBottle.PSN[1], dcBuff.configBottle.PSN[2],
dcBuff.configBottle.PSN[3], (dcBuff.configBottle.PSN[4] << 8) | dcBuff.configBottle.PSN[5]);
sprintf(gridAboutEn.rowStr[row++], " Hard ver: %d.%d, Soft ver: %d.%d, data20%02d-%02d-%02d",
dcBuff.powerInfo.hardVer.major, dcBuff.powerInfo.hardVer.minor,
dcBuff.powerInfo.softVer.major, dcBuff.powerInfo.softVer.minor,
dcBuff.powerInfo.softDate.year, dcBuff.powerInfo.softDate.month, dcBuff.powerInfo.softDate.day);
sprintf(gridAboutEn.rowStr[row++], " Communication module version: %s", dcBuff.powerInfo.dtuRevison);
sprintf(gridAboutEn.rowStr[row++], " IMEI:%s", dcBuff.powerInfo.imeiNumber);
sprintf(gridAboutEn.rowStr[row++], " SIM: %s", dcBuff.powerInfo.simNumber);
sprintf(gridAboutEn.rowStr[row++], " The signal of 4G: %d%%, Err Code: %s", dcBuff.dtuData.rssi, dcBuff.powerInfo.gprsFailCode);
sprintf(gridAboutEn.rowStr[row++], " Location : %.6f, %.6f", dcBuff.dtuData.longitude * 0.000001, dcBuff.dtuData.latitude * 0.000001);
sprintf(gridAboutEn.rowStr[row++], " Positioning Time: 20%02d-%02d-%02d %02d:%02d:%02d",
dcBuff.dtuData.sysTime.year, dcBuff.dtuData.sysTime.month, dcBuff.dtuData.sysTime.day,
dcBuff.dtuData.sysTime.hour, dcBuff.dtuData.sysTime.minute, dcBuff.dtuData.sysTime.second);
sprintf(gridAboutEn.rowStr[row++], " Copyright Anjiehui Internet of Things Information Technology (Suzhou) Co., LTD");
Form_RefreshGrid(&gridAboutEn);
}
// 按键任务主体 // 按键任务主体
void Key_Task(void *p_arg) void Key_Task(void *p_arg)
{ {
@ -2328,15 +2377,34 @@ void Key_Task(void *p_arg)
continue; continue;
page = val; page = val;
if(val == 3) // 进入设置页 if((val == 3)||(val == 0x13)) // 进入设置页
Form_RestoreParam(); Form_RestoreParam();
else if(val == 4) // 显示关于信息 else if(val == 4) // 显示关于信息
{ {
Form_SwitchPage(23); // 切换到开机画面 // Form_SwitchPage(23); // 切换到开机画面
osDelay(2000); // 延时2秒 // osDelay(2000); // 延时2秒
Form_SwitchPage(21); // 切换到关于页面 // Form_SwitchPage(21); // 切换到关于页面
Form_About(); // 显示关于信息 Form_About(); // 显示关于信息
} }
else if(val == 0x14) // 显示关于信息
{
// Form_SwitchPage(23); // 切换到开机画面
// osDelay(2000); // 延时2秒
// Form_SwitchPage(21); // 切换到关于页面
Form_En_About(); // 显示关于信息
}
else if(val == 0x15) // 显示关于信息
{
// Form_En_About(); // 显示关于信息
dcBuff.configDisplay.ch_en=0;
Config_SaveConfig();
}
else if(val == 0x05) // 显示关于信息
{
dcBuff.configDisplay.ch_en=1;
// Form_En_About(); // 显示关于信息
Config_SaveConfig();
}
} }
else if(key.Addr == 0x5012) // 设置 else if(key.Addr == 0x5012) // 设置
{ {
@ -2345,6 +2413,7 @@ void Key_Task(void *p_arg)
Form_DispMessage("请输入密码!", DWIN_COLOR_GREEN); Form_DispMessage("请输入密码!", DWIN_COLOR_GREEN);
// 弹出密码输入对话(触控区域在可视区域之外,只能由程序弹出) // 弹出密码输入对话(触控区域在可视区域之外,只能由程序弹出)
DWIN_Touch(2040, 257); DWIN_Touch(2040, 257);
} }
else // 取消 else // 取消
Form_RestoreParam(); Form_RestoreParam();
@ -2386,7 +2455,7 @@ void Key_Task(void *p_arg)
{ {
Form_DispMessage("请输入密码!", DWIN_COLOR_GREEN); Form_DispMessage("请输入密码!", DWIN_COLOR_GREEN);
// 弹出密码输入对话(触控区域在可视区域之外,只能由程序弹出) // 弹出密码输入对话(触控区域在可视区域之外,只能由程序弹出)
DWIN_Touch(1541, 166); DWIN_Touch(1581, 166);//DWIN_Touch(1541, 166);
} }
else if(key.Addr == 0x502E) // 修改PSN的密码输入 else if(key.Addr == 0x502E) // 修改PSN的密码输入
{ {

View File

@ -218,7 +218,7 @@ void Config_Open()
Config_LoadConfig(); Config_LoadConfig();
// // ²âÊÔ´úÂë // // ²âÊÔ´úÂë
dcBuff.configBottle.PSN[0] = 25; // PSN: 2021092980001 dcBuff.configBottle.PSN[0] = 25; // PSN: 2025092980002
dcBuff.configBottle.PSN[1] = 9; dcBuff.configBottle.PSN[1] = 9;
dcBuff.configBottle.PSN[2] = 29; dcBuff.configBottle.PSN[2] = 29;
dcBuff.configBottle.PSN[3] = 80; dcBuff.configBottle.PSN[3] = 80;