• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      非標鏈式紙打印位置偏差處理探索

      2017-03-23 12:48:20劉德軍
      科學與財富 2016年34期
      關鍵詞:非標準鏈式紙張

      劉德軍

      (射陽縣人民醫(yī)院 信息科 224300)

      摘 要:鏈式打印紙是日常使用的一種紙張類型,通常用于單聯(lián)或多聯(lián)的票據(jù)。通過針式打印機的鏈式輸紙器的送紙,完成打印任務。但對于非標準格式的鏈式紙張打印時卻存在位置偏差的現(xiàn)象,經(jīng)過連續(xù)多張打印后,位置偏差相當嚴重,甚至不能忍受。

      關鍵詞:鏈式;非標準;紙張;偏差

      一、前言

      作者在給某單位開發(fā)信息系統(tǒng)時,使用到該單位以前使用的定制的鏈式票據(jù)紙,其規(guī)格為寬12CM,高為5.5孔距(計算紙張高度的方法為:連續(xù)紙孔數(shù)×0.5×2.54CM=高度,5.5×0.5×2.54=6.985CM)。開始測試時沒發(fā)現(xiàn)紙張打印位置偏差問題,但隨著系統(tǒng)的正式使用,打印多張后就發(fā)生了明顯示的偏移,張數(shù)越多偏移越嚴重,由于該發(fā)票是套打格式的,因此該問題是不能忍受的。

      二、過程

      經(jīng)過咨詢打印機廠家工程師,得知此問題是因為連續(xù)紙孔數(shù)為非整數(shù),根據(jù)計算紙張高度的方法為:連續(xù)紙孔數(shù)×0.5×2.54CM=高度,導致紙張高度為6.985CM(即帶三位小數(shù)),而操作系統(tǒng)紙張的精度為兩位小數(shù),因此要么設為6.98CM,要么設置為6.99CM,隨著打印張數(shù)的增加,其偏差也在增加。設為6.98CM時,位置逐漸向正常位置的上方偏移,而設為6.98CM時,位置逐漸向正常位置的下方偏移。因此除非修改紙張規(guī)格,否則無法正常打印。偏移情況如圖示:

      三、處理方法

      通過不斷的測試,作者終于找到一種方法來解決非標鏈式紙打印位置偏差的問題。解決思路:既然無法更改紙張,那么就變通處理,只要在經(jīng)過一定數(shù)量的紙張偏差后,通過修正的消除該偏差,即可使打印位置回歸正常位置。

      根據(jù)這一思路具體方法是:通過計算多張紙累積偏差和,調用打印機指令集進行誤差修正,從而實現(xiàn)正常打印。(打印指令集:控制打印機操作的打印控制語言指令集合。計算機通過打印控制語言,以軟件命令的方法來控制打印機操作,解釋執(zhí)行打印數(shù)據(jù),獲得打印結果的。)

      四、詳細步驟

      1、新建VB工程,添加模塊,名稱為mdlPrintControl。

      2、mdlPrintControl代碼如下:

      Option Explicit

      ‘聲明對動態(tài)鏈接庫?(DLL)?中外部過程的引用

      Public Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long

      Public Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long

      Public Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long

      Public Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long

      Public Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As DOCINFO) As Long

      Public Declare Function WritePrinter Lib "winspool.drv" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long

      Public Type DOCINFO

      pDocName As String

      pOutputFile As String

      pDatatype As String

      End Type

      Public lReturn As Long

      Public MyDocInfo As DOCINFO

      Public lpcWritten As Long

      Public sWrittenData As String

      Public lhPrinter As Long

      Public Sub PrintRollBack() ‘控制打印機后退

      lReturn = OpenPrinter(Printer.DeviceName, lhPrinter, 0)

      If lReturn = 0 Then

      MsgBox "未找打印機!"

      Exit Sub

      End If

      MyDocInfo.pDocName = ""

      MyDocInfo.pOutputFile = vbNullString

      MyDocInfo.pDatatype = vbNullString

      StartDocPrinter lhPrinter, 1, MyDocInfo

      sWrittenData = Chr(27) + "j" + Chr(30) ‘回退走紙

      WritePrinter lhPrinter, ByVal sWrittenData, Len(sWrittenData), lpcWritten

      EndPagePrinter lhPrinter

      EndDocPrinter lhPrinter

      ClosePrinter lhPrinter

      End Sub

      3、調用方法

      ‘將紙張高度設為6.98CM

      ‘根據(jù)實際使用狀態(tài)調整代碼中數(shù)字40為合適的數(shù)字即可,

      If i Mod 40 = 0 Theni為打印張數(shù)計數(shù)

      DoPrint (i) ‘打印操作

      Call PrintRollBack ‘調用控制打印機后退

      Else

      DoPrint (i)

      End If

      五、體會與總結

      通過調用打印機指令集,成功修正了因非標鏈式紙導致的打印位置偏差問題。對于控制打印機后退所需的紙張數(shù)可根據(jù)發(fā)票印刷位置與打印位置能忍受的程度來定,通過可調參數(shù)來使用時將更為方便。函數(shù)執(zhí)行后,會產(chǎn)生一行打印任務。本例調試環(huán)境為:Window XP(SP3)+Visual Basic 6.0(SP6),運行環(huán)境為:Window 10,打印機型號為EPSON LQ-635K。

      參考文獻

      [1]王懷彬等,Visual Basic程序設計,機械工業(yè)出版社,2008.04.

      [2]北京愛普生軟件技術發(fā)展有限公司,ESC/P、ESC/P2、ESC/PK、ESC/PK2程序設計指南,1994.08.

      猜你喜歡
      非標準鏈式紙張
      倔強的紙張
      紙張的隱秘攻擊
      薄如紙張的揚聲器
      一類常微分方程的非標準有限差分法
      鏈式STATCOM內(nèi)部H橋直流側電壓均衡控制策略
      黑龍江電力(2017年1期)2017-05-17 04:25:05
      不用一張紙,NENDO就描述出了紙張形態(tài)的千變?nèi)f化
      鏈式D-STATCOM直流電壓分層協(xié)調控制策略
      電測與儀表(2015年4期)2015-04-12 00:43:08
      10kV鏈式STATCOM的研究與設計
      電測與儀表(2015年4期)2015-04-12 00:43:08
      鏈式咨詢看浙江
      加工非標準小精孔對麻花鉆切削部分的改制
      河南科技(2014年23期)2014-02-27 14:19:02
      茂名市| 汉沽区| 崇文区| 黄梅县| 化州市| 延安市| 调兵山市| 和静县| 临汾市| 铜梁县| 浦江县| 加查县| 靖远县| 巴中市| 松阳县| 双城市| 马鞍山市| 镇巴县| 勃利县| 高密市| 夏邑县| 自治县| 永春县| 宜城市| 商洛市| 辽阳县| 尚志市| 秦皇岛市| 郎溪县| 东安县| 九龙坡区| 鲜城| 德清县| 灵石县| 泾川县| 蒙自县| 崇义县| 裕民县| 栾城县| 全州县| 林口县|