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

外部字庫(kù)芯片GT32L32S0140的移植

作者:日照北京   來(lái)源:會(huì)員上傳   點(diǎn)擊數(shù):  更新時(shí)間:2014年05月20日   【字體:

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

一步一步來(lái),

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

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

最關(guān)鍵語(yǔ)句  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;
}

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

所以需要把移植的字庫(kù)

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

 

 

再次運(yùn)行,美麗的漢字顯示出來(lái)了! 大功告成,哈哈哈,大笑一下。

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

 


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

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

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

并且定義了粗體字。字庫(kù)移植完成。


 

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

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

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

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

關(guān)閉窗口

相關(guān)文章