日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于 USB 传输的针式打印机驱动程序开发

發(fā)布時間:2023/12/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于 USB 传输的针式打印机驱动程序开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1
.引


針式打印機(jī)曾經(jīng)在相當(dāng)長的一段時間占據(jù)打印機(jī)市場的主導(dǎo)地位,但是近年來由于噴墨、激光等非擊打式打印機(jī)的沖擊,針式打印機(jī)的市場份額逐年下降。即便如此,由于針式打印機(jī)在票據(jù)打印領(lǐng)域的不可取代性,同時鑒于當(dāng)前國內(nèi)打印機(jī)市場一直被國外品牌充斥的現(xiàn)狀,我們設(shè)計并開發(fā)了這款基于
USB
傳輸?shù)尼樖酱蛴C(jī)。一個完整的
USB
針式打印機(jī)系統(tǒng)包括打印機(jī)軟件和打印機(jī)硬件兩部分,其中打印機(jī)軟件負(fù)責(zé)打印任務(wù)的創(chuàng)建,而打印機(jī)硬件負(fù)責(zé)打印任務(wù)的執(zhí)行。如果仔細(xì)劃分,打印機(jī)軟件又分為運(yùn)行于主機(jī)系統(tǒng)的應(yīng)用程序、打印機(jī)驅(qū)動程序和端口驅(qū)動程序,以及運(yùn)行于打印機(jī)的打印機(jī)固件程序、打印機(jī)命令解析程序和打印機(jī)控制程序,打印機(jī)命令解析程序和打印機(jī)控制程序接受打印機(jī)主控程序的調(diào)度。打印機(jī)硬件也可分為電路組成和執(zhí)行機(jī)構(gòu)兩部分。

2

針式
打印機(jī)
系統(tǒng)
設(shè)計

一個打印任務(wù)的完成必須要經(jīng)過任務(wù)創(chuàng)建和任務(wù)執(zhí)行兩個步驟。在
Windows
操作系統(tǒng)下,打印任務(wù)起始于應(yīng)用程序,如圖
1
。當(dāng)用戶使用應(yīng)用程序的打印功能后,應(yīng)用程序?qū)⒂脩舻拇蛴∪蝿?wù)提交給打印機(jī)驅(qū)動程序,打印機(jī)驅(qū)動程序?qū)⒃撊蝿?wù)解析為一些字符數(shù)據(jù),包括打印機(jī)控制命令數(shù)據(jù)和打印圖形數(shù)據(jù)。這些數(shù)據(jù)通過端口驅(qū)動程序發(fā)送到打印機(jī)。當(dāng)打印機(jī)接收到打印數(shù)據(jù)后,首先解析這些數(shù)據(jù)為打印機(jī)的實(shí)際執(zhí)行指令,然后由控制程序操作執(zhí)行機(jī)構(gòu)將位圖信息打印到媒介上。整個打印數(shù)據(jù)的傳輸都建立在主機(jī)與打印機(jī)正常通信的基礎(chǔ)上,這項工作由打印機(jī)固件程序完成。

了解了打印機(jī)系統(tǒng)的工作流程和系統(tǒng)內(nèi)各個組件的作用,我們來對系統(tǒng)各個組件進(jìn)行設(shè)計。
(1) Windows
打印機(jī)驅(qū)動程序設(shè)計

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

(2)
打印機(jī)固件程序設(shè)計


USB
協(xié)議中,不同的設(shè)備類具有著不同描述符和設(shè)備請求,
USB
打印機(jī)作為一種特殊的
USB
設(shè)備也有其特殊性,必須嚴(yán)格按照協(xié)議規(guī)定進(jìn)行設(shè)計。在本文中,我們使用集成

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

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

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

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

Windows
打印體系結(jié)構(gòu)由打印假脫機(jī)系統(tǒng)(
SPOOL
)和一系列的打印機(jī)驅(qū)動程序(
DRIVER
)組成。
SPOOL

Windows
打印系統(tǒng)的核心,它有一個關(guān)鍵的作用就是對打印任務(wù)進(jìn)行路由,將打印任務(wù)傳遞到正確的打印機(jī)驅(qū)動程序進(jìn)行處理。打印驅(qū)動程序由打印圖形動態(tài)鏈接庫和打印接口動態(tài)鏈接庫組成,打印圖形動態(tài)鏈接庫負(fù)責(zé)將打印任務(wù)解析為打印

?

3.1
小型驅(qū)動程序的開發(fā)

小型驅(qū)動程序是建立在通用驅(qū)動程序
( Unidrv )
基礎(chǔ)之上的。通用驅(qū)動程序由打印圖形動態(tài)鏈接庫
UNIDRV.DLL
、打印接口動態(tài)鏈接庫
UNIDRVUI.DLL
以及一些文本文件和二進(jìn)制結(jié)構(gòu)文件組成,這些文本文件和二進(jìn)制文件文件構(gòu)成了我們的小驅(qū)動程序。小型驅(qū)動程序的文本文件稱為
GPD

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

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

?

轉(zhuǎn)載于:https://www.cnblogs.com/micro-chen/p/6015766.html

總結(jié)

以上是生活随笔為你收集整理的基于 USB 传输的针式打印机驱动程序开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。