C 語(yǔ)言嵌入式系統(tǒng)編程修煉之四:屏幕操作 一、 漢字處理 現(xiàn)在要解決的問題是,嵌入式系統(tǒng)中經(jīng)常要使用的并非是完整的漢字庫(kù),往往只是需要提供數(shù)量有限的漢字供必要的顯示功能。例如,一個(gè)微波爐的LCD 上沒有必要提供顯示"電子郵件"的功能;一個(gè)提供漢字顯示功能的空調(diào)的LCD 上不需要顯示一條"短消息",諸如此類。但是一部手機(jī)、小靈通則通常需要包括較完整的漢字庫(kù)。 如果包括的漢字庫(kù)較完整,那么,由內(nèi)碼計(jì)算出漢字字模在庫(kù)中的偏移是十分簡(jiǎn)單的:漢字庫(kù)是按照區(qū)位的順序排列的,前一個(gè)字節(jié)為該漢字的區(qū)號(hào),后一個(gè)字節(jié)為該字的位號(hào)。 每一個(gè)區(qū)記錄94 個(gè)漢字,位號(hào)則為該字在該區(qū)中的位置。因此,漢字在漢字庫(kù)中的具體位置計(jì)算公式為:94*(區(qū)號(hào)-1)+位號(hào)-1。減1 是因?yàn)閿?shù)組是以0 為開始而區(qū)號(hào)位號(hào)是以1 為開始的。只需乘上一個(gè)漢字字模占用的字節(jié)數(shù)即可,即:(94*(區(qū)號(hào)-1)+位號(hào)-1)*一個(gè)漢字字模占用字節(jié)數(shù),以16*16 點(diǎn)陣字庫(kù)為例,計(jì)算公式則為:(94*(區(qū)號(hào)-1)+(位號(hào)-1))*32。漢字庫(kù)中從該位置起的32 字節(jié)信息記錄了該字的字模信息。 對(duì)于包含較完整漢字庫(kù)的系統(tǒng)而言,我們可以以上述規(guī)則計(jì)算字模的位置。但是如果僅僅是提供少量漢字呢?譬如幾十至幾百個(gè)?最好的做法是: 定義宏: # define EX_FONT_CHAR(value) # define EX_FONT_UNICODE_VAL(value) (value), # define EX_FONT_ANSI_VAL(value) (value), 定義結(jié)構(gòu)體: typedef struct _wide_unicode_font16x16 { WORD value; /* 內(nèi)碼 */ BYTE data[32]; /* 字模點(diǎn)陣 */ }Unicode; #define CHINESE_CHAR_NUM … /* 漢字?jǐn)?shù)量 */
[hide]
C 語(yǔ)言編程修煉之四屏幕操作.doc
(139 KB, 下載次數(shù): 0)
2020-8-20 17:49 上傳
點(diǎn)擊文件名下載附件
下載積分: 聯(lián)盟幣 -5
[\hide]
|