ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件
2013-01-04 00:38
323 查看
最近项目中用到几种字体,stm32的内部flash以经入不敷出。没办法!只好找度娘及求助群里的高手,这里对Eric2013 ,洋洋kan世界等高手表示感谢。学习了他们的一些思想。
下面是找到的相关链接:
http://blog.chinaunix.net/uid-361890-id-2953183.html
http://www.openedv.com/posts/list/9736.htm;jsessionid=6B5FA51FE6BBC280B752D9B63BA57895
这里我主要用的是crazytyt文章的方法,在他的基础上进行一定的改进。解决控件用汉字居中等问题。
其实我的方法很简单,增加了每个字的元素一些标量(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
效果:
补充:
在把自定义字体设定为默认字体时,控件没有对基默认指定。要手动去指定,在程序开始的地方加入如下代码:
省略了一定控件, 这里根据自己的需要去添加。
下面奉上4个字体文件:
http://pan.baidu.com/share/link?shareid=157719&uk=118334538
样本:
空的时候写了一个小软件,用来烧写字库到外部FLASH中,如果你也是用的stm32的话就也可以用上,不过要稍做改动。当然是FLASH驱动那部分。改动如下:
改了这三个地方就可以了。
上位机是用C#写的,与下位机的接口是rs232, 采用Modbus协议, 115200波特率。
下面是软件截图,附件中包括源码。
附件如下:
包括上下位机源码。
http://pan.baidu.com/share/link?shareid=157523&uk=118334538
2013.3.12 补充
用以上的操作方法, 在使用控件时,多多少少,还是会有一些问题。后来仔细的对“洋洋kan世界”的文章进行了研究,用他的方法,可以更好的规避控件中中文的 自动换行,光标停留等问题。MULTIEDIT中的应用,可以说完美的解决。
总共需要修改GUI.h, GUI_UC_EncodeNone.c, GUIType.h三个文件,和追加一个GUICharPEx.c文件。上文中的四种字库也相应的做了一定的修改。
这些文件都在下面的附件中。 整个的移植过程,可以参考“洋洋kan世界”的文章。这里就不细说了。 部分的改进,在其文章中也有说明。可以用以下附件直接替换GUI源文件对应的文件。
在上文的下载字库工具可能过于繁琐,在后续文章中会进行改进,使用YMODEM高效的文件传输协议传送。
http://pan.baidu.com/share/link?shareid=368205&uk=118334538
下面是找到的相关链接:
http://blog.chinaunix.net/uid-361890-id-2953183.html
http://www.openedv.com/posts/list/9736.htm;jsessionid=6B5FA51FE6BBC280B752D9B63BA57895
这里我主要用的是crazytyt文章的方法,在他的基础上进行一定的改进。解决控件用汉字居中等问题。
其实我的方法很简单,增加了每个字的元素一些标量(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
效果:
补充:
在把自定义字体设定为默认字体时,控件没有对基默认指定。要手动去指定,在程序开始的地方加入如下代码:
TEXT_SetDefaultFont(GUI_DEFAULT_FONT); BUTTON_SetDefaultFont(GUI_DEFAULT_FONT); EDIT_SetDefaultFont(GUI_DEFAULT_FONT); LISTVIEW_SetDefaultFont(GUI_DEFAULT_FONT); FRAMEWIN_SetDefaultFont(GUI_DEFAULT_FONT);
省略了一定控件, 这里根据自己的需要去添加。
下面奉上4个字体文件:
http://pan.baidu.com/share/link?shareid=157719&uk=118334538
样本:
空的时候写了一个小软件,用来烧写字库到外部FLASH中,如果你也是用的stm32的话就也可以用上,不过要稍做改动。当然是FLASH驱动那部分。改动如下:
改了这三个地方就可以了。
上位机是用C#写的,与下位机的接口是rs232, 采用Modbus协议, 115200波特率。
下面是软件截图,附件中包括源码。
附件如下:
包括上下位机源码。
http://pan.baidu.com/share/link?shareid=157523&uk=118334538
2013.3.12 补充
用以上的操作方法, 在使用控件时,多多少少,还是会有一些问题。后来仔细的对“洋洋kan世界”的文章进行了研究,用他的方法,可以更好的规避控件中中文的 自动换行,光标停留等问题。MULTIEDIT中的应用,可以说完美的解决。
总共需要修改GUI.h, GUI_UC_EncodeNone.c, GUIType.h三个文件,和追加一个GUICharPEx.c文件。上文中的四种字库也相应的做了一定的修改。
这些文件都在下面的附件中。 整个的移植过程,可以参考“洋洋kan世界”的文章。这里就不细说了。 部分的改进,在其文章中也有说明。可以用以下附件直接替换GUI源文件对应的文件。
在上文的下载字库工具可能过于繁琐,在后续文章中会进行改进,使用YMODEM高效的文件传输协议传送。
http://pan.baidu.com/share/link?shareid=368205&uk=118334538
相关文章推荐
- ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件
- (原创)如何将ucgui的汉字库存放到外部的flash memory(ucgui)(汉字库)(外部flash)
- 如何将ucgui的汉字库存放到外部的flash memory(ucgui)(汉字库)(外部flash)
- 如何将ucgui的汉字库存放到外部的flash memory(ucgui)(汉字库)(外部flash)
- STM32 串口烧写 FLASH 外部字库 UCGUI显示 自我学习总结
- 分布式一致性解决分布式一致性问题用二阶段提交一个没有高可用组件的数据库不能依靠外部软件来实现高可用
- UCGUI使用外部字库芯片显示汉字
- ucGUI EDIT控件显示汉字尾部出现乱码问题的一个BUG
- 控件台版/MFC版本的简单生日提醒软件及源码
- 每天学习flash一点(3) flash外部读取xml
- 如何将控件放到指定位置上
- 从外部的js文件中获取ASPX页面的控件ClientID
- ios/android代码生成FLASH可用的actionscript代码(*.ane)
- 去除网页FLASH"单击并激活此控件"解决办法
- AnyGantt Flash甘特图组件Flash网页甘特图控件
- 没有可用的软件包 git,但是它被其它的软件包引用了。
- 图:Flash渲染控件安装失败原因所在.
- 使用C#尽可能以最少的代码完成多层次的软件配置(基于PropertyGrid控件) zt
- Flash 仪表控件 FusionGadgets【转】
- cs文件,外部类操作窗体控件