新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ucgui漢字庫存放到外部的flash(控件可用)及寫外部FLASH軟件

        ucgui漢字庫存放到外部的flash(控件可用)及寫外部FLASH軟件

        作者: 時間:2016-11-27 來源:網絡 收藏
        最近項目中用到幾種字體,stm32的內部flash以經入不敷出。沒辦法!只好找度娘及求助群里的高手,這里對Eric2013,洋洋kan世界等高手表示感謝。學習了他們的一些思想。

        下面是找到的相關鏈接:

        本文引用地址:http://www.104case.com/article/201611/322358.htm

        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

        效果:

        補充:

        在把自定義字體設定為默認字體時,控件沒有對基默認指定。要手動去指定,在程序開始的地方加入如下代碼:

        1TEXT_SetDefaultFont(GUI_DEFAULT_FONT);2BUTTON_SetDefaultFont(GUI_DEFAULT_FONT);3EDIT_SetDefaultFont(GUI_DEFAULT_FONT);4LISTVIEW_SetDefaultFont(GUI_DEFAULT_FONT);5FRAMEWIN_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高效的文件傳輸協議傳送。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 共和县| 白银市| 如皋市| 沙湾县| 枞阳县| 丹凤县| 白城市| 鲜城| 谢通门县| 乌什县| 威海市| 桐城市| 从江县| 伽师县| 大方县| 黄陵县| 锦州市| 哈巴河县| 正镶白旗| 丁青县| 旺苍县| 阜宁县| 牙克石市| 黔南| 临桂县| 涿鹿县| 眉山市| 铁岭市| 镇巴县| 同江市| 白朗县| 克东县| 马尔康县| 潜江市| 玛纳斯县| 吉水县| 卫辉市| 紫阳县| 富蕴县| 镇原县| 湟源县|