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

2021-09-07 07:16:07 字數 2449 閱讀 3598

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檔案的設計方法。

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

1 引言 針式印表機曾經在相當長的一段時間佔據印表機市場的主導地位,但是近年來由於噴墨 雷射等非擊打式印表機的衝擊,針式印表機的市場份額逐年下降。即便如此,由於針式印表機在票據列印領域的不可取代性,同時鑑於當前國內印表機市場一直被國外品牌充斥的現狀,我們設計並開發了這款基於 usb傳輸的針式印表機。...

針式印表機微調功能

如果您 比如使用了進紙旋鈕調整頁頂位置之後,或者 在使用專用軟體列印套打票據的時候 發現列印的起始位置不正確。列印起始位置偏上或者偏下。和預先設計的在紙張上的位置不一樣。如圖 1 所示 如何通過微調整功能,解決列印位置上下偏移的問題?一 問題現象 如果您 比如使用了進紙旋鈕調整頁頂位置之後,或者在使...

針式印表機列印發虛 針式印表機常見問題及解決方法

在使用針式印表機的過程中難免會遇到故障,影響工作效率,影響心情。下面我來介紹一些遇到常見故障時候的解決方法。針式印表機色帶故障是最常見的,比如色帶斷裂 色帶被卡。1 色帶斷裂 色帶的拉力過大,拉斷縫合線或字鎚打爛色帶導致色帶斷裂。前一種情況可將斷裂部分剪掉,重新縫合好 後一種情況只要更換色帶即可。2...