我在开发时候用到IC卡签到考勤,但系统是B/S架构的,我想实现的场景是,只要用户登录打开引入OCX的这个页面,持有IC卡的人直接依次从读卡器上自动完成刷卡功能,C/S具有多线程,可很顺手的实现自动,但B/S中加入硬件都采用JS调用的OCX中接口,我纠结了很久,不知道怎么在JS中实现页面自动调用我的读卡函数,想采用js中的SetTimeOut(),总认那不合适,寻求能者建谋,能够给我帮助,或是与我交流。
我的读卡js程序如下:<script type="text/javascript" language="javascript">
var wsrx = new ActiveXObject("WSRX.WSR.1");
var ret=0;
var portno=0;
var CardNo="";
function getCardNo()
{
//打开串口
ret=wsrx.aws_openPort(portno); //参数: 1: 串行COM1口
if (ret>=0)
{
wsrx.aws_loadKey_Hex(portno,"FFFFFFFFFFFF",0);
ret=wsrx.aws_readBlock_Hex(portno,0);
if (ret>=0)
{
//获取卡号
var cardno="";
ret=wsrx.aws_getCardNo_String(portno); //获取卡号
if (ret>=0)
{
cardno=wsrx.aws_getCardNo();
CardNo= String(cardno);
wsrx.aws_beep(portno);//蜂鸣
wsrx.aws_closePort(portno); //关闭串口
if(document.forms["form1"].ChkSms.checked==true)
{
window.location.href("AttendanceSubmit.aspx?CardNO="+CardNo+"&Send=1");//我目前的实现是用户点击考勤按钮传参到另一页面处理
}
else
{
window.location.href("AttendanceSubmit.aspx?CardNO="+CardNo+"&Send=0");//我目前的实现是用户点击考勤按钮传参到另一页面处理
}
//window.location.href("");
}
else
{
document.getElementById("lblMsg").innerText = "错误:读卡号失败!";
wsrx.aws_closePort(portno); //关闭串口
}
}
else
{
document.getElementById("lblMsg").innerText = "错误:请安放匹配机型的IC卡!";
wsrx.aws_closePort(portno); //关闭串口
}
}
else
{
document.getElementById("lblMsg").innerText = "错误:串口打开失败!";
}
}
</script>
我的读卡js程序如下:<script type="text/javascript" language="javascript">
var wsrx = new ActiveXObject("WSRX.WSR.1");
var ret=0;
var portno=0;
var CardNo="";
function getCardNo()
{
//打开串口
ret=wsrx.aws_openPort(portno); //参数: 1: 串行COM1口
if (ret>=0)
{
wsrx.aws_loadKey_Hex(portno,"FFFFFFFFFFFF",0);
ret=wsrx.aws_readBlock_Hex(portno,0);
if (ret>=0)
{
//获取卡号
var cardno="";
ret=wsrx.aws_getCardNo_String(portno); //获取卡号
if (ret>=0)
{
cardno=wsrx.aws_getCardNo();
CardNo= String(cardno);
wsrx.aws_beep(portno);//蜂鸣
wsrx.aws_closePort(portno); //关闭串口
if(document.forms["form1"].ChkSms.checked==true)
{
window.location.href("AttendanceSubmit.aspx?CardNO="+CardNo+"&Send=1");//我目前的实现是用户点击考勤按钮传参到另一页面处理
}
else
{
window.location.href("AttendanceSubmit.aspx?CardNO="+CardNo+"&Send=0");//我目前的实现是用户点击考勤按钮传参到另一页面处理
}
//window.location.href("");
}
else
{
document.getElementById("lblMsg").innerText = "错误:读卡号失败!";
wsrx.aws_closePort(portno); //关闭串口
}
}
else
{
document.getElementById("lblMsg").innerText = "错误:请安放匹配机型的IC卡!";
wsrx.aws_closePort(portno); //关闭串口
}
}
else
{
document.getElementById("lblMsg").innerText = "错误:串口打开失败!";
}
}
</script>
解决方案 »
- 学习效率高的方法 给点参考意见吧
- JScript前辈们都来帮小弟看看。
- 学习js好久了,自认为可以了,其实我还差...每次输出的随机数都是一样的why?请大家帮忙分析一下。
- 页面执行问题 请大神解惑
- 如何跨服务器传值!
- 在线跪求大神!!z变量值同时赋给隐藏域name="aid01"和隐藏域name="aid02"
- 连接数据库问题
- html 2 xml (客户端浏览器执行)
- 一个简单的问题。由于我现在在做JAVA项目,用的是JBUIDER,不能用以前的VJ作为编辑器。请各位推荐一个好使的JS编辑器
- 谁能提供下拉菜单呢?要求在各分辩率下显示时,不会错位,谢谢.
- 求一js
- 关于js读取xml兼容foxfire的问题
即使是setTimeout setInternal
来定时执行也只是模拟
实际也还是要排队
所以没有什么具体搞法
你就直接用setTimeout来设定几秒后执行就可以了
同志们,统一战线的咋这么少呢?