日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

    歡迎訪問 生活随笔!

    生活随笔

    當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

    编程问答

    (转)pb控制打印机

    發布時間:2023/12/14 编程问答 33 豆豆
    生活随笔 收集整理的這篇文章主要介紹了 (转)pb控制打印机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  1. https://blog.csdn.net/ribut9225/article/details/19408315

  2. 2014年02月18日 14:17:48?ribut9225?閱讀數 4020

    在使用連續紙打印數據窗口的情況下,需要定制打印的頁長,以保證打印機走紙正確,不用人工干預,實現連續打印。在PB中須調用外部函數來自定義紙張長度,比較繁瑣。本文介紹一種直接對打印機的控制方法,簡單實現對頁長的設定。

    ?

    ---- 一、 預備知識

    ?

    ---- 計算機與打印機的通訊使用ASCII碼進行,其中標準ASCII碼包括可打印字符及非打印字符(控制碼),打印機使用控制碼來定制打印機。大多數打印機指令使用控制碼escape作為其指令序列的第一個序列碼。下面介紹本文用到的幾個指令碼序列:

    ?

    設置換行量(行距)1/8 英寸

    ASCII碼 ESC 0

    十進制碼 27 48

    ?

    設置以行為單位的頁長

    ASCII碼 ESC C n

    十進制碼 27 67 n

    其中n 為每頁行數范圍(1-127)

    ?

    ---- 二、 PB中控制碼的傳送及定制頁長的實現

    ?

    ---- 在PB中通過函數Printsend(printjobnumber,string,{zerochar})來實現向打印機發送控制碼。各參數定義如下:

    ?

    printjobnumber: 由printjob()函數返回的打印作業號;

    string:????????控制字符串,使用ASCII碼;

    zerochar:??????用來替代string中的數字0;

    ?

    ---- 由于字符串中,0終止字符串,如果string 中包含0,則需利用其他字符來表示0,參數zerochar即為此用途而設,當PB發送控制字符串給打印機時,把替代的字符zerochar轉化為0。

    ?

    ---- 下面是具體的完成定制頁長打印數據窗口的程序(定制頁長為2.75英寸):

    ?

    long ll_job

    dw_print.reset()

    ll_job = printopen()

    if ll_job = -1 then

    messagebox(gs_title,"打印機未準備好")

    return

    end if

    //定制行距1/8英寸

    PrintSend(ll_job, CHAR(27)+CHAR(48))

    //設定頁長22行

    PrintSend(ll_job, CHAR(27)+CHAR(67)+CHAR(22))

    printdatawindow(ll_job,dw_print)

    printclose(ll_job)

    ?

    通過ESC指令集來控制。

    具體方法: ESC_D_M(M為數值)

    ?

    long ll_job

    dw_print.reset()

    ll_job = printopen()

    if ll_job = -1 then

    messagebox(gs_title,"打印機未準備好")

    return

    end if

    //定制行距1/8英寸

    PrintSend(ll_job, CHAR(27)+CHAR(48))

    //設定頁長22行

    PrintSend(ll_job,CHAR(27)+CHAR(67)+CHAR(dw_print.rowcount()))

    printdatawindow(ll_job,dw_print)

    printclose(ll_job)

    可控制打印走紙的長度,如你打印時用dw_print.print()你windows中默認打印機的紙張是A4

    這樣打印時如果dw中有一行也是把A4這張紙走完,如果你用上面的這可以控制如dw中有10行這樣走到第10行時,打印作業就停止了!,你可以把上面的程序寫到你的程序中就應該可以解決,不過此程序只適用于針式打印機

    如有問題可以發郵件pjj-33@163.com

    ?

  3. //連續打印

  4. job = PrintOpen()

  5. PrintSend(job,CharA(27) + CharA(67) + CharA(1)) //以行為單位設定頁長

  6. PrintSend(job,CharA(27) + CharA(85) + CharA(48)) //解除粗體字體

  7. PrintSend(job,CharA(28) + CharA(120) + CharA(1)) //選擇英文字體打印品質

  8. PrintDataWindow(job,dw)

  9. PrintClose(job)

  10. --*********************************************************************************
  11. --------------------打印機退紙----------------------------------------------------?

    打印時能使紙回退,打印完之后能能讓紙前進一些,適合于打票據的單位(注意使用printdatawindow函數,Datawindow中字體設置均無效) ??
    ? ??
    ? long ? job,temp ??
    ? job=printopen() ??
    ? printsend(job,"~h1B~h6A~254") ??
    ? printsend(job,"~h1B~h6A~100") ??
    ? printsend(job,"~h1c~h78~h01") ??
    ? printsend(job,"~h1B~h43~h01") ??
    ? print(job,"") ??
    ? temp=printdatawindow(job,dw_print) ? ? /*dw_print是要打印的數據窗口*/ ??
    ? printclose(job) ??
    ? Job ? = ? PrintOpen() ??
    ? printsend(job,"~h1B~h43~h13") ??
    ? ? ??
    ? printclose(job) ??
    ? ??

    --------------------------------------------------------------------------

    API之打印函數


    AbortDoc 取消一份文檔的打印

    AbortPrinter 刪除與一臺打印機關聯在一起的緩沖文件

    AddForm 為打印機的表單列表添加一個新表單

    AddJob 用于獲取一個有效的路徑名,以便用它為作業創建一個后臺打印文件。它也會為作業分配一個作業編號

    AddMonitor 為系統添加一個打印機監視器

    AddPort 啟動"添加端口"對話框,允許用戶在系統可用端口列表中加入一個新端口

    AddPrinter 在系統中添加一臺新打印機

    AddPrinterConnection 連接指定的打印機

    AddPrinterDriver 為指定的系統添加一個打印驅動程序

    AddPrintProcessor 為指定的系統添加一個打印處理器

    AddPrintProvidor 為系統添加一個打印供應商

    AdvancedDocumentProperties 啟動打印機文檔設置對話框

    ClosePrinter 關閉一個打開的打印機對象

    ConfigurePort 針對指定的端口,啟動一個端口配置對話框

    ConnectToPrinterDlg 啟動連接打印機對話框,用它同訪問網絡的打印機連接

    DeleteForm 從打印機可用表單列表中刪除一個表單

    DeleteMonitor 刪除指定的打印監視器

    DeletePort 啟動"刪除端口"對話框,允許用戶從當前系統刪除一個端口

    DeletePrinter 將指定的打印機標志為從系統中刪除

    DeletePrinterConnection 刪除與指定打印機的連接

    DeletePrinterDriver 從系統刪除一個打印機驅動程序

    DeletePrintProcessor 從指定系統刪除一個打印處理器

    DeletePrintProvidor 從系統中刪除一個打印供應商

    DeviceCapabilities 利用這個函數可獲得與一個設備的能力有關的信息

    DocumentProperties 打印機配置控制函數

    EndDocAPI 結束一個成功的打印作業

    EndDocPrinter 在后臺打印程序的級別指定一個文檔的結束

    EndPage 用這個函數完成一個頁面的打印,并準備設備場景,以便打印下一個頁

    EndPagePrinter 指定一個頁在打印作業中的結尾

    EnumForms 枚舉一臺打印機可用的表單

    EnumJobs 枚舉打印隊列中的作業

    EnumMonitors 枚舉可用的打印監視器

    EnumPorts 枚舉一個系統可用的端口

    EnumPrinterDrivers 枚舉指定系統中已安裝的打印機驅動程序

    EnumPrinters 枚舉系統中安裝的打印機

    EnumPrintProcessorDatatypes 枚舉由一個打印處理器支持的數據類型

    EnumPrintProcessors 枚舉系統中可用的打印處理器

    Escape 設備控制函數

    FindClosePrinterChangeNotification 關閉用FindFirstPrinterChangeNotification函數獲取的一個打印機通告對象

    FindFirstPrinterChangeNotification 創建一個新的改變通告對象,以便我們注意打印機狀態的各種變化

    FindNextPrinterChangeNotification 用這個函數判斷觸發一次打印機改變通告信號的原因

    FreePrinterNotifyInfo 釋放由FindNextPrinterChangeNotification函數分配的一個緩沖區

    GetForm 取得與指定表單有關的信息

    GetJob 獲取與指定作業有關的信息

    GetPrinter 取得與指定打印機有關的信息

    GetPrinterData 為打印機設置注冊表配置信息

    GetPrinterDriver 針對指定的打印機,獲取與打印機驅動程序有關的信息

    GetPrinterDriverDirectory 判斷指定系統中包含了打印機驅動程序的目錄是什么

    GetPrintProcessorDirectory 判斷指定系統中包含了打印機處理器驅動程序及文件的目錄

    OpenPrinter 打開指定的打印機,并獲取打印機的句柄

    PrinterMessageBox 在擁有指定打印作業的系統上顯示一個打印機出錯消息框

    PrinterProperties 啟動打印機屬性對話框,以便對打印機進行配置

    ReadPrinter 從打印機讀入數據

    ResetDC 重設一個設備場景

    ResetPrinter 改變指定打印機的默認數據類型及文檔設置

    ScheduleJob 提交一個要打印的作業

    SetAbortProc 為Windows指定取消函數的地址

    SetForm 為指定的表單設置信息

    SetJob 對一個打印作業的狀態進行控制

    SetPrinter 對一臺打印機的狀態進行控制

    SetPrinterData 設置打印機的注冊表配置信息

    StartDoc 開始一個打印作業

    StartDocPrinter 在后臺打印的級別啟動一個新文檔

    StartPage 打印一個新頁前要先調用這個函數

    StartPagePrinter 在打印作業中指定一個新頁的開始

    WritePrinter 將發送目錄中的數據寫入打印機

    --------------------------------

    PB中控制碼的傳送及定制頁長的實現

    ----?在PB中通過函數Printsend(printjobnumber,string,{zerochar})來實現向打印機發送控制碼。各參數定義如下:

    printjobnumber: 由printjob()函數返回的打印作業號; string: 控制字符串,使用ASCII碼; zerochar: 用來替代string中的數字0;

    ----?由于字符串中,0終止字符串,如果string 中包含0,則需利用其他字符來表示0,參數zerochar即為此用途而設,當PB發送控制字符串給打印機時,把替代的字符zerochar轉化為0。

    ----?下面是具體的完成定制頁長打印數據窗口的程序(定制頁長為2.75英寸):

    long ll_job dw_print.reset() ll_job = printopen() if ll_job = -1 thenmessagebox(gs_title,"打印機未準備好")return end if //定制行距1/8英寸 PrintSend(ll_job, CHAR(27)+CHAR(48)) //設定頁長22行 PrintSend(ll_job, CHAR(27)+CHAR(67)+CHAR(22)) printdatawindow(ll_job,dw_print) printclose(ll_job)
    ?
  12. 總結

    以上是生活随笔為你收集整理的(转)pb控制打印机的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。