基於 USB 傳輸的針式打印機驅動程序開發


1
.引


針式打印機曾經在相當長的一段時間占據打印機市場的主導地位,但是近年來由於噴墨、激光等非擊打式打印機的沖擊,針式打印機的市場份額逐年下降。即便如此,由於針式打印機在票據打印領域的不可取代性,同時鑒於當前國內打印機市場一直被國外品牌充斥的現狀,我們設計並開發了這款基於
USB
傳輸的針式打印機。一個完整的
USB
針式打印機系統包括打印機軟件和打印機硬件兩部分,其中打印機軟件負責打印任務的創建,而打印機硬件負責打印任務的執行。如果仔細划分,打印機軟件又分為運行於主機系統的應用程序、打印機驅動程序和端口驅動程序,以及運行於打印機的打印機固件程序、打印機命令解析程序和打印機控制程序,打印機命令解析程序和打印機控制程序接受打印機主控程序的調度。打印機硬件也可分為電路組成和執行機構兩部分。

2

針式
打印機
系統
設計

一個打印任務的完成必須要經過任務創建和任務執行兩個步驟。在
Windows
操作系統下,打印任務起始於應用程序,如圖
1
。當用戶使用應用程序的打印功能后,應用程序將用戶的打印任務提交給打印機驅動程序,打印機驅動程序將該任務解析為一些字符數據,包括打印機控制命令數據和打印圖形數據。這些數據通過端口驅動程序發送到打印機。當打印機接收到打印數據后,首先解析這些數據為打印機的實際執行指令,然后由控制程序操作執行機構將位圖信息打印到媒介上。整個打印數據的傳輸都建立在主機與打印機正常通信的基礎上,這項工作由打印機固件程序完成。

了解了打印機系統的工作流程和系統內各個組件的作用,我們來對系統各個組件進行設計。
(1) Windows
打印機驅動程序設計

開發打印機驅動程序通常有兩種途徑:一是開發一個完整的驅動程序,二是利用微軟提供的通用打印機驅動程序
( Unidrv )
開發小型驅動程序
( Minidriver )
。開發一個完整的驅動程序工作量大且過程復雜,因此我們采用通用打印機驅動程序
+
小型驅動程序來開發打印機驅動程序。

(2)
打印機固件程序設計


USB
協議中,不同的設備類具有着不同描述符和設備請求,
USB
打印機作為一種特殊的
USB
設備也有其特殊性,必須嚴格按照協議規定進行設計。在本文中,我們使用集成

USB
通信口的
At91sam7s32
芯片完成打印機固件程序開發。
(3)
打印機主控程序設計

打印機主控程序由打印機解析程序模塊和打印機控制程序模塊組成。解析模塊通常使用順序解析法解析數據,但是這種方法結構死板,解析效率低,為此本文提出了一種基於表格的解析法;對打印機執行機構進行控制是整個打印機系統的核心。一般采用的方法是使用單片機作為系統控制器,但是控制打印機需要同時控制兩個步進電機和
24
個打印針頭,對單片機處理速度要求較高,同時還要使用大量的單片機接口資源,

一般單片機都無法滿足要求,為此我們提出了一種單片機
+CPLD
的打印機控制方法,有效的解決了這個問題。單片機使用上面提到的
At91sam7s32

CPLD
使用
Altera
生產的
EPM1270
芯片,該芯片具有
1270
個邏輯單元和
212
個用戶引腳,滿足打印機控制的速度要求和接口數量要求。

Windows
打印體系結構由打印假脫機系統(
SPOOL
)和一系列的打印機驅動程序(
DRIVER
)組成。
SPOOL

Windows
打印系統的核心,它有一個關鍵的作用就是對打印任務進行路由,將打印任務傳遞到正確的打印機驅動程序進行處理。打印驅動程序由打印圖形動態鏈接庫和打印接口動態鏈接庫組成,打印圖形動態鏈接庫負責將打印任務解析為打印

 

3.1
小型驅動程序的開發

小型驅動程序是建立在通用驅動程序
( Unidrv )
基礎之上的。通用驅動程序由打印圖形動態鏈接庫
UNIDRV.DLL
、打印接口動態鏈接庫
UNIDRVUI.DLL
以及一些文本文件和二進制結構文件組成,這些文本文件和二進制文件文件構成了我們的小驅動程序。小型驅動程序的文本文件稱為
GPD

General Printer Description)
文件,一個小型驅動程序可以由一個或多個
GPD
文件構成。小型驅動程序的二進制文件包括
GTT(Glyph Translation Table)
文件和
UFM

Unidrv Font Metric
)文件,
GTT
文件用來描述打印機所能支持的字體,
UFM
文件用來描述字體的尺寸大小。由於
GTT
文件和
UFM
文件不是小型驅動程序所必須的文件,所以這里只介紹
GPD
文件的設計方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM