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鍵可以用于支持打印機驅動程序服務多個打印機!
Window CE 打印機驅動實現
更新時間: 2007-06-04 10:22:59來源: 粵嵌教育瀏覽量:633