專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

外部字庫芯片GT32L32S0140的移植

作者:日照北京   來源:會員上傳   點擊數(shù):  更新時間:2014年05月20日   【字體:

經(jīng)過幾天的努力終于移植成功了,現(xiàn)把遇到的問題記錄下來。

一步一步來,

1、先做通硬件,和驅(qū)動,自己動手找到一塊舊板子,把GT32L32焊接到板子上,連接到主板的spi2端口上。安裝網(wǎng)上的步驟把驅(qū)動字庫移植過來。先運 行一下,看會不會出漢字呢?。。。。。。自然不可能,期望值太高了。接下來開始找問題,發(fā)現(xiàn)字庫芯片的地址計算有問題。趕緊修正,再次測試,讀出了字庫信 息。為了驗證讀出的是否正確,手工將數(shù)據(jù)翻譯成二進制碼,在字模上點出來,哇!居然正確,不可思議。

2、將驅(qū)動移到到ucgui上。先ucgui上先顯示一下試試,不要異想天開,路需要自己走出來,山需要自己劈開。下面開始查找問題,經(jīng)過檢查,發(fā)現(xiàn)字顯 示的位置不對,x=-139了,如果改x=10,漢字就顯示出來了,說明坐標不對。坐標又是從哪里來呢?經(jīng)過仔細檢查,找到了函數(shù)

最關(guān)鍵語句  GUICharP.c  中 
int GUIPROP_GetCharDistX(U16P c)
{
  const GUI_FONT_PROP GUI_UNI_PTR * pProp = GUIPROP_FindChar(GUI_Context.pAFont->p.pProp, c);
  return (pProp) ? (pProp->paCharInfo + (c-pProp->First))->XSize * GUI_Context.pAFont->XMag : 0;
}

有這個(c-pProp->First)。

所以需要把移植的字庫

GUI_FLASH const GUI_CHARINFO GUI_FontHZ16_CharInfo[] = { }數(shù)組里復(fù)制93個。

 

 

再次運行,美麗的漢字顯示出來了! 大功告成,哈哈哈,大笑一下。

外部字庫移植成功后,發(fā)現(xiàn)一個缺點,在使用外部字庫里的 ASC字符的時候,出現(xiàn)一個上一個下,歪歪扭扭。后分析可能是需要在字體庫里定義GUI_CHARINFO的寬度吧,也可能不是。

 


決定采用系統(tǒng)里的字庫,

GUI_FLASH  const GUI_FONT_PROP GUI_FontHZ16_Prop0020= {
      0x0020,
      0x007f,
      &GUI_CharInfo_Font16ASCII[0],  // 對于ASC碼字符,采用系統(tǒng)內(nèi)的16號字。不用芯片上的。
      (void *)&GUI_FontHZ16_Propa1a1
};

在第三個參數(shù)是指向系統(tǒng)的字庫信息索引。

并且定義了粗體字。字庫移植完成。


 

以后有空打算加上拼音輸入法:初步構(gòu)想是:

在軟件里定義一個數(shù)組  pyArr{“a”,字庫的地址,a拼音的字數(shù)},。。。{“ai”,字庫的地址,ai拼音的字數(shù)}。。。

在字庫中自定義a拼音的漢字區(qū)位碼,ai的區(qū)位碼......所有漢字的區(qū)位碼保存在字庫的一個空間中。

在軟件中輸入一個拼音,比如:“bo”的時候,在數(shù)組pyArr中找到拼音的 記錄,根據(jù)字庫地址和拼音字數(shù),取出這一系列的漢字區(qū)位碼放到數(shù)組  GB[]中,這樣得到區(qū)位碼后,再通過系統(tǒng)顯示漢字。

關(guān)閉窗口

相關(guān)文章