天天看點

js 條碼槍掃描_JavaScript 掃描槍使用(一)

JavaScript 掃描槍應用(一)

com.js為主要的代碼實作,test.html檔案為測試的頁面,其中包括了com.js檔案中方法的調用。以下為測試成功代碼:

com.js

//com.js

function initMSComm(){

document.write("");

document.write(" ");

document.write(" ");

document.write("");

document.write("");

document.write("");

document.write("");

document.write("");

document.write("");

document.write(" ");

document.write("");

document.write("");

document.write("");

document.write("");

document.write("");

document.write("");

document.write("");

document.write("");

document.write("");

if(MSComm1.PortOpen==false){

try{

MSComm1.PortOpen=true;

}catch(ex){

alert("com1端口打開失敗:"+ex.message);

}

}

}

var mscomm_scan_value = "";

// 序列槽響應事件

function MSComm1_OnComm(callBackFunction){

switch(MSComm1.CommEvent){

case 2: //接收事件

if(mscomm_scan_value == "") {

mscomm_scan_value = MSComm1.Input;

// 定時讀取緩存資訊

setTimeout("getMSCommScanValue("+callBackFunction+")",300);

}

break;

default: alert("Event Raised!"+MSComm1.CommEvent);

}

}

function getMSCommScanValue(callBackFunction){

// 讀取緩存中剩餘的資訊

while(MSComm1.InBufferSize > 0) {

mscomm_scan_value += MSComm1.Input;

}

// 執行頁面傳遞過來的函數

callBackFunction(mscomm_scan_value);

// 清空目前讀取資訊

mscomm_scan_value = ""

}

test.html

JavaScript序列槽測試

// MSComm1控件每遇到 OnComm 事件就調用 MSComm1_OnComm()函數

MSComm1_OnComm(mscommCallBack)

function mscommCallBack(scanValue) {

var ewtm = document.getElementById("ewtm");

ewtm.value = scanValue;

}

initMSComm();

二維條碼:

得出以上結果經過幾次失敗嘗試,嘗試内容如下:

1. 将test.html檔案中的

// MSComm1控件每遇到 OnComm 事件就調用 MSComm1_OnComm()函數

MSComm1_OnComm(mscommCallBack)

段代碼調整為:

window.onload = function() {

MSComm1.OnComm = MSComm1_OnComm;//采用其他方式取代閉包的實作過程

}

2. 在頁面head的JavaScript代碼中調用initMSComm方法,将Object标簽對象添加到頁面的一個div中,頁面提示加載ActiveX控件,但是無法綁定OnComm事件響應。

3. 當MSComm1.CommEvent為7時表示接收結束,可是隻能接收到狀态為2的情況,是以無法采用狀态為7時的響應事件。

4. 當initMSComm方法調用時,且MSComm1.CommEvent為2的情況下,判斷MSComm1.inBufferCount為0時進行事件響應,可能是緩沖等多種原因(具體不太清楚),會導緻inBufferCount出現多吃0的情況,是以沒有辦法使用,最終采用首次執行,定時擷取的方式完成緩存内容的讀取操作。

我的目的是通過一次方法調用,能夠實作對象的加載,響應事件的綁定,以及接收結束執行響應事件操作。由于我對JavaScript不夠熟練,是以沒能夠達到預期的目的,如果有更好的解決辦法,希望大家能夠給我留言。