天天看点

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不够熟练,所以没能够达到预期的目的,如果有更好的解决办法,希望大家能够给我留言。