OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8302|回复: 2

emwin xbf字体问题

[复制链接]

78

主题

182

帖子

0

精华

高级会员

Rank: 4

积分
533
金钱
533
注册时间
2013-7-4
在线时间
11 小时
发表于 2013-12-9 20:09:05 | 显示全部楼层 |阅读模式
跟着大家的教程移植完emwin以后,对官方的xbf字库又有点兴趣,感觉官方的功能很全很方便,但是根据例程改编的时候碰到了麻烦


#include "GUI.h"
#include "ff.h"
GUI_FONT     XBFFont;
GUI_XBF_DATA XBF_Data;
static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer) {
  DWORD NumBytesRead;
  FIL hFile;
FIL fsrc;        // ?¨????????×÷?à
FRESULT res;  // ?¨????×÷?á??±???
UINT br;
char string[30];
  hFile = *(FIL *)pVoid;
  /* Set file pointer to the requested position */
res = f_open(&fsrc, "0:/sys/Font18.xbf", FA_OPEN_EXISTING | FA_READ);
  if (res != FR_OK) {
    return 1; /* Error */
  }
res = f_lseek(&fsrc,Off); //?????×???·  
if (res != FR_OK) {
    return 1; /* Error */
  }
res=f_read(&fsrc,string,NumBytes,&br);
// pBuffer=string;
// res=f_read(&fsrc,pBuffer,NumBytes,&br);
// pBuffer=&string;
if (res != FR_OK) {
    return 1; /* Error */
  }
res = f_lseek(&fsrc,Off); //?????×???·  
if (res != FR_OK) {
    return 1; /* Error */
  }
res=f_read(&fsrc,pBuffer,NumBytes,&br);
// pBuffer=string;
// res=f_read(&fsrc,pBuffer,NumBytes,&br);
// pBuffer=&string;
if (res != FR_OK) {
    return 1; /* Error */
  }
//  /* Read font data */
//  if (!ReadFile(hFile, pBuffer, NumBytes, &NumBytesRead, 0)) {
//    return 1; /* Error */
//  }
  if (br != NumBytes) {
    return 1; /* Error */
  }
  return 0; /* Ok */
}

void readFontfromXBFSD(void){
FIL fsrc;        // ?¨????????×÷?à
FRESULT res;  // ?¨????×÷?á??±???
res = f_open(&fsrc, "0:/sys/Font18.xbf", FA_OPEN_EXISTING | FA_READ);
  GUI_XBF_CreateFont(&XBFFont,             /* Pointer to GUI_FONT structure in RAM */
                     &XBF_Data,         /* Pointer to GUI_XBF_DATA structure in RAM */
                     GUI_XBF_TYPE_PROP, /* Font type to be created */
                     _cbGetData,        /* Pointer to callback function */
                     &fsrc);            /* Pointer to be passed to GetData function */
// res = f_close(&fsrc); //??±?×???
// GUI_SetFont(&XBFFont);
GUI_DispStringAt("Hello world!", 160, 80);
}


这是我的代码,程序跑到GUI_DispStringAT的时候,跑了2遍_cbGetData然后竟然开始从头跑程序,然后又开始跑到readFontfromXBFSD函数,继续循环 不是很明白为什么会开始重新跑程序,希望有人能帮一下




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

78

主题

182

帖子

0

精华

高级会员

Rank: 4

积分
533
金钱
533
注册时间
2013-7-4
在线时间
11 小时
 楼主| 发表于 2013-12-10 09:20:35 | 显示全部楼层
搞出来了...不过字都是乱码......求一个全功能版FontCvt,谢谢大家啦
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-12-10 23:17:55 | 显示全部楼层
还没搞过,帮顶。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 08:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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