|
|
文本变量,如果同时显示字母和汉字,文本长度应该怎么设置?譬如:这个文本可以显示"打开",也可以显示1或2等单个数字,文本宽度应该设置为2还是4?1个中文汉字理论上等于2个字母,文本宽度应该设4?我的第1个文本地址是1000,第2个文本地址是1004,第3个文本地址是1008,实际效果是写第1个,刷新的却是第2个文本,乱了。
使用的函数如下:
DwinDgusSetTextVar(0x1000, "打开",4);
// 文本变量设置
void DwinDgusSetTextVar(uint16_t Vp, u8* text, u16 length)
{
uint8_t cmd_buffer[20];
uint32_t postion = 0;
u8 i;
cmd_buffer[postion++] = DGUS_FRAME_HEAD0; // 帧头:5A A5
cmd_buffer[postion++] = DGUS_FRAME_HEAD1;
cmd_buffer[postion++] = 5 + length; // 数据长度:(包括指令、地址、数据、校验位)
cmd_buffer[postion++] = 0x82; // 指令: 82-写指令
cmd_buffer[postion++]= (Vp>>8)&0xff; // 变量地址: 高字节
cmd_buffer[postion++]= Vp&0xff; // 变量地址: 低字节
for (i = 0; i < length; i++)
{
cmd_buffer[postion++] = text[i];
}
cmd_buffer[postion++] = 0xFF; // 结束符,后面字符不再显示
cmd_buffer[postion++] = 0xFF;
UARTForTFTBytesSend(cmd_buffer, postion); // 串口发送
}
|
|