基于 USB 传输的针式打印机驱动程序开发
1
.引
言
針式打印機曾經(jīng)在相當長的一段時間占據(jù)打印機市場的主導地位,但是近年來由于噴墨、激光等非擊打式打印機的沖擊,針式打印機的市場份額逐年下降。即便如此,由于針式打印機在票據(jù)打印領域的不可取代性,同時鑒于當前國內(nèi)打印機市場一直被國外品牌充斥的現(xiàn)狀,我們設計并開發(fā)了這款基于
USB
傳輸?shù)尼樖酱蛴C。一個完整的
USB
針式打印機系統(tǒng)包括打印機軟件和打印機硬件兩部分,其中打印機軟件負責打印任務的創(chuàng)建,而打印機硬件負責打印任務的執(zhí)行。如果仔細劃分,打印機軟件又分為運行于主機系統(tǒng)的應用程序、打印機驅(qū)動程序和端口驅(qū)動程序,以及運行于打印機的打印機固件程序、打印機命令解析程序和打印機控制程序,打印機命令解析程序和打印機控制程序接受打印機主控程序的調(diào)度。打印機硬件也可分為電路組成和執(zhí)行機構(gòu)兩部分。
2
.
針式
打印機
系統(tǒng)
設計
一個打印任務的完成必須要經(jīng)過任務創(chuàng)建和任務執(zhí)行兩個步驟。在
Windows
操作系統(tǒng)下,打印任務起始于應用程序,如圖
1
。當用戶使用應用程序的打印功能后,應用程序?qū)⒂脩舻拇蛴∪蝿仗峤唤o打印機驅(qū)動程序,打印機驅(qū)動程序?qū)⒃撊蝿战馕鰹橐恍┳址麛?shù)據(jù),包括打印機控制命令數(shù)據(jù)和打印圖形數(shù)據(jù)。這些數(shù)據(jù)通過端口驅(qū)動程序發(fā)送到打印機。當打印機接收到打印數(shù)據(jù)后,首先解析這些數(shù)據(jù)為打印機的實際執(zhí)行指令,然后由控制程序操作執(zhí)行機構(gòu)將位圖信息打印到媒介上。整個打印數(shù)據(jù)的傳輸都建立在主機與打印機正常通信的基礎上,這項工作由打印機固件程序完成。
了解了打印機系統(tǒng)的工作流程和系統(tǒng)內(nèi)各個組件的作用,我們來對系統(tǒng)各個組件進行設計。
 (1) Windows
打印機驅(qū)動程序設計
開發(fā)打印機驅(qū)動程序通常有兩種途徑:一是開發(fā)一個完整的驅(qū)動程序,二是利用微軟提供的通用打印機驅(qū)動程序
( Unidrv ) 
開發(fā)小型驅(qū)動程序
( Minidriver ) 
。開發(fā)一個完整的驅(qū)動程序工作量大且過程復雜,因此我們采用通用打印機驅(qū)動程序
+
小型驅(qū)動程序來開發(fā)打印機驅(qū)動程序。
(2) 
打印機固件程序設計
在
USB
協(xié)議中,不同的設備類具有著不同描述符和設備請求,
USB
打印機作為一種特殊的
USB
設備也有其特殊性,必須嚴格按照協(xié)議規(guī)定進行設計。在本文中,我們使用集成
USB
通信口的
At91sam7s32
芯片完成打印機固件程序開發(fā)。
 (3) 
打印機主控程序設計
打印機主控程序由打印機解析程序模塊和打印機控制程序模塊組成。解析模塊通常使用順序解析法解析數(shù)據(jù),但是這種方法結(jié)構(gòu)死板,解析效率低,為此本文提出了一種基于表格的解析法;對打印機執(zhí)行機構(gòu)進行控制是整個打印機系統(tǒng)的核心。一般采用的方法是使用單片機作為系統(tǒng)控制器,但是控制打印機需要同時控制兩個步進電機和
24
個打印針頭,對單片機處理速度要求較高,同時還要使用大量的單片機接口資源,
一般單片機都無法滿足要求,為此我們提出了一種單片機
+CPLD
的打印機控制方法,有效的解決了這個問題。單片機使用上面提到的
At91sam7s32
,
CPLD
使用
Altera
生產(chǎn)的
EPM1270
芯片,該芯片具有
1270
個邏輯單元和
212
個用戶引腳,滿足打印機控制的速度要求和接口數(shù)量要求。
Windows
打印體系結(jié)構(gòu)由打印假脫機系統(tǒng)(
SPOOL
)和一系列的打印機驅(qū)動程序(
DRIVER
)組成。
 SPOOL
是
Windows
打印系統(tǒng)的核心,它有一個關鍵的作用就是對打印任務進行路由,將打印任務傳遞到正確的打印機驅(qū)動程序進行處理。打印驅(qū)動程序由打印圖形動態(tài)鏈接庫和打印接口動態(tài)鏈接庫組成,打印圖形動態(tài)鏈接庫負責將打印任務解析為打印
?
3.1
小型驅(qū)動程序的開發(fā)
小型驅(qū)動程序是建立在通用驅(qū)動程序
( Unidrv )
基礎之上的。通用驅(qū)動程序由打印圖形動態(tài)鏈接庫
UNIDRV.DLL
、打印接口動態(tài)鏈接庫
UNIDRVUI.DLL
以及一些文本文件和二進制結(jié)構(gòu)文件組成,這些文本文件和二進制文件文件構(gòu)成了我們的小驅(qū)動程序。小型驅(qū)動程序的文本文件稱為
GPD
(
General Printer Description)
文件,一個小型驅(qū)動程序可以由一個或多個
GPD
文件構(gòu)成。小型驅(qū)動程序的二進制文件包括
GTT(Glyph Translation Table)
文件和
UFM
(
Unidrv Font Metric
)文件,
GTT
文件用來描述打印機所能支持的字體,
UFM
文件用來描述字體的尺寸大小。由于
GTT
文件和
UFM
文件不是小型驅(qū)動程序所必須的文件,所以這里只介紹
GPD
文件的設計方法。
?
轉(zhuǎn)載于:https://www.cnblogs.com/micro-chen/p/6015766.html
總結(jié)
以上是生活随笔為你收集整理的基于 USB 传输的针式打印机驱动程序开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Skyline学习
- 下一篇: Package php5 have no
