Window CE 打印機驅動實現

轉自 http://www.mcuol.com/Tech/117/24591.htm

轉載只爲了方便自己看。

 

Window CE 打印機驅動實現

2008-03-20      嵌入式在線      收藏 | 打印

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

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

        基於Windows CE的打印機驅動程序只能實現些圖形驅動程序函數,這些函數是在蒐集打印機度量標準、設置打印機、開始和結束打印任務和準備提交的打印內容時所必需的。中 間過程中,打印機驅動程序還把點陣圖數據從GDI bitmap格式轉換爲打印機所要求的格式。其中的操作包括把顏色簡化到打印機的顏色空間、數據壓縮、把數據轉換成有時被稱作打印機描述語言的打印機使用 格式等。最後,打印機驅動程序調用監視器把提交的打印內容發送給打印機。

       基於Windows CE的打印機驅動程序被編譯爲(.DLL)因此它必須輸出DrvEnableDriver函數。

       下面是打印機驅動程序必須實現的函數:

       1.DrvCopyBits    由GDI調用用於把已提交的批次拷貝到打印機驅動程序。在調用函數DrvDisablePDEV時,打印機驅動程序指定在調用這個函數時要用到的點陣圖格式

       2.DrvDisbalePDEV用於在打印機設備環境不再需要時釋放驅動程序使用的內存和資源

       3.DrvDisableSurfacd由GDI調用用來通知打印機驅動程序爲當前打印設備環境而生成的外表(Windws CE)不再支持

       4.DrvEnableDriver從GDI接受兩個回調函數的指針,並且爲打印機驅動程序實現的其它的入口點返回GDI函數指針

       5.DrvEnablePdev由GDI使用,用來爲目標打印機收集打印機度量標準。打印機驅動程序返回在GDINFO結構中指定的設備

       6. DrvEndDoc由GDI調用來結束或中途停止一個打印工作

      7. DrvGetModes把打印機驅動程序支持的確省打印模式信息返回給GDI。打印機驅動程序返回在DEVMODE結構中的卻省配置

     8. DrvStartDoc由GDI調用,來開始一個打印工作      

     9. DrvStartPage由GDI調用來開始一個打印工作的下一頁

       Windows CE使用註冊健來存儲設備的全局打印機設置和單個打印機驅動程序的配置信息。鍵值存儲在註冊表的KEY_LOCAL_MACHINE/Printers/下。

       1. 全局打印機設置

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

       (HKEY_LOCAL_MACHINE/Printers/Ports)“Port1”=”COM1:9600”“Port2”=”COM1:57600”“Port3”=”IRDA”“Port4”=”LPT:”“Port5”=”NET0:”(HKEY_LOCAL_MACHINE/Printers/Settings)“TimeOut”=dword:1E(HKEY_LOCAL_MACHINE/PrinterSettings)“TimeOut”=dword:2D(HKEY_LOCAL_MACHINE/Printers)DefaultPrinter”=”PCL Laster”

        值分別爲9600波特和57,600波特的串口、一個紅外口、一個並行口和一個網絡打印機接口。對兩個COM1:口,分別指定了相應的波特。接口監視器分 析了要提取的波特值和設備文件名。在Windows CE2.0中,COM3:口設定爲紅外。然而在2.10和以後的版本中心文件名“IRDA”與留爲紅外口,而COM3:用於額外的串行口。在爲打印分配紅 外口時,接口的鍵值必須是字符串”IRDA”,儘管該值並不是指定設備文件名的標準格式。名稱”LPT1:”和”NET0:”分別預留爲並行口和網絡打印 口,儘管這些名稱中設備文件名索引可以是任何合法值。   

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

       對不使用並行口的打印機來說,如紅外打印機或串行口打印機,讓Windows CE決定打印機是否接受所有的打印數據是非常困難的。因此,超時參數用來在打印機不能發出任何其仍在活動的信號時偵測和報告打印錯誤。超市值存儲在 PrintSetting/TimeOut鍵中。卻省值是45秒。       在DefaultPrinter鍵中存儲的值是應用程序在通用打印對話框中顯示給用戶,讓用戶預選的打印機。

       2. 打印機驅動程序設置

        單個打印機驅動程序的設置存儲在KEY_LOCAL_MACHINE/Printers鍵的在鍵中。打印機驅動程序的註冊健應該定義爲4個 鍵:Driver、High Quality、Draft Quality 和Color。其中Driver值列舉過程包含打印機驅動程序的DLL。如果打印機支持的話,Hight Quality和Draft Quality的值存儲高質量和繪圖質量模式的分辨率。但並不是所有的打印機都支持繪圖質量模式,因此Draft Quality鍵可以忽略。High Quality鍵必須提供,它對應於打印機的最高質量模式。Color值定義打印機是彩色的還是單色的。如果支持彩色的話,該鍵值必須設置爲字 符”Color“

        下面是PCL機關打印機和PCL噴墨打印機驅動程序的設置例子:

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

      (HKEY_LOCAL_MACHINE/Peinters/PCl Inkjet)“Driver”=”pcl.dll”“High Quality”=”300”“Draft Quality”=”150”“Color”=”Monochrome”另外Version鍵可以用於支持打印機驅動程序服務多個打印機!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章