串列埠控制惠普印表機
在專案開發中,經常要使用印表機,打印出檢測的結果,在本專案中使用的是惠普印表機,輸出結果列印在A4紙上面。
本次使用U2P-016串列埠列印模組和惠普鐳射印表機P1106,編寫了600行程式碼就搞定了,哈哈。先上圖
硬體使用的是LPC1768(串列埠和定時器)和U2P-016串列埠列印模組
軟體使用的是Keil MDK
U2P-016串列埠列印模組可以控制惠普的很多款印表機,比如鐳射印表機P1106,P1108,HP1020,M101-M106,M403,M1213nf,噴墨印表機DeskJet_1110/1111/1112等。
1、可以實現畫點、畫線、畫圓等基本操作,還可以畫貝賽爾曲線;
2、實現圖形填充,圖片列印等功能;
3、支援漢字列印,TRUETYPE字型檔;
3、高速USB介面連線,列印速度快;
4、UART介面,操作簡單,波特率115200bit/s;
程式流程如下
底層函式
函式名 |
函式說明 |
time_init() |
定時器初始化,實現1ms定時,併產生中斷 |
tick_add() |
定時器中斷中呼叫 |
get_tick_count() |
獲取當前的時鐘 |
time_elapsed() |
計算超時 |
uart_init() |
串列埠初化,傳送用阻塞模式,接收用中斷方式 |
uart_send() uart_printf() |
串列埠傳送字串 |
與列印相關的函式
函式名 |
函式說明 |
int print_send_data(char *buffer,int timeout) |
傳送要列印的指令 輸入引數buffer 要傳送的指令 timeout 指令接收的超時時間 |
int print_get_state(char *res) |
接收列印模組的應答訊號 輸入引數res,列印模組返回的字串 |
int print_get_finish() |
等待本次列印結束 |
是程式見附件
補充說明如下。
U2P-016的指令分類如下
指令分類 |
說明 |
C語言格式 |
C語言示例 |
控制指令 |
完成對印表機的檢測和配置 |
"C+XXX\r\n" |
"?C+PRNS\r\n ",檢測印表機狀態,?表示要求有應答 |
列印指令 |
與列印操作相關的設定,與印表機型號無關 |
"P+XXX\r\n" |
"?P+STAT\r\n ",查詢當前列印的進度,?表示要求有應答 |
檔案管理指令 |
對指令檔案和圖片檔案進行管理 |
"F+XXX\r\n" |
"?F+NEWF\r\n ",新建一個指令檔案,?表示要求有應答 |
繪圖指令 |
完成文字的輸入和圖形的繪製 |
":XXX XXX\r\n" |
"?:201 50-50-88\r\n" 畫圓,中心座標是(50,50),半徑是88 , ?表示要求有應答 |
U2P-016接收GB2312的編碼,如下圖