• LODOP获取打印机状态码和状态码含义测试


    由于打印机千差万别,打印机执行的标准也不一样,LODOP获取的打印状态码也可能不同,安装了个打印机驱动实际测试一下,测试的打印机驱动是Brother Color Type3 Class Driver。

    用LODOP获取打印机状态码,和打印机队列的状态对比一下,分别是打印机错误,正在排队,和脱机。
    1.该打印机队列里该任务呈现的是:错误-正在打印
    用LODOP获取的打印状态码8210,状态码含义是 错误-正在打印
    LODOP获取的和打印机队列一致。
    2.该打印机队列里该任务呈现的是:状态是空,但是有打印任务,进入了队列,正在排队
    用LODOP获取的打印状态码0,状态码含义是 进入队列
    LODOP获取的和打印机队列一致。
    3.该打印机队列里该任务呈现的是:打印机脱机(手动设置了该打印机的脱机状态)
    用LODOP获取的打印状态码0,状态码含义是 进入队列
    LODOP获取的和打印机队列一致,但是没有获取到脱机状态。

    所以用LODOP获取某种打印机的状态码,建议实际测试一下,如果状态码不正确,应该是该打印机的标准不一样,如果想要获取打印成功,可以判断job不在队列,或直接判断打印返回值加入队列算成功,关于打印成功,这两种,可查看本博客的另一篇博文:

    注意:加上这句,LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);,PRINTA的返回值才会是job代码。不加这句,可以直接判断PRINTA的返回值,通过该语句是否执行加入队列,这种简单的方法判断打印成功。简单方法:  

    LODOP获取打印成功,是否加入队列

    测试代码:

    如本文中,获取的状态码为8210,获取的状态码含义是 错误-正在打印。
    状态码是一个枚举组合值,是数字合计值。例如:1-已暂停,2-错误,4-正删除,8-进入队列,16-正在打印........等
    状态码除以1024,取余数,可以得到合计值,然后根据合计值可以对照信息找到状态码含义,LODOP本身可以直接获取状态码含义,可以直接获取本文的这个状态码含义。
    8210/1024=8.017......(用电脑自带的计算器算的结果)
    8*1024=8192(可以整除出来的数值)
    8210-8192=18(得到的余数)
    18=2+16=错误+正在打印。所以该状态码代表的含义是错误,正在打印。

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>WEB打印控件LODOP</title>
    <script language="javascript" src="LodopFuncs.js"></script>
    </head>
    <body>
    <a href="javascript:prn1_preview()">获取打印job代码</a>
    <input type="text" id="T1" size="20" value=""><br>
    <a href="javascript:prn2_preview()">获取打印状态码</a>
    <input type="text" id="T2" size="20" value=""><br>
    <a href="javascript:prn3_preview()">获取打印状态码含义</a>
    <input type="text" id="T3" size="20" value=""><br>
    <script language="javascript" type="text/javascript">   
            var LODOP; //声明为全局变量 
        function prn1_preview() {//获取job代码
            LODOP=getLodop();  
            LODOP.PRINT_INIT("");
            LODOP.ADD_PRINT_TEXT(50,231,260,39,"一个文本");
            LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);
            if (LODOP.CVERSION) {
                LODOP.On_Return=function(TaskID,Value){document.getElementById('T1').value=Value;};
                LODOP.PRINTA();
            } else document.getElementById('T1').value=LODOP.PRINTA();
        };
        function prn2_preview() {//获取打印状态码
              LODOP=getLodop(); 
            if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){document.getElementById('T2').value=Value;}; 
            var stResult=LODOP.GET_VALUE("PRINT_STATUS_ID",document.getElementById('T1').value);
            if (!LODOP.CVERSION) document.getElementById('T2').value=stResult; 
        };
        function prn3_preview() {//获取该打印状态码的含义
              LODOP=getLodop(); 
            if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){document.getElementById('T3').value=Value;}; 
            var stResult=LODOP.GET_VALUE("PRINT_STATUS_TEXT",document.getElementById('T1').value);
            if (!LODOP.CVERSION) document.getElementById('T3').value=stResult; 
        };
    </script> 
    </body>

     

  • 相关阅读:
    react脚手架和JSX
    promise
    防抖和节流
    call/apply/bind 用法
    js this指向
    vue单页面应用刷新网页后vuex的state数据丢失的解决方案
    Echarts基础
    继承
    原型链
    vue项目中使用生成动态二维码
  • 原文地址:https://www.cnblogs.com/huaxie/p/10174903.html
Copyright © 2020-2023  润新知