華中科技大學武昌分校信息科學與技術系 陳 青 周 晶
基于VFOX的串口票據(jù)打印機系統(tǒng)設計
華中科技大學武昌分校信息科學與技術系 陳 青 周 晶
本文詳細介紹了在VisualFoxPro6.0數(shù)據(jù)庫中,如何完成串行口票據(jù)打印機的硬件連接,以及利用程序控制方法實現(xiàn)軟件表格的輸出。
打印機;串行口;波特率;控制命令
打印機采用北京訊普(SIUPO)公司SPTL4004SK針點式80列字符串口打印機。接口為RS-232電平25針串行I/O口。打印機備有DC 5v-3A電源插口。該款打印機內部自帶標準ASCII字符集,和國標二級漢字字庫??纱蛴?X7標準字符,同時也可以打印12X12、16X16點陣漢字。打印機內部設置有35個ESC/P控制命令,與IBM/EPSON ESC/P兼容,同時具有FS標準漢字控制指令集。
25針串口引腳連接如下:1腳+5v(可選接)、2腳RXD(輸出:打印機向主機發(fā)送控制碼)、3腳TXD(輸入:打印機從主機接收數(shù)據(jù))、4腳CTS(輸出:信號“MARK”狀態(tài)高電平,表示打印機忙;信號“space”表示就緒可接收數(shù)據(jù)。5腳GND。
按照以上規(guī)格可以自制連接串口電纜線,用DB25針RS-232公頭接口可以將2、3、4、5腳直接連DB9母頭端口上,因此可將臺式電腦的COM1口直接連接打印機串口。
打印機硬件設置:串口通訊波特率可以在:150、300、600、1200、2400、4800、9600、19200中可選,默認9600。通過DIP6開關設置,本文使用設置狀態(tài)是:110011,即:波特率2400,8位數(shù)據(jù)位,無校驗位。
漢字打印命令包括進入和退出漢字打印、執(zhí)行和取消漢字倍寬打印和設置漢字點陣打印規(guī)格等功能,常用命令如下:
圖1 程序設計思想
(1)進入/退出漢字打印命令
進入:ASCII:FS &;16進制:1C 26;退出:ASCII:FS.;16進制:1C 2E
(2)執(zhí)行/取消漢字倍寬打印
執(zhí)行:ASCII:FS SO;16進制:1C OE取消:ASCII:FS DC4;16進制:1C 14
打印機收到此命令后,漢字將在橫向放大一倍,縱向不改變。每個倍寬方式的執(zhí)行最多保持一行。
SP系列打印機漢字打印外,還提供了字符集1進行字符打印。字符集1中有6×8點陣字符224個,包括ASCII字符及一些圖形及字符。
(1)選擇字符集1:ASCII:ESC 6;16進制:1B 36
在該命令輸入之后的字符均使用字符集1的字符進行打印。
(2)設置n點行間距:ASCII:ESC I n;16進制:1B 31 n
后面的換行命令設置n點行間距,n的值是0-255之間,在使用ESC/K命令打印點陣圖形時,通常設置n=0。文本打印時通常設置n=3。
主要用于打開計算機串行接口COM1,并設置串行通信的波特率以及數(shù)據(jù)位,將它們放在“開始打印”按鈕的click事件中就可以實現(xiàn)打印機和計算機的串行通信。
#define COM1 1 &&此段程序由于串口初始化部分
comm1=createobject("mscommlib.mscomm.1")&&創(chuàng)建Microsoft Communications control控件對象
圖2 打印程序部分代碼
comm1.commport=COM1 &&指定COM1口工作,也可以是其它端口。
comm1.portopen=.t. &&打開COM1口。
comm1.settings="2400,n,8,1"&&設置傳輸速率(波特率2400),無奇偶校驗,數(shù)據(jù)位8,停止位1
例如:當從VFP命令狀態(tài)下,向打印機發(fā)出下列控制碼:chr(0x1c)+chr(0x26)設定進入漢字打印。再發(fā)出命令:chr(0x1b)+chr(0x36)設定字符集1;輸入“How are you!”該字符串將在打印機上打印。
注意:ASCII碼打印只有在打印緩沖區(qū)滿時,或遇到換行(0X0A)回車(0XOD)才執(zhí)行打印。
程序設計思想如圖1左所示。
在現(xiàn)階段的打印機應用程序中,主要通過USB口/或LPT1口實現(xiàn)數(shù)據(jù)的傳輸?shù)模^少有直接通過串口控制打印機實現(xiàn)打印。本例通過VisualFoxPro實現(xiàn)了利用COM1串口讓微型票據(jù)打印機實現(xiàn)打印輸出數(shù)據(jù)表格的作用。啟動應用程序運行后其菜單功能界面如圖1右所示。
(1)技術要點
本例主要是通過VisualFoxPro的表單按鈕實現(xiàn)對數(shù)據(jù)表的直接操作,實現(xiàn)串口打印的,其中的text屬性直接和數(shù)據(jù)表關聯(lián),所有Button按鈕的click(觸發(fā)響應)事件都對應特定的功能代碼。
本實例具有可移植性,可以在任意計算機上實現(xiàn)串口通信打印。
(2)實現(xiàn)過程
①新建一個項目,命名為Ex13_02,默認窗體為Form1。
②在Form1窗體中,主要添加6個Button按鈕,“開始打印”按鈕用于控制打印機輸出,其他按鈕用于對數(shù)據(jù)表的操作。
③打印程序部分代碼如圖2所示。
[1]北京迅普電子技術公司.面板式微型打印機使用說明書[OL].HTTP://WWW.SIUPO.COM.
[2]史濟民,等.VisualFoxPro及其應用系統(tǒng)開發(fā)[M].清華大學出版社,2006,8.