微型打印機與FPGA的硬件接口及軟件設計
2.2 打印機控制命令及程序設計
RD-E型微型打印機提供了39條打印命令,打印命令與多數(shù)打印機兼容。其中,漢字打印命令其格式由16進制數(shù)表示,則為x“1B”x“3 8”x“n”。在連續(xù)3次接收數(shù)據(jù)后若接收到的是該命令,打印機將根據(jù)n值的不同選擇不同點陣的漢字。在漢字打印方式中,打印機接收的漢字代碼是2個字節(jié)對應一個漢字的標準機內(nèi)碼,即打印機每接收2個字節(jié)的機內(nèi)碼可調(diào)出一個漢字。打印機先接收機內(nèi)碼的高位字節(jié),再接收低位字節(jié)。設計中,由于欲打印的數(shù)據(jù)分 16×16和12×12兩種點陣漢字,所以n值設置為0或4,當n=O選擇16×16點陣漢字打印,n=4選擇12×12點陣漢字印,n的默認值為0。另一條命令是紙給進命令,即換行命令,其格式用16進制數(shù)表示為:x“OA”打印機打印當前緩沖器里的數(shù)據(jù),并向前走紙一行,如果緩沖器里沒有數(shù)據(jù),則只執(zhí)行向前走紙一行。打印空格或空行命令,其格式用16進制數(shù)表示為:x“1B”x“6 6”x“M”x“n”。如果M=O,該命令將打印n個空格;如果M=1,該命令將打印n個空行。由于打印數(shù)據(jù)必須與表頭的欄目一一對應,而且每行打印的字符點陣不會完全相同,所以編程過程中對空格數(shù)的控制是需要花功夫的,調(diào)試時便出現(xiàn)過打印的已處理數(shù)據(jù)與表頭不對應的情況。由于打印機內(nèi)嵌選擇字符集1和自定義字符集2,打印的數(shù)據(jù)中含有自定義字符集中的字符,所以還需選擇打印輸出字符集數(shù)據(jù)。字符集選擇由命令x“1B”x“36和x“1B”x“37”來實現(xiàn)?;剀嚸畹拿钭譃閤“0D”。打印機收到本命令后,即對緩沖區(qū)內(nèi)的命令和字符進行處理,并按要求打印緩沖區(qū)內(nèi)的全部字符或漢字。
打印機內(nèi)置的漢字代碼為標準漢字內(nèi)碼,高字節(jié)數(shù)值范圍A1H~F7H,對應1~87區(qū)漢字;低字節(jié)數(shù)值范圍A1H~FEH,對應每一區(qū)中的漢字位碼1~94。漢字的區(qū)位碼與機內(nèi)碼之間相互計算的方法為:
區(qū)碼轉(zhuǎn)換為16進制數(shù),位碼轉(zhuǎn)換為16進制數(shù)
機內(nèi)碼高字節(jié)=區(qū)碼+AOH
機內(nèi)碼低字節(jié)=位碼+AOH
例如電阻的“阻”字區(qū)位碼為5572,即55區(qū),第2個字,其機內(nèi)碼為D7E8,將55(十進制)轉(zhuǎn)為37(16進制),37H+AOH=D7H;將 72(十進制)轉(zhuǎn)為48(16進制),48H+AOH=E8H,所以對表頭要打印的漢字將其區(qū)位碼轉(zhuǎn)換成內(nèi)碼后存儲起來,按先高字節(jié),后低字節(jié)的順序,在打印命令之后寫入打印機即可。
評論