迪文科技论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: wsq4097226

【提问】自定义字库

[复制链接]

5

主题

32

回帖

168

积分

注册会员

Rank: 2

积分
168
 楼主| 发表于 昨天 16:11 | 显示全部楼层
文本变量,如果同时显示字母和汉字,文本长度应该怎么设置?譬如:这个文本可以显示"打开",也可以显示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);            // 串口发送
}
               
回复

使用道具 举报

0

主题

674

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
16639
发表于 昨天 16:15 | 显示全部楼层
文本显示控件的文本长度是以字节为单位,一个中文汉字需要2个字节,一个ASCII字符需要1个字节,如果您是需要显示“打开”,那么文本长度就需要设置4个字节,变量地址需要规划好,不能冲突。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-1-30 07:14 , Processed in 0.033982 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表