usb口打印機的指令打印和驅動打印

打印機簡介:是計算機的輸出設備之一,用於將計算機處理結果打印在相關介質上。html

打印機類型:激光打印機、噴墨打印機、針式打印機、熱敏打印機等。c++

計算機和打印機之間的鏈接方式:usb口、串口、並口、網口、藍牙等。windows

因爲工做中使用的是usb口的熱敏打印機,因此就以此類型作介紹。(目前市場上經常使用的是usb口打印機)api

熱敏打印機工做原理:是打印頭上安裝有半導體加熱元件,打印頭加熱並接觸熱敏打印紙後就能夠打印出須要的圖案,其原理與熱敏式傳真機相似。圖象是經過加熱,在熱敏紙的膜中產生化學反應而生成的。這種熱敏打印機化學反應是在必定的溫度下進行的。高溫會加速這種化學反應。當溫度低於60℃時,紙須要通過至關長,甚至長達幾年的時間才能變成深色;而當溫度爲200℃時,這種反映會在幾微秒內完成。因此要想使熱敏打印機打印出圖形和文字,就必須知足兩個條件,熱敏紙和高溫,是不須要墨的。測試

usb口熱敏打印機打印分爲兩種:編碼

1,指令打印(也叫直接打印),是直接將esc指令經過程序發送給打印機。固然這要看此款打印機是否支持esc指令,如何肯定能夠查看打印機的官網。做者測試時使用的一款icod(研科)的T58K,官方網址:http://www.szicod.com/products-show.asp?id=87     後文會介紹如何寫c/c++程序來直接給打印機發送打印指令。.net

2,驅動打印,是在windows系統的幫助下,使用到gdi模塊、驅動模塊將要打印的內容進行圖片話,以圖片的格式打印。後文會詳細介紹打印的臨時文件SPL,而且能夠從SPL文件中分析出EMF文件。EMF文件是一個圖片格式的文件,能夠直接在windows系統雙擊打開的。翻譯

 

下面詳細介紹下指令打印和驅動打印:3d

指令打印:顧名思義,是直接將esc指令發送到打印機,打印機就能解析並進行相應的執行。那麼我想先聊下,咱們日常用記事本、word、pdf等軟件打印時爲何不須要考慮這些,而是直接就能讓打印機打印呢?緣由是記事本、word、pdf這些軟件已經實現了打印功能,他們具體是使用指令打印仍是驅動打印咱們是不清楚的,須要看他們的源代碼才能肯定。那麼若是你不想經過這些軟件來打印,那你就得本身去考慮使用哪一種方式實現。後文會有個人一個MFC工程,包含了指令打印和驅動打印的簡單例子。你們有興趣能夠看看。htm

驅動打印:驅動打印的過程比較複雜。會使用到windows系統的gdi模塊、驅動模塊。win32 api有相關的接口。主要使用CPrintDialog、StartDoc、StartPage、TextOut等接口實現。這些接口很明顯是屏蔽了具體的打印機的,應用程序不須要關注打印機的實現細節,只要按照win32 api的打印接口調用便可實現打印。應用程序打印會產生一個打印做業,被放入打印後臺處理程序(spoolsv.exe),而且在C:\Windows\System32\spool\PRINTERS\   目錄下產生一個SPL臨時文件。咱們能夠分析改SPL,並將其轉換爲EMF文件。而後EMF文件被驅動程序翻譯成esc指令,最終將esc指令發往打印機實現打印。那既然兩種打印方式最終到打印機那邊都是esc指令,那爲啥還要分指令打印和驅動打印呢?其實這兩種打印方式是有區別的,指令打印時直接打印,好比你打印"123abc",那麼最終的esc指令是使用字符串方式打印,因此截獲數據就能截獲到打印內容。而若是是驅動打印,是將原來的數據當成是圖片來打印,好比一樣你打印"123abc",那麼最終的esc指令是使用圖片方式打印,因此截獲的數據是還原不了打印內容的。

針對EMF文件:理論上,咱們能夠將獲得的EMF文件解析,並還原出原始的打印數據的。可是若是上層應用設置了ETO_GLYPH_INDEX選項,會使得分析出來的數據並非字符編碼,而是某字庫的索引。這樣的話要想經過EMF文件解析出原始打印數據也是很是困難的。

 

測試工程所在的百度網盤連接及提取碼:

連接: https://pan.baidu.com/s/1EA8Os3W8l_vlC8AjLQRL9A 提取碼: kjwm 

csdn下載連接:

https://download.csdn.net/download/weixin_29071533/11286829

 

相關鏈接:

EMF解析相關:http://www.javashuo.com/article/p-vfivpwnj-er.html

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-emf/91c257d7-c39d-4a36-9b1f-63e3f73d30ca

 

打印機數據截獲相關:

https://www.cnblogs.com/MrDing/tag/

https://www.cnblogs.com/we-hjb/p/5596880.html

http://www.doc88.com/p-2062378632507.html

相關文章
相關標籤/搜索