GUI图形屏在emWin应用中使用Unicode字库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GUI图形屏在emWin应用中使用Unicode字库相关的知识,希望对你有一定的参考价值。

1.1需要安装的软件

MDK-ARM V5.10:

安装完MDK-ARMV5.10 以后还要安装STM32F2xx PACK(MDK V5.10 只能安装Keil.STM32F2xx_DFP.2.1.0.pack或-更低版本),如果不想安装PACK,安装MDKCortex-M Legacy Device Support V5.10(mdkcm510.exe)也是可以的;另外MDK-ARMV5.10以后的版本是无法支持中文UTF-8编码的。

C文件编码格式更改工具:..\docs\tools\EditPlus

J-LINK相关驱动程序。

1.2连接硬件

技术分享

1.3访问GUI图形屏的Nand-Flash

通电GUI图形屏并将N-LINK下载线插入电脑USB接口(两步骤不分先后)

②按一下N-LINK的连接键,GUI图形屏即可进入U盘模式(使用系统自带驱动),之后就可以跟U盘一模一样访问GUI图形屏的Nand-Flash(写速度3.2Mbytes/S,读速度5.6Mbytes/S)GUI图形屏进入U盘模式后屏幕是没显示的。

③拷贝Nand-Flash资料到本地磁盘,然后格式化Nand-Flash

备注:256Mbyte产品格式化为FAT32FAT都可以,但128Mbyte产品只能格式化为FAT

技术分享

技术分享

1.4 建立HelloWord例程

①用MDK打开工程:

..\docs\democodes\empty_prj_emwin_noOS_207ve_SPI\mdk_proj\demo_emwin.uvproj

技术分享

②修改maintask.c文件:

#include "dialog.h"

#include <string.h>

#include <stdio.h>

#include "stm32f2xx.h"

#include "glcd.h"

 

void MainTask(void)

{

     GUI_Init();

     _mHelloWord(WM_HBKWIN);

     while(1) {GUI_Delay(20);}

}


③在..\docs\democodes\empty_prj_emwin_noOS_207ve_SPI\application目录创建helloword.c文件并加入工程:

技术分享


④编写helloword.c程序:

#include"GUI.h"

#include"dialog.h"

externGUI_CONST_STORAGE GUI_FONT_GL font_uni_16m16;

#define ID_WIN        1001

#define ID_BUT         1002

static constGUI_WIDGET_CREATE_INFO _aHelloWord[] =  //控件结构体数组

{

{WINDOW_CreateIndirect,0, ID_WIN, 0, 0, 640, 480, 0, 0},

{BUTTON_CreateIndirect,"HelloWord", ID_BUT, 280,  430,80, 20},

};

 

static void_cbHelloWord(WM_MESSAGE* pMsg)          //窗体回调函数

{

    switch(pMsg->MsgId)

    {

    case WM_PAINT:

           GUI_SetColor(GUI_BLUE);

           GUI_SetFont((GUI_FONT*)&font_uni_16m16);      //设置当前字库

           GUI_SetTextMode(GUI_TEXTMODE_TRANS);

           GUI_DispStringAt("HelloWord 您好!", 3, 3);        //重绘文字

           break;

    case WM_INIT_DIALOG:

           break;

    case WM_NOTIFY_PARENT:

              break;

    default:

           WM_DefaultProc(pMsg);

           break;

    }

}

 

WM_HWIN_mHelloWord(WM_HWIN hParent)            //窗体创建函数

{

    WM_HWIN hWIN;

    hWIN = GUI_CreateDialogBox(_aHelloWord,GUI_COUNTOF(_aHelloWord), _cbHelloWord, hParent, 0, 0);

    return hWIN;

}

技术分享


⑤更改HelloWord.c文件编码格式为UTF-8编码:

使用UNICODE字库还有个重要的工作就是修改包含有中文的c 文件编码格式(没有中文的c 文件可以不修改),因为总要告诉编译器用什么编码格式去编译中文文字(否则会按照电脑操作系统的编码格式编译),因为我们使用的是UNICODE 编码,所以要告诉编译器用UTF-8编码格式编译中文(因为MDK 编译器不支持UNICODE编码,emWin程序运行时再在已移植好的驱动层将UTF-8转成UNICODE编码) ,需安装EditPlus软件。

技术分享

技术分享

技术分享


⑥创建UNICODE字库程序font_uni_16m16.c

#include"GUI.h"

 

staticGUI_CONST_STORAGE unsigned char font_uni_16m16_xsize2[]= {16};  //字库第2分段字符的宽(数组)

 

staticGUI_CONST_STORAGE unsigned char font_uni_16m16_xsize1[]= {8};   //字库第1分段字符的宽(数组)

 

staticGUI_CONST_STORAGE GUI_FONT_PROP_GL font_uni_16m16_prop2 = { //字库第2分段

   0x0080 //起始字符

  ,0xffff   //结束字符

  ,&font_uni_16m16_xsize2[0]

  ,0

};

 

staticGUI_CONST_STORAGE GUI_FONT_PROP_GL font_uni_16m16_prop1 = { //字库第1分段

   0x0020 //起始字符

  ,0x007f   //结束字符

  ,&font_uni_16m16_xsize1[0]

  ,&font_uni_16m16_prop2  //指向下1分段

};

 

GUI_CONST_STORAGEGUI_FONT_GL font_uni_16m16 ={

   GUI_FONTTYPE_PROP_GL

  ,16       //height of font

  ,16       //space of font y

  ,1        //magnification x(not support)

  ,1        //magnification y(not support)

  ,&font_uni_16m16_prop1

  ,0        //Baseline

  ,0        //Height of lowercase characters

  ,0        //Height of capital characters

  ,8        //1:gb2312 2:gbk 4:big5 8:unicode(monospaced) 16:unicode(non-monospaced)

  ,"a16:u16" //Library of [ascii]:[gb2312/gbk/big5/unicode/utf-8]

};

技术分享


⑦用..\docs\tools\fontGen.exe字库工具创建ASCII字库:a16.bin

技术分享


⑧用..\docs\tools\fontGen.exe字库工具创建UNICODE字库:u16.bin

技术分享


⑨编译HelloWord工程

技术分享

1.5卸载GUI图形屏的Nand-Flash

N-LINK下载线处于空闲状态时(指示灯不再闪烁),按一下N-LINK下载线的连接键(或者跟U盘一样卸载、直接从电脑上拔掉N-LINK下载线都可以)GUI图形屏会重启并进入工作模式。

1.6下载并运行HelloWord例程

技术分享

技术分享

技术分享

技术分享


GUI图形屏产品说明书

第一次使用GUI图形屏_HelloWord例程

GUI图形屏性能测试(SPI接口)

emWin注意事项

emWin驱动移植(上)

emWin驱动移植(下)

emWin使用字库和位图

诺嵌光电

www.neqee.com

以上是关于GUI图形屏在emWin应用中使用Unicode字库的主要内容,如果未能解决你的问题,请参考以下文章

GUI图形屏在emWin应用中的LCD驱动移植

emWin 2天速成实例教程000_如何快速入门ucGUI/emWin

emwin时钟指针如何旋转

第3版emWin教程第30章 emWin6.x的SIF格式全字库生成和使用方法(Unicode编码,QSPI Flash方案)

第3版emWin教程第28章 emWin6.x的C文件格式的汉字生成和实现(Unicode编码)

第3版emWin教程第30章 emWin6.x的SIF格式全字库生成和使用方法(Unicode编码,QSPI Flash方案)