Dpu-3445是Seiko Instrument公司開發的便攜式熱敏打印機,它體積小,重量輕,只有250克左右,打印寬度達104cm,點密度為8dot/mm,速度達50mm/s,有4KB的輸入緩沖區。由于這些特點,我們在設計便攜式產品中選擇它作為系統的輸出設備。
2 系統實現
2.1 接口描述
DPU-3445可以通過串行RS-232接口或IRDA接口同計算機相連。當采用RS-232接口時,信號電平-3到-15V為邏輯‘1’,+3到+15V為邏輯‘0’。波特率可選為1200,2400,4800,9600,19200,38400bps,數據長度可選7或8位。停止位可選1或2位。校驗位可選奇校驗,偶校驗或無校驗。與主機(標準PC機)接口連接如圖1。
基于IRDA接口時,傳送距離為0.05m到1m,傳送角度±15°,脈寬典型值為1.63微秒,波特率為9600至115200bps,LSAP地址固定為7。
Dpu-3445有輸入緩沖區和行緩沖區。當它從主機接收數據時,將數據先存放到輸入緩沖區中,然后再從輸入緩沖區將數據取出放入行緩沖區中并執行命令。
2.2 位圖輸出驅動程序的實現
驅動程序的一個主要功能就是利用I/O緩沖,對數據進行加工,包括格式處理和編碼的轉換。Dpu-3445提供了一個位圖處理命令,其格式為:ESC+”*”+m+nl+nh+DATA
寫成代碼方式為:1bH+2aH+m+nl+nh+d1+d2++dk
m表明位圖方式:m=0,為8點單密度,m=1,為8點雙密度,m=32,為24點單密度,m=33,為24點雙密度。水平方向的點數為:256×nh+nl。d表示位圖的數據,8點位圖模式時k=(256×nh+nl),24點模式時k=(256×nh+nl)×3。其數據序列如圖2。
然而,BMP文件的數據存儲格式與Dpu-3445的數據存儲序列不一致。BMP文件可看成由三部分組成:位圖文件頭(bitmap-file header)、位圖信息(bitmap-infor-mation)和位圖字節陣列。位圖文件頭可用BITMAP-FILEHEADER來定義:
彩色表之后是圖像數據字節陣列。圖像的每一掃描行由表示圖像像素的連續的字節組成,每行的字節數取決于圖像的顏色數目和用像素表示的圖像寬度,
掃描行是由底向上存儲的,也就是說,陣列的個字節表示位圖左下角的像素,而一個字節表示位圖右上角的像素。
以黑白BMP文件為例,位圖的寬和高(像素)分別存放在第0x12~0x15與0x16~0x19字節處,數據字節陣列從0x3e開始存放。當用Dpu-3445輸出時,由于陣列排序不一致,所以從位圖文件中讀出的數據必須進行轉換,變換成Dpu-3445位圖處理命令所需要的格式才能輸出。下面給出從黑白BMP數據字節陣列到DPU-3445下24點方式打印數據序列轉換部分的C語言源代碼。
每調用一次上面所給的C語言源函數arrange(),將可轉換24×128bit的像素點陣數據,如對于128×120的位圖,應調用5次。若轉換像素位圖到DPU-3445下8點方式,則在上面程序段中只需將BITMAP-MODE24換成BITMAPMODE8(其值為8)即可。
3 結束語
在我們的產品設計中使用了DPU-3445作為位圖的輸出設備,其驅動程序中的數據轉換部分采用如上所述的代碼,取得了令人滿意的效果,達到了設計目標。