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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM