博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件
阅读量:5265 次
发布时间:2019-06-14

本文共 1446 字,大约阅读时间需要 4 分钟。

最近项目中用到几种字体,stm32的内部flash以经入不敷出。没办法!只好找度娘及求助群里的高手,这里对等高手表示感谢。学习了他们的一些思想。

下面是找到的相关链接:

 

这里我主要用的是文章的方法,在他的基础上进行一定的改进。解决控件用汉字居中等问题。

其实我的方法很简单,增加了每个字的元素一些标量(xSize, ySize, 字节等)就可以了。

因为ucGUI中对文字的高度宽度的取值不光只有取模时用到,在计算居中及文本长度时也同样被用到。这就是为什么,修改GUIPROP_DispChar(c)函数后控件文本中的字感觉变的很长!

 

下面是我的修改方法:

把{ 16, 16, 2, (void GUI_FLASH *)GUI_FontHZ16_Flash_BaseAddr},在它的下面复制94次就可以了。

OK到这里,问题就解决了。哈哈,是不是感觉也太简单了~ 事实确实是这样子。主要是站在巨人的肩膀上进行改进的。

 

还有个人认为ASCII码不算很多,就没有必要放到外部FLASH了。所以我对其保留。

下面是我的文件:

http://pan.baidu.com/share/link?shareid=157310&uk=118334538

效果:

 

补充:

在把自定义字体设定为默认字体时,控件没有对基默认指定。要手动去指定,在程序开始的地方加入如下代码:

1     TEXT_SetDefaultFont(GUI_DEFAULT_FONT);2     BUTTON_SetDefaultFont(GUI_DEFAULT_FONT);3     EDIT_SetDefaultFont(GUI_DEFAULT_FONT);4     LISTVIEW_SetDefaultFont(GUI_DEFAULT_FONT);5     FRAMEWIN_SetDefaultFont(GUI_DEFAULT_FONT);

省略了一定控件, 这里根据自己的需要去添加。

下面奉上4个字体文件:

样本:

 

 

空的时候写了一个小软件,用来烧写字库到外部FLASH,如果你也是用的stm32的话就也可以用上,不过要稍做改动。当然是FLASH驱动那部分。改动如下:

改了这三个地方就可以了。

上位机是用C#写的,与下位机的接口是rs232, 采用Modbus协议, 115200波特率。

下面是软件截图,附件中包括源码。

附件如下:

包括上下位机源码。

 

 2013.3.12  补充

   用以上的操作方法, 在使用控件时,多多少少,还是会有一些问题。后来仔细的对“洋洋kan世界”的文章进行了研究,用他的方法,可以更好的规避控件中中文的 自动换行,光标停留等问题。MULTIEDIT中的应用,可以说完美的解决。

 总共需要修改GUI.h, GUI_UC_EncodeNone.c, GUIType.h三个文件,和追加一个GUICharPEx.c文件。上文中的四种字库也相应的做了一定的修改。

这些文件都在下面的附件中。 整个的移植过程,可以参考“洋洋kan世界”的文章。这里就不细说了。 部分的改进,在其文章中也有说明。可以用以下附件直接替换GUI源文件对应的文件。

在上文的下载字库工具可能过于繁琐,在后续文章中会进行改进,使用YMODEM高效的文件传输协议传送。

 

 

 

 

转载于:https://www.cnblogs.com/hiker-blogs/archive/2013/01/04/2843538.html

你可能感兴趣的文章
【井字游戏】做一款回忆童年的游戏
查看>>
高性能的异步爬虫
查看>>
数据结构(二):栈
查看>>
实训第五天
查看>>
平台维护流程
查看>>
SQL (FMDB)
查看>>
2012暑期川西旅游之总结
查看>>
Linux发行版的排行
查看>>
宾得镜头大全与发展史
查看>>
spread+wackamole打造全新高可用+负载均衡
查看>>
Xcode 快捷键及代码格式化
查看>>
12010 解密QQ号(队列)
查看>>
Docker简明教程(以安装wget程序为例)
查看>>
2014年辛星完全解读Javascript第一节
查看>>
装配SpringBean(一)--依赖注入
查看>>
daydayup2 codeforces143C
查看>>
ANT打包J2EE项目war包
查看>>
UESTC-我要长高 DP优化
查看>>
java选择文件时提供图像缩略图[转]
查看>>
当DIV内出现滚动条,fixed实效怎么办?
查看>>