最近在公司使用票據印表機程式設計手冊指令對成品進行測試檢測,對列印命令需要深入理解,才能更好掌握它的原理和使用。
一、票據列印程式設計手冊
相關印表機的列印指令/程式設計手冊可以在網路上找到茫茫多的資源。
像類似lf esc開頭的,並不是代表字串,他們都是ascii碼表裡排名靠前的控制字元,通過套接字傳送的資料是流,而流的本質是乙個個的位元組,所以這些命令中,乙個符號代表乙個位元組,而位元組的值在每條命令的詳解裡面有參考值。
可以對照ascii碼表對照,比如lf在第10位,十六進製制是0x0a,是換行鍵的意思;esc在27位,十六進製制0x1b,是換碼(溢位)的意思。
比如esc ! 選擇列印模式;esc和!都是ascii碼的值。
ascii碼 esc ! n
十六進製製碼 1b 21 n
十進位製碼 27 33 n
主要變化是n,n是乙個數字,在0-255之間取得變化,它這裡有8個位(剛好乙個位元組)可以設定,每個位的1/0代表開關的開啟和關閉,比如要設定加粗,那麼n的第三位應該是1也就是2^3=8,十六進製制是0x08,所以整個命令下來就是0x1b,0x21,0x08。
知道了原理,可以把整個程式設計手冊的指令融會理解。
通過socket的流來傳送指令,所以只能把字串轉換為位元組流,再傳送給印表機。不同字元,比如中文,在轉換位元組流的時候需要設定不同的編碼。
以上的命令格式在小票熱敏印表機一般是通用的,不同的是提供列印服務的方式,有的通過網路來提供套接字服務,有些通過com串列埠來提供服務,不同的服務都可以轉化為流來處理,所以本質上是差不多的。
除此之外,企業可根據自身需求設計windows動態鏈結庫測試介面,可以在印表機連線usb後直接通過電腦操作列印測試,高效便捷。
以下整理印表機常用的ascii碼對照
0x04:eot:傳輸結束
0x05:enq:請求
0x09:ht:水平製表符
0x0a:lf:換行鍵
0x10:dle:資料鏈路轉義
0x11-14:dc1-4:裝置控制1-4
0x1b:esc:換碼(溢位);在印表機中以該字元為起始的指令將立即響應,即使在錯誤狀態也實時回應。
0x1c:fs:檔案分隔符
0x1d:gs:分組符
0x1e:rs:記錄分隔符
0x20:sp :空格
0x7e:~:起始的指令用於查詢印表機狀態
在網上看到有相關的c#印表機esc指令,可以用作學習借鑑。
二、標籤列印程式設計手冊
原理上與上文大致相同,不同的是列印方式和指令不同,可以相互學習理解。
乙個標籤通常包含三個部分,即系統設定(藍)、列印內容設定(綠)和執行列印指令(紅)。
系統設定:包括標籤尺寸size、gap和清除快取區資料指令cls等。
列印內容設定:列印文字或設計指令內容。
執行列印指令:用於列印設計好的標籤,此指令傳送後才執行列印動作。
每一條指令結尾都 需要加入換行符,即字串「\r\n」或16進製制0x0d 0x0a
舉例說明:print指令:用於列印出儲存影像緩衝區內的資料
其他不同的指令有不同的引數,實際需要參考程式設計手冊具體更改x,y,height,rotation(條碼旋轉角度),narrow/wide(窄寬比),code type等等。
TPrinter控制票據印表機
tprinter 類是delphi 對windows 列印處理系統的封裝,它能夠幫助程式設計師在開發列印程式時盡可能地減少工作量。在程式中使用 tprinter 只要在單元的 use 子句後面新增 printers 即可。當前印表機的 devmode 結構的控制代碼可以通過呼叫 tprinter 類...
印表機外設通訊 原理
通過網路或usb或串列埠,資訊傳送給印表機,每個印表機都是有自己的指令系統,列印頁面的描述語言有通用的版本,印表機驅動程式 printer driver 是將計算機端所需列印輸出的檔案,轉換成印表機能夠識別且完美列印出來的支撐程式。windows下的印表機驅動程式通常分為gdi印表機驅動程式 pcl...
安卓usb介面與串列埠印表機 工業標籤印表機有哪些?
條碼印表機是一種專用於列印條碼標籤的印表機。條碼印表機和普通印表機的最大區別就是,條碼印表機的列印是以熱為基礎,以碳帶為列印介質 或直接使用熱敏紙 完成列印,這種列印方式相對於普通列印方式的最大優點在於可以在無人看管的情況下實現連續高速列印。條碼印表機所列印的內容一般為企業的品牌標識 序列號標識 包...