yzms/show/js/qr.js

155 lines
3.9 KiB
JavaScript
Raw Normal View History

2024-04-01 15:54:27 +08:00
var isshowQR = true;
//读取二维码
function fromKeyCode(code) {
if((code >= 48 && code <= 57) || (code >= 65 && code <= 90)) return String.fromCharCode(code);
var keys = {186: ';', 188: ',', 189: '-', 190: '.', 191: '/', 222: "'", 219: '[', 221: ']', 187: '=',
96:'Num 0', 97:'Num 1', 98:'Num 2', 99:'Num 3', 100:'Num 4', 101:'Num 5', 102:'Num 6', 103:'Num 7', 104:'Num 8', 105:'Num 9',
111:'Num /', 106:'Num *', 109:'Num -', 111:'Num /', 107:'Num +',13:'[enter]',8:'[back]',110:'Num .'
//,45:'0', 35:'1', 40:'2', 34:'3', 37:'4', 12:'5', 39:'6', 36:'7', 38:'8', 33:'9'
};
if(keys[code]) return keys[code];
return '*err*';
}
function hashCode(strKey)
{
var hash = 0;
if(strKey != null && strKey != "")
{
for (var i = 0; i < strKey.length; i++)
{
hash = hash * 31 + strKey.charCodeAt(i);
hash = intValue(hash);
}
}
return hash;
}
function intValue(num)
{
var MAX_VALUE = 0x7fffffff;
var MIN_VALUE = -0x80000000;
if(num > MAX_VALUE || num < MIN_VALUE)
{
return num &= 0xFFFFFFFF;
}
return num;
}
document.onkeydown = function() {
var code = event.keyCode; //alert(code+","+fromKeyCode(code));return;
//[st]sduf87fjsdfysd78,526976123;
if(code == 16) return ;
dealKey('1', fromKeyCode(code));//document.getElementById("div1").innerHTML += fromKeyCode(code);
//document.getElementById("div1").innerHTML += fromKeyCode(code)+"|";
}
var maxInputTime = 10;
var kb_status = {'1':'1','2':'1'};
var kb_readStr = {'1':'','2':''};
var kb_timeOut = {'1':'','2':''};
var last1time = 0;
var nowInput = false;
var inputCode = '';
var closeTime = 0;
var closeItv;
var nowInputFrom = '1';
var nowLaseInput = 0;
var lastCloseInput = 0;
var lastInput1 = 0;
var lastSucTime = 0;
var lastddh = '';
var lastdctype = '';
//[st]a7nd823sd,-235435454;
function dealKey(from, c) {
if(from == '1') last1time = new Date().getTime();//alert(from);
if(kb_status[from] == '1') { //开始
if(c == '[') {
kb_timeOut[from] = setTimeout("readErr('"+from+"', 1);", 2000);
kb_status[from] = '2';
}
else readErr(from, 2);
} else if(kb_status[from] == '2') { //读取s
if(c == 'S') kb_status[from] = '3';
else {
kb_status[from] = '1';
readErr(from, 3);
}
} else if(kb_status[from] == '3') { //读取t
if(c == 'T') kb_status[from] = '4';
else {
kb_status[from] = '1';
readErr(from, 4);
}
} else if(kb_status[from] == '4') { //读取]
if(c == ']') {
kb_status[from] = '5';
kb_readStr[from] = '';
} else {
kb_status[from] = '1';
readErr(from, 5);
}
} else if(kb_status[from] == '5') { //读取内容
if(c == ';') {
try{clearTimeout(kb_timeOut[from]);} catch(e){}
kb_status[from] = '1';
var a = kb_readStr[from].split(",");
if(a.length == 2) {
var s1 = a[0].toLowerCase();
var hcode = a[1];
if(hashCode(s1) == hcode) {
if(from == '1') {
qrReadContent2(from, s1);
} else {
setTimeout(function() {
if(new Date().getTime() - last1time > 1000) {
qrReadContent2(from, s1);
}
}, 300);
}
} else {
//alert(s1+","+hcode+","+hashCode(s1));
readErr(from, 6);
}
} else {
readErr(from, 7);
}
kb_readStr[from] = '';
} else {
if(c == '*err*') {
kb_status[from] = '1';
readErr(from, 8);
} else {
kb_readStr[from] += c;
}
}
}
//document.getElementById("div1").innerHTML += c+"|"+kb_status[from]+"$";
}
function readErr(from, rs) {
kb_status[from] = '1';
kb_readStr[from] = '';
try{clearTimeout(kb_timeOut[from]);} catch(e){}
//alert(from+":读取错误!"+rs);
}
function qrReadContent2(from, str) {
//document.getElementById("div1").innerHTML += from+": "+str + '<br />';
if(lastddh == str && new Date().getTime() - lastSucTime < 30000) return ;
lastSucTime = new Date().getTime();
//testdiv.innerHTML += str+"<br />";
//addOrder(str)
//alert(str);
//document.getElementById("div1").innerHTML += str;
qrReadContent(str);
}