新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Window CE 打印機驅(qū)動實現(xiàn)

Window CE 打印機驅(qū)動實現(xiàn)

作者: 時間:2016-10-08 來源:網(wǎng)絡(luò) 收藏

Windows CE 2.0及其以上版本包括對打印機的支持。Windows CE操作系統(tǒng)使用的打印模型是為基于Windows CE的桌面平臺定義的打印模型的子集。只有少量為打印機驅(qū)動程序定義的圖形驅(qū)動程序函數(shù)是Windows CE的打印機驅(qū)動程序所需要的。

本文引用地址:http://butianyuan.cn/article/201610/305829.htm

Windows CE的圖形顯示接口(GDI)和顯示驅(qū)動程序完成與打印有關(guān)的大部分工作。在打印處理的開始,GDI生成帶屬性的設(shè)備背景deviec context,這些屬性是在調(diào)用DrvEnablePDEV函數(shù)時從打印機驅(qū)動程序得到的。顯示驅(qū)動程序用于提交(render)隨后的繪圖指令,該指令是由應(yīng)用程序發(fā)向DC的:打印機驅(qū)動程序并不提交(render)這個文檔。然后,GDI把結(jié)果點陣圖發(fā)送給打印機驅(qū)動程序,這樣打印機驅(qū)動程序才能格式化點陣圖并把它發(fā)送給打印機。為了節(jié)省內(nèi)存,GDI以批處理方式提交文檔,也就是頁面的水平不分:然后GDI多次調(diào)用打印機驅(qū)動程序把提交的文檔發(fā)送給打印機。

基于Windows CE的打印機驅(qū)動程序只能實現(xiàn)些圖形驅(qū)動程序函數(shù),這些函數(shù)是在搜集打印機度量標準、設(shè)置打印機、開始和結(jié)束打印任務(wù)和準備提交的打印內(nèi)容時所必需的。中間過程中,打印機驅(qū)動程序還把點陣圖數(shù)據(jù)從GDI bitmap格式轉(zhuǎn)換為打印機所要求的格式。其中的操作包括把顏色簡化到打印機的顏色空間、數(shù)據(jù)壓縮、把數(shù)據(jù)轉(zhuǎn)換成有時被稱作打印機描述語言的打印機使用格式等。最后,打印機驅(qū)動程序調(diào)用監(jiān)視器把提交的打印內(nèi)容發(fā)送給打印機。

基于Windows CE的打印機驅(qū)動程序被編譯為(.DLL)因此它必須輸出DrvEnableDriver函數(shù)。

下面是打印機驅(qū)動程序必須實現(xiàn)的函數(shù):

1.DrvCopyBits 由GDI調(diào)用用于把已提交的批次拷貝到打印機驅(qū)動程序。在調(diào)用函數(shù)DrvDisablePDEV時,打印機驅(qū)動程序指定在調(diào)用這個函數(shù)時要用到的點陣圖格式

2.DrvDisbalePDEV用于在打印機設(shè)備環(huán)境不再需要時釋放驅(qū)動程序使用的內(nèi)存和資源

3.DrvDisableSurfacd由GDI調(diào)用用來通知打印機驅(qū)動程序為當前打印設(shè)備環(huán)境而生成的外表(Windws CE)不再支持

4.DrvEnableDriver從GDI接受兩個回調(diào)函數(shù)的指針,并且為打印機驅(qū)動程序?qū)崿F(xiàn)的其它的入口點返回GDI函數(shù)指針

5.DrvEnablePdev由GDI使用,用來為目標打印機收集打印機度量標準。打印機驅(qū)動程序返回在GDINFO結(jié)構(gòu)中指定的設(shè)備

6. DrvEndDoc由GDI調(diào)用來結(jié)束或中途停止一個打印工作

7. DrvGetModes把打印機驅(qū)動程序支持的確省打印模式信息返回給GDI。打印機驅(qū)動程序返回在DEVMODE結(jié)構(gòu)中的卻省配置

8. DrvStartDoc由GDI調(diào)用,來開始一個打印工作

9. DrvStartPage由GDI調(diào)用來開始一個打印工作的下一頁

Windows CE使用注冊健來存儲設(shè)備的全局打印機設(shè)置和單個打印機驅(qū)動程序的配置信息。鍵值存儲在注冊表的KEY_LOCAL_MACHINEPrinters下。

1. 全局打印機設(shè)置

存儲在注冊表中的全局打印機設(shè)置列舉了打印使用的輸入輸入(I/O)口,提供了全局超時值以及存儲了所選擇的卻省狀態(tài)下的打印機驅(qū)動程序。卻省打印機驅(qū)動程序存儲為DefaultPrinter的值。打印機的接口存儲為Ports子健的值。 下面的注冊文件摘錄定義了5個打印機口,兩個超時和卻省的打印機驅(qū)動程序。

(HKEY_LOCAL_MACHINEPrintersPorts)“Port1”=”COM1:9600”“Port2”=”COM1:57600”“Port3”=”IRDA”“Port4”=”LPT:”“Port5”=”NET0:”(HKEY_LOCAL_MACHINEPrintersSettings)“TimeOut”=dword:1E(HKEY_LOCAL_MACHINEPrinterSettings)“TimeOut”=dword:2D(HKEY_LOCAL_MACHINEPrinters)DefaultPrinter”=”PCL Laster”

值分別為9600波特和57,600波特的串口、一個紅外口、一個并行口和一個網(wǎng)絡(luò)打印機接口。對兩個COM1:口,分別指定了相應(yīng)的波特。接口監(jiān)視器分析了要提取的波特值和設(shè)備文件名。在Windows CE2.0中,COM3:口設(shè)定為紅外。然而在2.10和以后的版本中心文件名“IRDA”與留為紅外口,而COM3:用于額外的串行口。在為打印分配紅外口時,接口的鍵值必須是字符串”IRDA”,盡管該值并不是指定設(shè)備文件名的標準格式。名稱”LPT1:”和”NET0:”分別預(yù)留為并行口和網(wǎng)絡(luò)打印口,盡管這些名稱中設(shè)備文件名索引可以是任何合法值。

Windows CE 2.02及其以后版本都使用了TimeOut鍵。該值是用秒測量的16進制數(shù);例子是一個30秒的超時。在超時期間后,打印機驅(qū)動程序可以顯示一個對話框讓用戶選擇重試或取消。在這個例子中,卻省打印機驅(qū)動程序,“PCL Laser”,是KEY_LOCAL_MACHINEPriners中一個子健的名稱。在KEY_LOCAL_MACHINEPriners中Windows CE可以找到打印機控制語言(PCL)激光打印機驅(qū)動程序的配置。

對不使用并行口的打印機來說,如紅外打印機或串行口打印機,讓W(xué)indows CE決定打印機是否接受所有的打印數(shù)據(jù)是非常困難的。因此,超時參數(shù)用來在打印機不能發(fā)出任何其仍在活動的信號時偵測和報告打印錯誤。超市值存儲在PrintSettingTimeOut鍵中。卻省值是45秒。 在DefaultPrinter鍵中存儲的值是應(yīng)用程序在通用打印對話框中顯示給用戶,讓用戶預(yù)選的打印機。

2. 打印機驅(qū)動程序設(shè)置

單個打印機驅(qū)動程序的設(shè)置存儲在KEY_LOCAL_MACHINEPrinters鍵的在鍵中。打印機驅(qū)動程序的注冊健應(yīng)該定義為4個鍵:Driver、High Quality、Draft Quality 和Color。其中Driver值列舉過程包含打印機驅(qū)動程序的DLL。如果打印機支持的話,Hight Quality和Draft Quality的值存儲高質(zhì)量和繪圖質(zhì)量模式的分辨率。但并不是所有的打印機都支持繪圖質(zhì)量模式,因此Draft Quality鍵可以忽略。High Quality鍵必須提供,它對應(yīng)于打印機的最高質(zhì)量模式。Color值定義打印機是彩色的還是單色的。如果支持彩色的話,該鍵值必須設(shè)置為字符”Color“

下面是PCL機關(guān)打印機和PCL噴墨打印機驅(qū)動程序的設(shè)置例子:

(HEKY_LOCAL_MACHINEPeintersPCI Laser)“Driver”=”pc1.Dll”“High Quality”=”300”“Draft Quality”=”150”“Color”=Monochrome”“Version”=”0x200”


上一頁 1 2 下一頁

關(guān)鍵詞:

評論


相關(guān)推薦

推薦視頻

更多>>

技術(shù)專區(qū)

關(guān)閉