硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1781|回复: 2
收起左侧

stemwin 中文字库显示,常常出现字库丢失的问题,请问有什么排查思路

[复制链接]

100

主题

94

回帖

394

积分

高级会员

积分
394
发表于 2019-11-11 07:44:50 | 显示全部楼层 |阅读模式
16 和 24  有两种字库,貌似一起显示会出现丢失问题,请赐教一些思路
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2019-11-11 07:48:52 | 显示全部楼层
需要楼主简单介绍下你的实现方式,XBF,SIF或者GBK,以及你字库的存储上方式。
回复

使用道具 举报

100

主题

94

回帖

394

积分

高级会员

积分
394
 楼主| 发表于 2019-11-11 10:45:04 | 显示全部楼层
本帖最后由 wen 于 2019-11-11 11:31 编辑

XBF,存储在nand flash 上,fat32,两种字体,如果有一处大字体丢了,其他页面的大字体也丢了;小字体也是一样的
u8 Create_XBF16(u8 *fxpath)
{
        int result;
        result = f_open(&XBF16FontFile,(const TCHAR*)fxpath,FA_READ);        //打开字库文件
        
        if(result != FR_OK) return 1;
        
        /* 创建XBF16字体 */
        GUI_XBF_CreateFont(        &XBF16_Font,    //指向GUI_FONT结构
                                                &XBF16_Data,         //指向GUI_XBF_DATA结构
                                                GUI_XBF_TYPE_PROP_AA2_EXT,//要创建的字体类型
                                                _cbGetData,           //回调函数
                                                &XBF16FontFile);  //窗体给回调函数_cbGetData的参数

        return 0;
}

static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
        int result;
        u16 bread;
        FIL *hFile;

        hFile = (FIL*)pVoid;
        
        /* 设置在文件中的偏移(位置) */
        result = f_lseek(hFile,Off);
        if(result != FR_OK)        return 1; //返回错误

        taskENTER_CRITICAL();           //进入临界区
        result = f_read(hFile,pBuffer,NumBytes,(UINT *)&bread); //读取数据
        taskEXIT_CRITICAL();            //退出临界区
        
        if(result != FR_OK) return 1; //返回错误
        return 0;
}
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 05:26 , Processed in 0.037552 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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