IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript WebSocket NFC读写器示例源码 -> 正文阅读

[JavaScript知识库]JavaScript WebSocket NFC读写器示例源码

?

?读写器介绍:RFID读写器NFC发卡器WEB可编程NDEF文本/网址/智能海报/电话/启动-淘宝网 (taobao.com)icon-default.png?t=M5H6https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.2de6789eHCsr50&id=615391857885

<html>

<head>
? ??
? ? <meta http-equiv="Content-Language" content="zh-cn">
? ? <meta name="ProgId" content="FrontPage.Editor.Document">
? ? <title>USB IC、Ntag卡、ID、15693卡读卡器调用例程 通用插件版 V2.0</title>
?? ?
<script language="javascript" >

var iswsrun = false;
var ws;
var received_msg = "";

var mytimer;
var strls = "";
var errorno = "";

var wsUri ="ws://127.0.0.1:39189"; ? //端口号必须与RFIDWebServer端口一致

//控制字定义,控制字指定,控制字的含义请查看本公司网站提供的动态库说明

//javascript无法自定义常量, 你可以使用变量代替

var BLOCK0_EN = 0x01;//读第一块的(16个字节)
var BLOCK1_EN = 0x02;//读第二块的(16个字节)
var BLOCK2_EN = 0x04;//读第三块的(16个字节)
var NEEDSERIAL = 0x08;//仅读指定序列号的卡
var EXTERNKEY = 0x10;//用明码认证密码,产品开发完成后,建议把密码放到设备的只写区,然后用该区的密码后台认证,这样谁都不知道密码是多少,需要这方面支持请联系
var NEEDHALT = 0x20;//读/写完卡后立即休眠该卡,相当于这张卡不在感应区。要相重新操作该卡必要拿开卡再放上去

var myctrlword = 0;
var myareano = 0;
var authmode = 0;

var mypiccserial = "";
var mypicckey = "";?
var piccdata0_2 = "";?

var mypicckey_old = "";//旧密码
var mypicckey_new = "";//新密码

var myblockaddr = 1;//本次读卡的开始块号?? ?
var myblocksize = 8;//读8个块

var afi="00";?

function isUIntNum(val){
? ? var testval = /^\d+$/; // 非负整数?
? ? return (testval.test(val));?
}

function isHex(val){
? ? var testval = /^(\d|[A-F]|[a-f])+$/; // 十六进制数?
? ? return (testval.test(val));?
}

function ReadID()
{
?? ?CardIDShowerdev.value="";
?? ?var ReadIDComm="idr_read,";
? ? ? ? ? ? ? ? WebSocketRun(ReadIDComm);?? ?
}

function ReadIDOne()
{
?? ?CardIDShowerdev.value="";
?? ?var ReadIDComm="idr_read_once,";
? ? ? ? ? ? ? ? WebSocketRun(ReadIDComm);?? ?
}

function readcard()
{
?? ?myctrlword=BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY; ? ?//指定控制字,十进制
?? ?myareano = 8; ? ? ? ? ? ? ? ? ? ? //指定为本次读取第8区,十进制
?? ?authmode = 1; ? ? ? ? ? ? ? ? ? ? //指定密码模式,十进制,大于0表示用A密码认证,推荐用A密码认证
?? ?mypiccserial="00000000"; ? ? //指定本次操作的卡序列号,十六进制,未知时可指定为8个0?? ?
?? ?mypicckey = "ffffffffffff"; ? ? //指定卡片密码,十六进制,ffffffffffff为卡片厂家出厂密码
?? ?
?? ?CardIDShower.value = "";?? ?
?? ?
? ? ? ? ? ? ? ? //用parseInt转为十六进制数
?? ?var ReadCardComm="piccreadex,"+myctrlword+","+mypiccserial+","+myareano+","+authmode+","+mypicckey;
? ? ? ? ? ? ? ? WebSocketRun(ReadCardComm);?? ??? ??? ?
}

function writecard()
{
?? ?myctrlword=BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY; ? ?//指定控制字,十进制
?? ?myareano = 8; ? ? ? ? ? ? ? ? ? ? //指定为本次读取第8区,十进制
?? ?authmode = 1; ? ? ? ? ? ? ? ? ? ? //指定密码模式,十进制,大于0表示用A密码认证,推荐用A密码认证
?? ?mypiccserial="00000000"; ? ? //指定本次操作的卡序列号,十六进制,未知时可指定为8个0?? ?
?? ?mypicckey = "ffffffffffff"; ? ? //指定卡片密码,十六进制,ffffffffffff为卡片厂家出厂密码
?? ?
?? ?//指定写卡内容,长度为48个字节,其中每个字节以两个字符表示为十六进制数
?? ?piccdata0_2 = "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F";
?? ?
?? ?CardIDShower.value = "";
?? ?var WriteCardComm="piccwriteex,"+myctrlword+","+mypiccserial+","+myareano+","+authmode+","+mypicckey+","+piccdata0_2;
? ? ? ? ? ? ? ? WebSocketRun(WriteCardComm);?? ?
}

function writecarduid()?
{
? ? ? ? ? ? ? myctrlword = BLOCK0_EN; ? ? ?//指定控制字,十进制
? ? ? ? ? ? ? ?authmode = 1; ? ? ? ? ? ? ? ? ? ? ? //指定密码模式,十进制,大于0表示用A密码认证,推荐用A密码认证
? ? ? ? ? ? ? ?mypiccserial = "00000000"; ? ? //指定本次操作的卡序列号,十六进制,未知时可指定为8个0
? ? ? ? ? ? ? ?mypicckey = "ffffffffffff"; ? ? ? //指定卡片密码,十六进制,ffffffffffff为卡片厂家出厂密码

? ? ? ? ? ? ? ?piccdata0 = "12345678000102030405060708090A0B"; ? ?//指定写卡内容,长度为16个字节,其中前面四个字节是卡号,第五字节必须为卡号的异或和校验字,后面为厂家标识

?? ?CardIDShower.value = "";
?? ?var WriteCardComm="piccwriteserial,"+myctrlword+","+mypiccserial+","+authmode+","+mypicckey+","+piccdata0;
? ? ? ? ? ? ? ? WebSocketRun(WriteCardComm);
}


function changecardkeyex()
{
?? ?myctrlword=EXTERNKEY; ? ? ? ? ? //指定控制字
?? ?myareano = 8; ? ? ? ? ? ? ? ? ? //指定为本次读取第8区
?? ?authmode = 1; ? ? ? ? ? ? ? ? ? //批定密码模式,大于0表示用A密码认证,推荐用A密码认证
?? ?mypiccserial="00000000"; ? ? ? ?//指定本次操作的卡序列号,未知时可指定为8个0
?? ?mypicckey_old = "ffffffffffff"; //旧密码
?? ?mypicckey_new = "ffffffffffffFF078069ffffffffffff03";//新密码,其中最前面的ffffffffffff为A密码,中间的FF078069为访问控制位,后面的ffffffffffff为B密码,03是表示同时更改A、B、密码权限访问字,为02表示密码权限访问字不更改,只改A、B密码,为00表示只改A密码

? ? ? ? ? ? ? ? CardIDShower.value = "";
?? ?var ChangeKeyComm="piccchangesinglekeyex,"+myctrlword+","+mypiccserial+","+myareano+","+authmode+","+mypicckey_old+","+mypicckey_new;?? ?
? ? ? ? ? ? ? ? WebSocketRun(ChangeKeyComm);
}

function getdevicenumber()
{
?? ?CardIDShowerdev.value = "";
?? ?WebSocketRun("pcdgetdevicenumber");
}

function IDgetdevicenumber()
{
?? ?CardIDShowerdev.value = "";
?? ?WebSocketRun("IDpcdgetdevicenumber");
}

function beep()
{?? ?
?? ?CardIDShowerdev.value = "";
?? ?WebSocketRun("pcdbeep,30");?? ?
}

function IDbeep()
{?? ?
?? ?CardIDShowerdev.value = "";
?? ?WebSocketRun("idr_beep,30");?? ?
}

function clears1()
{
?? ?CardIDShower.value = "";
}

function clearsntag()
{
?? ?CardIDShowerNtag.value = "";
}

function clearsdev()
{
?? ?CardIDShowerdev.value = "";
}

//Ntag21x测试
function readcard_ntag()
{?? ??? ??? ?
?? ?strls = ntagserial.value.trim(); ? ? ?//指定序列号,未知卡序列号时可指定为14个0,因为NTAG21x卡是7个字节的卡序列号
?? ?if(strls=="")
?? ?{
?? ??? ?mypiccserial="00000000000000";
?? ?}
?? ?else
?? ?{
?? ??? ?if(!isHex(strls))
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"卡号输入错误\r\n";
?? ??? ??? ?ntagserial.focus();
?? ??? ??? ?ntagserial.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?mypiccserial = strls;
?? ?}

?? ?//指定密码,NTAG21x卡密码为4个字节,卡出厂时密码功能不启用,这样无需密码也能读写卡
?? ?if(check3.checked)
?? ?{?? ??? ?
?? ??? ?myctrlword=EXTERNKEY; ? ? ? ? ? ? ?//指定控制字,无需密码为0,当需要密码时为EXTERNKEY;
?? ??? ?strls = ntagkey3.value.trim();
?? ??? ?if(!isHex(strls))
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"密码输入错误\r\n";
?? ??? ??? ?ntagkey3.focus();
?? ??? ??? ?ntagkey3.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?mypicckey = strls;
?? ?}
?? ?else
?? ?{?? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mypicckey = "00000000";?? ?
?? ??? ?myctrlword = 0; ? ?//指定控制字,无需密码为0,当需要密码时为EXTERNKEY;
?? ?}
?? ??? ?
?? ?strls = ntagstartno.value.trim(); ? //起始页号
?? ?
?? ?if(!isUIntNum(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"起始页号输入错误\r\n";
?? ??? ?ntagstartno.focus();
?? ??? ?ntagstartno.select();
?? ??? ?return;
?? ?}

?? ?myblockaddr = parseInt(strls);//本次读卡的开始块号
?? ?
?? ?//页数
?? ?strls = ntagpagenumber.value.trim();
?? ?
?? ?if(!isUIntNum(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"页数输入错误\r\n";
?? ??? ?ntagpagenumber.focus();
?? ??? ?ntagpagenumber.select();
?? ??? ?return;
?? ?}
?? ?myblocksize = parseInt(strls);//读4个块

? ? ? ? ? ? ? ? var ReadNtagComm="piccreadex_ntag,"+myctrlword+","+mypiccserial+","+mypicckey+","+myblockaddr+","+myblocksize;
? ? ? ? ? ? ? ? WebSocketRun(ReadNtagComm); ? ? ?
}


function writecard_ntag()
{
?? ?//指定序列号,未知卡序列号时可指定为14个0,因为NTAG21x卡是7个字节的卡序列号
?? ?strls = ntagserial.value.trim();
?? ?if(strls=="")
?? ?{
?? ??? ?mypiccserial="00000000000000";
?? ?}
?? ?else
?? ?{
?? ??? ?if(!isHex(strls))
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"卡号输入错误\r\n";
?? ??? ??? ?ntagserial.focus();
?? ??? ??? ?ntagserial.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?mypiccserial = strls;
?? ?}

?? ?//指定密码,NTAG21x卡密码为4个字节,卡出厂时密码功能不启用,这样无需密码也能读写卡
?? ?if(check3.checked)
?? ?{
?? ??? ?//指定控制字
?? ??? ?myctrlword=EXTERNKEY;//无需密码为0,当需要密码时为EXTERNKEY;
?? ??? ?strls = ntagkey3.value.trim();
?? ??? ?if(!isHex(strls))
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"密码输入错误\r\n";
?? ??? ??? ?ntagkey3.focus();
?? ??? ??? ?ntagkey3.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?mypicckey = strls;
?? ?}
?? ?else
?? ?{
?? ??? ?mypicckey = "00000000";?? ?
?? ??? ?myctrlword = 0; ? //指定控制字,无需密码为0,当需要密码时为EXTERNKEY;
?? ?}
?? ?
?? ?//起始页号
?? ?strls = ntagstartno.value.trim();
?? ?
?? ?if(!isUIntNum(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"起始页号输入错误\r\n";
?? ??? ?ntagstartno.focus();
?? ??? ?ntagstartno.select();
?? ??? ?return;
?? ?}

?? ?myblockaddr = parseInt(strls);//本次读卡的开始块号
?? ?
?? ?//页数
?? ?strls = ntagpagenumber.value.trim();
?? ?
?? ?if(!isUIntNum(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"页数输入错误\r\n";
?? ??? ?return;
?? ?}
?? ?myblocksize = parseInt(strls);
?? ?
?? ?//数据
?? ?strls = ntagdata.value.trim();
?? ?
?? ?if(!isHex(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"数据输入错误\r\n";
?? ??? ?ntagdata.focus();
?? ??? ?ntagdata.select();
?? ??? ?return;
?? ?}

? ? ? ? ? ? ? ? var WriteNtagComm="piccwriteex_ntag,"+myctrlword+","+mypiccserial+","+mypicckey+","+myblockaddr+","+myblocksize+","+strls;
? ? ? ? ? ? ? ? WebSocketRun(WriteNtagComm);?? ?
}

function piccinit_ntag()
{?? ?
? ? ? ? ? ? ? ? //指定序列号,未知卡序列号时可指定为14个0,因为NTAG21x卡是7个字节的卡序列号
?? ?mypiccserial="00000000000000";
?? ?
?? ?//指定密码,NTAG21x卡密码为4个字节,卡出厂时密码功能不启用,这样无需密码也能读写卡
?? ?if(check1.checked)
?? ?{
?? ??? ?//指定控制字
?? ??? ?myctrlword=EXTERNKEY;//无需密码为0,当需要密码时为EXTERNKEY;
?? ??? ?strls = ntagkey1.value.trim();
?? ??? ?if(!isHex(strls))
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"密码输入错误\r\n";
?? ??? ??? ?ntagkey1.focus();
?? ??? ??? ?ntagkey1.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?mypicckey = strls;
?? ?}
?? ?else
?? ?{
?? ??? ?mypicckey = "00000000";?
?? ??? ?myctrlword = 0; ? ?//指定控制字,无需密码为0,当需要密码时为EXTERNKEY;
?? ?}
?? ?
?? ?//数据准备
?? ?if(select1.selectedIndex==1)
?? ?{//开启密码保护功能,写保护功能生效,但读保护需要下面的数据设定
?? ??? ?//取新密码
?? ??? ?strls = ntagkey2.value.trim();

?? ??? ?if(strls.length != 8)
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"新密码长度必须为8位\r\n";
?? ??? ??? ?ntagkey2.focus();
?? ??? ??? ?ntagkey2.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?
?? ??? ?strls = ntagkey2.value.trim();
?? ??? ?if(!isHex(strls))
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"新密码输入错误\r\n";
?? ??? ??? ?ntagkey2.focus();
?? ??? ??? ?ntagkey2.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?strls1=protectpageno.value.trim();//起始保护页号
?? ??? ?if(!isUIntNum(strls1))
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"起始保护页号输入错误\r\n";
?? ??? ??? ?protectpageno.focus();
?? ??? ??? ?protectpageno.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?
?? ??? ?strls1 = "0"+parseInt(strls1).toString(16);
?? ??? ?strls1 = strls1.substring(strls1.length-2);
?? ??? ?
?? ??? ?mypiccdata = "000000" + strls1;
?? ??? ?myctrlword = myctrlword + 0x01; //更新控制字
?? ??? ?
?? ??? ?//计数器
?? ??? ?strls1=keyerrortimes.value.trim();//允许密码错误次数
?? ??? ?if(!isUIntNum(strls1))
?? ??? ?{
?? ??? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"允许密码错误次数输入错误\r\n";
?? ??? ??? ?protectpageno.focus();
?? ??? ??? ?protectpageno.select();
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?
?? ??? ?i = parseInt(strls1);

? ? ? ? ? ? ? ? i = i % 8;
?? ??? ?
?? ??? ?if(check2.checked)
?? ??? ?{
?? ??? ??? ?i = i + 128;
?? ??? ?}
?? ??? ?strls1 = "0"+i.toString(16);
?? ??? ?strls1 = strls1.substring(strls1.length-2);
?? ??? ?
?? ??? ?mypiccdata = mypiccdata + strls1;
?? ??? ?
?? ??? ?mypiccdata = mypiccdata + "000000";
?? ??? ?
?? ??? ?mypiccdata = mypiccdata + strls;//新密码
?? ??? ?
?? ??? ?//PACK
?? ??? ?//PACK
?? ??? ?//RFUI
?? ??? ?//RFUI
?? ??? ?mypiccdata = mypiccdata + "16160000";
?? ??? ?
?? ??? ?myctrlword = myctrlword + 0x02; //更新控制字?? ?
?? ?}
?? ?else
?? ?{
?? ??? ?mypiccdata = "000000FF";//MIRROR,RFUI,MIRROR_PAGE,AUTH0
?? ??? ?
?? ??? ?myctrlword = myctrlword + 0x01; //更新控制字?? ?
?? ??? ?
?? ??? ?mypiccdata = mypiccdata + "000000000000000000000000";
?? ??? ?myctrlword = myctrlword + 0x02; //更新控制字?? ?
?? ??? ?
?? ?}

? ? ? ? ? ? ? ? var WriteNtagComm="piccinit_ntag,"+myctrlword+","+mypiccserial+","+mypicckey+","+mypiccdata;
? ? ? ? ? ? ? ? WebSocketRun(WriteNtagComm);?? ?
}

function readcard_15693()
{?? ?
?? ?myctrlword=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//读任何卡,不需指定卡号,读完后不静止该卡,可赋值NEEDSERIAL及NEEDHALT的组合模式,或为0
?? ?afi="00"; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //16进制,一般取00
?? ?mypiccserial="0000000000000000"; ? ? //指定序列号,未知卡序列号时可指定为18个0,因为15693卡是8个字节的卡序列号
?? ??? ?
?? ?strls = ntagstartno.value.trim(); ? //起始页号
?? ?
?? ?if(!isUIntNum(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"起始页号输入错误\r\n";
?? ??? ?ntagstartno.focus();
?? ??? ?ntagstartno.select();
?? ??? ?return;
?? ?}

?? ?myblockaddr = parseInt(strls);//本次读卡的开始块号
?? ?
?? ?//页数
?? ?strls = ntagpagenumber.value.trim();
?? ?
?? ?if(!isUIntNum(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"页数输入错误\r\n";
?? ??? ?ntagpagenumber.focus();
?? ??? ?ntagpagenumber.select();
?? ??? ?return;
?? ?}
?? ?myblocksize = parseInt(strls); //最大取值12

? ? ? ? ? ? ? ? var Read15693Comm="iso15693readex,"+myctrlword+","+afi+","+myblockaddr+","+myblocksize+","+mypiccserial;
? ? ? ? ? ? ? ? WebSocketRun(Read15693Comm); ? ? ?
}

function writecard_15693()
{?? ?
?? ?myctrlword=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//读任何卡,不需指定卡号,读完后不静止该卡,可赋值NEEDSERIAL及NEEDHALT的组合模式,或为0
?? ?afi="00"; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //16进制,一般取00
?? ?mypiccserial="0000000000000000"; ? ? //指定序列号,未知卡序列号时可指定为18个0,因为15693卡是8个字节的卡序列号
?? ?
?? ?//起始页号
?? ?strls = ntagstartno.value.trim();
?? ?
?? ?if(!isUIntNum(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"起始页号输入错误\r\n";
?? ??? ?ntagstartno.focus();
?? ??? ?ntagstartno.select();
?? ??? ?return;
?? ?}

?? ?myblockaddr = parseInt(strls);//本次读卡的开始块号
?? ?
?? ?//页数
?? ?strls = ntagpagenumber.value.trim();
?? ?
?? ?if(!isUIntNum(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"页数输入错误\r\n";
?? ??? ?return;
?? ?}
?? ?myblocksize = parseInt(strls);
?? ?
?? ?//数据
?? ?strls = ntagdata.value.trim();
?? ?
?? ?if(!isHex(strls))
?? ?{
?? ??? ?CardIDShowerNtag.value = CardIDShowerNtag.value + ?"数据输入错误\r\n";
?? ??? ?ntagdata.focus();
?? ??? ?ntagdata.select();
?? ??? ?return;
?? ?}

? ? ? ? ? ? ? ? var WriteNtagComm="iso15693writeex,"+myctrlword+","+afi+","+myblockaddr+","+myblocksize+","+mypiccserial+","+strls;
? ? ? ? ? ? ? ? WebSocketRun(WriteNtagComm);?? ?
}

window.οnerrοr=function(e)
{
?? ?alert("不好意思,出错了!");
?? ?return true;//屏蔽系统事件
}

function timeoutevent()
{
?? ?ws.close();
?? ?CardIDShowerdev.value = "websockket返回超时";
}


//websockket数据处理
function WebSocketRev(evt)
{
?? ?clearTimeout(mytimer);
?? ?received_msg = evt.data;
?? ?ws.close();
?? ?
?? ?//在这里解析返回数据
? ? ? ? ? ? ? ?//CardIDShowerdev.value = received_msg;

? ? ? ? ? ? ? ? var strlist=received_msg.split(","); ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? if (strlist.length>1){
? ? ? ? ? ? ? ? ? ? ? var dispstr="";
? ? ? ? ? ? ? ? ? ? ? switch(strlist[0]){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case "pcdbeep":
? ??? ? ? ? ? ? ? ? ? case "idr_beep":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr ="函数名称:" +strlist[0]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(strlist[1]=="ReturnCode:000"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +",已执行蜂鸣响声操作!\r\n"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +M1ErrInfo(strlist[1]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CardIDShowerdev.value =dispstr;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case "pcdgetdevicenumber": ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dispstr ="函数名称:" +strlist[0]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist[1]=="ReturnCode:000"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +",已读取设备编号!\r\n" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +M1ErrInfo(strlist[1]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>2){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"设备编号:"+strlist[2]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CardIDShowerdev.value =dispstr;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case "idr_read":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? case "idr_read_once":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr ="函数名称:" +strlist[0]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(strlist[1]=="ReturnCode:000"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +",已读取卡号!\r\n" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +M1ErrInfo(strlist[1]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>2){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"原始16进制卡号:"+strlist[2]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>3){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"转换08H10D卡号:"+strlist[3]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CardIDShowerdev.value =dispstr;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ??
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case "piccreadex":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr ="函数名称:" +strlist[0]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(strlist[1]=="ReturnCode:000"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +",已读取卡内数据!\r\n" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +M1ErrInfo(strlist[1]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>2){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"卡序列号:"+strlist[2]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>3){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"卡内数据:"+strlist[3]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CardIDShower.value =dispstr;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case "piccreadex_ntag":
?? ? ? ? ? ? ? ? ? case "iso15693readex":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr ="函数名称:" +strlist[0]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(strlist[1]=="ReturnCode:000"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +",已读取卡内数据!\r\n" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +NtagErrInfo(strlist[1]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>2){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"卡序列号:"+strlist[2]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>3){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"卡内数据:"+strlist[3]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CardIDShowerNtag.value =dispstr;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case "piccwriteex": ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case "piccchangesinglekeyex": ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case "piccwriteserial":?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dispstr ="函数名称:" +strlist[0]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist[1]=="ReturnCode:000"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +",写卡成功!\r\n" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +M1ErrInfo(strlist[1]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>2){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"卡序列号:"+strlist[2]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CardIDShower.value =dispstr;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break; ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case "piccwriteex_ntag": ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?case "piccinit_ntag":
?? ? ? ? ? ? ? ? ? case "iso15693writeex":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dispstr ="函数名称:" +strlist[0]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist[1]=="ReturnCode:000"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +",写卡成功!\r\n" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"操作结果:"+strlist[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +NtagErrInfo(strlist[1]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(strlist.length>2){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispstr =dispstr +"卡序列号:"+strlist[2]+"\r\n";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CardIDShowerNtag.value =dispstr;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break; ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }?
}


function M1ErrInfo(errcode){
var errstr="";
? ? switch(errcode){
? ? ? ? ? case "ReturnCode:001":
? ? ? ? ? ? ? ? ?errstr=",读扇区数据失败!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:002":
? ? ? ? ? ? ? ? ?errstr=",读1、2块数据失败!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:003":
? ? ? ? ? ? ? ? ?errstr=",读第2块数据失败!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:008":
? ? ? ? ? ? ? ? ?errstr=",未寻到卡,请将卡放到发卡器的感应区!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:009":
? ? ? ? ? ? ? ? ?errstr=",有多张卡在感应区,寻卡过程中防冲突失败,读卡失败!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:010":
? ? ? ? ? ? ? ? ?errstr=",该卡可能已被休眠,无法选中卡片!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:011":
? ? ? ? ? ? ? ? ?errstr=",密码装载失败!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:012":
? ? ? ? ? ? ? ? ?errstr=",卡密码认证失败!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:013":
? ? ? ? ? ? ? ? ?errstr=",读块操作失败,原因是刷卡太快或本块所对应的区还没通过密码认证!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:014":
? ? ? ? ? ? ? ? ?errstr=",写块操作失败,原因是刷卡太快或本块所对应的区还没通过密码认证!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:018":
? ? ? ? ? ? ? ? ?errstr=",写块操作失败!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:021":
? ? ? ? ? ? ? ? ?errstr=",没有动态库!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ?case "ReturnCode:022":
? ? ? ? ? ? ? ? ?errstr=",动态库或驱动程序异常!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:023":
? ? ? ? ? ? ? ? ? errstr=",驱动程序错误或发卡器未连接!";
? ? ? ? ? ? ? ? ? break;
? ? ? ? ?case "ReturnCode:024":
? ? ? ? ? ? ? ? ?errstr=",操作超时,一般是动态库没有反映!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:025":
? ? ? ? ? ? ? ? ?errstr=",发送字数不够!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:026":
? ? ? ? ? ? ? ? ?errstr=",发送的CRC错!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ?case "ReturnCode:027":
? ? ? ? ? ? ? ? ?errstr=",接收的字数不够!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:028":
? ? ? ? ? ? ? ? ? errstr=",接收的CRC错!";
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? case "ReturnCode:029":
? ? ? ? ? ? ? ? ? errstr=",函数输入参数格式错误!";
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? case "ReturnCode:444":
? ? ? ? ? ? ? ? ? errstr=",RFIDWebServer系统文件错误!";
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? default:
? ? ? ? ? ? ? ? ? errstr=",未知的错误!";
? ? }
return errstr;
}

function NtagErrInfo(errcode){
var errstr="";
? ? switch(errcode){
? ? ? ? ? case "ReturnCode:008":
? ? ? ? ? case "ReturnCode:009":
? ? ? ? ? case "ReturnCode:010":
? ? ? ? ? ? ? ? ?errstr=",未寻到卡,请将卡放到发卡器的感应区!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:011":
? ? ? ? ? case "ReturnCode:012":
? ? ? ? ? ? ? ? ?errstr=",卡密码认证失败!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:013":
? ? ? ? ? ? ? ? ?errstr=",读卡失败,可能需要验证密码!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:014":
? ? ? ? ? ? ? ? ?errstr=",写卡失败,可能需要验证密码!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:021":
? ? ? ? ? ? ? ? ?errstr=",没有动态库!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ?case "ReturnCode:022":
? ? ? ? ? ? ? ? ?errstr=",动态库或驱动程序异常!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:023":
? ? ? ? ? ? ? ? ? errstr=",驱动程序错误或发卡器未连接!";
? ? ? ? ? ? ? ? ? break;
? ? ? ? ?case "ReturnCode:024":
? ? ? ? ? ? ? ? ?errstr=",操作超时,一般是动态库没有反映!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:025":
? ? ? ? ? ? ? ? ?errstr=",发送字数不够!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:026":
? ? ? ? ? ? ? ? ?errstr=",发送的CRC错!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ?case "ReturnCode:027":
? ? ? ? ? ? ? ? ?errstr=",接收的字数不够!";
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? case "ReturnCode:028":
? ? ? ? ? ? ? ? ? errstr=",接收的CRC错!";
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? case "ReturnCode:029":
? ? ? ? ? ? ? ? ? errstr=",函数输入参数格式错误!";
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? case "ReturnCode:444":
? ? ? ? ? ? ? ? ? errstr=",RFIDWebServer系统文件错误!";
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? default:
? ? ? ? ? ? ? ? ? errstr=",未知的错误!";
? ? }
return errstr;
}

function WebSocketRun(sendinfo)
{
?? ?iswsrun = false;
?? ?
?? ?try
?? ?{
?? ??? ?
?? ??? ?if ("WebSocket" in window)
?? ??? ?{
?? ??? ??? ?ws = new WebSocket(wsUri);
?? ??? ??? ?
?? ??? ?}
?? ??? ?else if("MozWebSocket" in window)
?? ??? ?{
?? ??? ??? ?ws = new MozWebSocket(wsUri);
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?received_msg = "您的浏览器不支持WebSocket,请选用支持WebSocket的浏览器!";
?? ??? ??? ?return;
?? ??? ?}

?? ??? ?clearTimeout(mytimer);

?? ??? ?ws.onopen = function (evt)?
?? ??? ?{
?? ??? ??? ?ws.send(sendinfo);
?? ??? ??? ?iswsrun = true;
?? ??? ? ?
?? ??? ??? ?mytimer = setTimeout("timeoutevent()", 1000);
?? ??? ?};
?? ??? ?
?? ??? ?ws.onmessage = WebSocketRev;

?? ??? ?ws.onerror = function (e)?
?? ??? ?{
?? ??? ??? ?if(iswsrun != true){
? ? ? ? ? ? ? ? ? ? ?? ??? ??? ?received_msg = "请先在当前电脑下载>安装>运行我们的服务程序......";
?? ??? ??? ??? ?window.open("https://www.icmcu.com/ICID15693-02V2test/RFIDWebServerSetup.exe","top");//打开新窗口
?? ??? ??? ?
?? ??? ??? ??? ?alert("请先下载>安装>运行我们的服务程序,再刷新本页面......");
?? ??? ??? ?}
?? ??? ?};?? ??? ??? ??? ??? ??? ?
?? ?}
?? ?catch (ex)
?? ?{
?? ??? ?if(iswsrun != true){
?? ??? ??? ?received_msg = "请先在当前电脑下载>安装>运行我们的服务程序......";
?? ??? ??? ?window.open("https://www.icmcu.com/ICID15693-02V2test/RFIDWebServerSetup.exe","top");//打开新窗口
?? ??? ?
?? ??? ??? ?alert("请先下载>安装>运行我们的服务程序,再刷新本页面......");
?? ??? ?}
?? ?}?? ?
}


</script>

<style type="text/css">
?? ?input {float: left;margin-right: 10px;margin-top: 10px;margin-bottom: 10px;padding: 5px 10px}
?? ?input[type="text"]:focus {border:2px solid #ff9800}
</style>

</head>
<body>
?? ?<div style="width:100%">
?? ??? ?<div style=" float:left; COLOR: #FFF;BACKGROUND-COLOR: #FF9800;padding: 2px 5px;">
?? ??? ??? ?设备操作
?? ??? ?</div>
?? ??? ?<div style="width:100%; float:left;">
?? ??? ??? ?<div style="border-top: 2px solid #ff9800;padding: 2px 5px;color: #2196f3;">
?? ??? ??? ??? ?<span>提示:</span>
?? ??? ??? ??? ?<br/>
?? ??? ??? ??? ?<textarea rows="4" cols="98" id="CardIDShowerdev" name="S3" style="width:100%;overflow:auto;"></textarea>
?? ??? ??? ??? ?<input type="button" value="IC读写器蜂鸣器响" οnclick="beep()">
?? ??? ??? ??? ?<input type="button" value="IC读写器读取读写器硬件号" οnclick="getdevicenumber()">

?? ??? ??? ??? ?<input type="button" value="清空提示" οnclick="clearsdev()">
?? ??? ??? ??? ?<br/>?? ??? ??? ??? ?
?? ??? ??? ?</div>
?? ??? ?</div>
?? ??? ?<div style="width:100%; float:left;">
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <div style="border-top: 2px solid #ff9800;padding: 2px 5px;color: #2196f3;">
?? ??? ??? ??? ?<input type="button" value="ID读卡器蜂鸣器响" οnclick="IDbeep()">
?? ??? ??? ??? ?<input type="button" value="ID读卡器读取读写器硬件号" οnclick="IDgetdevicenumber()"> ? ? ? ?
?? ??? ??? ??? ?<input type="button" value="连续读取ID卡号" οnclick="ReadID()">
?? ??? ??? ??? ?<input type="button" value="需重新取放卡才能第二次读取ID卡号" οnclick="ReadIDOne()"> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?? ??? ??? ?</div>
?? ??? ?</div>
?? ??? ?<div style=" float:left; COLOR: #FFF;BACKGROUND-COLOR: #FF9800;padding: 2px 5px;">
?? ??? ??? ?M1卡测试
?? ??? ?</div>
?? ??? ?<div style="width:100%; float:left;">
?? ??? ??? ?<div style="border-top: 2px solid #ff9800;padding: 2px 5px;color: #2196f3;">
?? ??? ??? ??? ?<span>提示:</span>
?? ??? ??? ??? ?<br/>
?? ??? ??? ??? ?<textarea rows="4" cols="98" id="CardIDShower" name="S1" style="width: 100%;overflow:auto;"></textarea>
?? ??? ??? ??? ?
?? ??? ??? ??? ?<br/>
?? ??? ??? ??? ?<input type="button" value=" 读 卡 " οnclick="readcard()" />
?? ??? ??? ??? ?<input type="button" value=" 写 卡 " οnclick="writecard()" />
?? ??? ??? ??? ?<input type="button" value="更改卡密码" οnclick="changecardkeyex()" />
?? ??? ??? ??? ?<input type="button" value="写卡UID号为12345678" οnclick="writecarduid()" />
?? ??? ??? ??? ?
?? ??? ??? ??? ?<input type="button" value="清空提示" οnclick="clears1()" />
?? ??? ??? ??? ?
?? ??? ??? ?</div>
?? ??? ?</div>
?? ??? ?
?? ??? ?<div style=" float:left; COLOR: #FFF;BACKGROUND-COLOR: #FF9800;padding: 2px 5px;">
?? ??? ??? ?Ntag2x卡、15693卡测试
?? ??? ?</div>

?? ??? ?<div style="width:100%; float:left;">
?? ??? ??? ?<div style="border-top: 2px solid #ff9800;padding: 2px 5px;color: #2196f3;">

?? ??? ??? ??? ?<span>提示:</span>
?? ??? ??? ??? ?<br>
?? ??? ??? ??? ?<textarea rows="4" cols="98" id="CardIDShowerNtag" name="S2" style="width: 100%;overflow:auto;"></textarea>
?? ??? ??? ??? ?<br/>
?? ??? ??? ??? ?<input type="button" value=" 设置Ntag2x卡密码及保护机制(写错卡作废,千万小心) " οnclick="piccinit_ntag()">
?? ??? ??? ??? ?<input type="button" value="清空提示" οnclick="clearsntag()">
?? ??? ??? ??? ?<br/>
?? ??? ??? ??? ?<div style="width:100%; float:left;">

?? ??? ??? ??? ??? ?<label>
?? ??? ??? ??? ??? ??? ?<input id="check1" type="checkbox" style="float:none;margin-right:0px;padding:0px;vertical-align:middle" />
?? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle">需要认证卡密码才能继续操作,密码:</span>
?? ??? ??? ??? ??? ?</label>?
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<input type="text" id="ntagkey1" ?value ="12345678" style="width:6em;float:none;margin-right:0px;padding:0px;vertical-align:middle"/>
?? ??? ??? ??? ??? ?<br/>
?? ??? ??? ??? ??? ?<select id="select1" style="width:12em;">
?? ??? ??? ??? ??? ??? ?<option>取消密码保护功能</option>
?? ??? ??? ??? ??? ??? ?<option>开启密码保护功能</option>
?? ??? ??? ??? ??? ?</select>
?? ??? ??? ??? ??? ?<br/>
?? ??? ??? ??? ??? ?<label>
?? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle">从</span>
?? ??? ??? ??? ??? ??? ?<input type="text" id="protectpageno" ?value ="144" style="width:2em;float:none;margin-right:0px;padding:0px;vertical-align:middle"/>
?? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle">页开始有密码保护</span>
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?</label>?
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<label>
?? ??? ??? ??? ??? ??? ?<input id="check2" type="checkbox" style="float:none;margin-right:0px;padding:0px;vertical-align:middle" />
?? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle">开启读操作密码保护</span>
?? ??? ??? ??? ??? ?</label>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<br/>

?? ??? ??? ??? ??? ?<span style="vertical-align:middle">新密码:</span>
?? ??? ??? ??? ??? ?<input type="text" id="ntagkey2" ?value ="12345678" style="width:6em;float:none;margin-right:0px;padding:0px;vertical-align:middle"/>
?? ??? ??? ??? ??? ?<span style="vertical-align:middle">允许密码错误次数(0为不限次):</span>
?? ??? ??? ??? ??? ?<input type="text" id="keyerrortimes" ?value ="0" style="width:2em;float:none;margin-right:0px;padding:0px;vertical-align:middle"/>


?? ??? ??? ??? ??? ?<div style="width:100%; float:left;border-top: 3px solid #eaebdc;"></div>
?? ??? ??? ??? ??? ?<br/>
?? ??? ??? ??? ??? ?<label>
?? ??? ??? ??? ??? ??? ?<input id="check3" type="checkbox" style="float:none;margin-right:0px;padding:0px;vertical-align:middle" />
?? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle">需要认证卡密码才能继续操作,密码:</span>
?? ??? ??? ??? ??? ?</label>?
?? ??? ??? ??? ??? ?<input type="text" id="ntagkey3" ?value ="12345678" style="width:6em;float:none;margin-right:0px;padding:0px;vertical-align:middle"/>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<table style="color:#e58800;width:100%;table-layout:fixed;">
?? ??? ??? ??? ??? ??? ?<colgroup>
?? ??? ??? ??? ??? ??? ??? ?<col width="85">
?? ??? ??? ??? ??? ??? ??? ?<col width="50">
?? ??? ??? ??? ??? ??? ??? ?<col width="50">
?? ??? ??? ??? ??? ??? ??? ?<col width="auto">
?? ??? ??? ??? ??? ??? ?</colgroup>
?? ??? ??? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ??? ??? ?<td style="text-align:right">
?? ??? ??? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle">起始页号:</span>
?? ??? ??? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ??? ??? ?<input type="text" id="ntagstartno" ?value ="8" style="width:2em;float:none;margin-right:0px;padding:0px;vertical-align:middle"/>
?? ??? ??? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle">卡号:</span>
?? ??? ??? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ??? ??? ?<input type="text" id="ntagserial" value="" style="max-width: 16em;width:100%;float:none;margin-right:0px;padding:0px;vertical-align:middle;overflow:auto;">
?? ??? ??? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ?</tr>
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ??? ??? ?<td style="text-align:right">
?? ??? ??? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle">页数:</span>
?? ??? ??? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ??? ??? ?<input type="text" id="ntagpagenumber" ?value ="4" style="width:2em;float:none;margin-right:0px;padding:0px;vertical-align:middle;" />
?? ??? ??? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ??? ??? ?<span style="vertical-align:middle;">数据:</span>
?? ??? ??? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ??? ?<td>

?? ??? ??? ??? ??? ??? ??? ??? ?<input type="text" id="ntagdata" value="" style="width:100%;float:none;margin-right:0px;padding:0px;vertical-align:middle;overflow:auto; ">
?? ??? ??? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ?</tr>?? ?
?? ??? ??? ??? ??? ?</table>
?? ??? ??? ??? ??? ?

?? ??? ??? ??? ??? ?<input type="button" value=" 轻松读Ntag2x卡,最多一次12页 " οnclick="readcard_ntag()">
?? ??? ??? ??? ??? ?<input type="button" value=" 轻松写Ntag2x卡,最多一次11页 " οnclick="writecard_ntag()">
?? ??? ??? ??? ??? ?<input type="button" value=" 轻松读15693卡,最多一次12页 " οnclick="readcard_15693()">
?? ??? ??? ??? ??? ?<input type="button" value=" 轻松写15693卡,最多一次12页 " οnclick="writecard_15693()">
?? ??? ??? ??? ??? ?<br/>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<div style="width:100%; float:left;border-top: 3px solid #eaebdc;"></div>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<br/>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?</div>
?? ??? ??? ??? ?

?? ??? ??? ??? ?

?? ??? ??? ?</div>
?? ??? ?</div>

?? ??? ?<div style="width:100%; float:left;">
?? ??? ?
?? ??? ??? ?<table style="color:#e58800">
?? ??? ??? ?
?? ??? ??? ??? ?<colgroup>
?? ??? ??? ??? ??? ?<col width="20">
?? ??? ??? ??? ??? ?<col width="auto">
?? ??? ??? ??? ?</colgroup>
?? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ?<td colspan="2">
?? ??? ??? ??? ??? ?说明:
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?</tr>
?? ??? ??? ??? ?
?? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ?<td valign="top">
?? ??? ??? ??? ??? ?1、
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<td valign="top">
?? ??? ??? ??? ??? ?<p>
?? ??? ??? ??? ??? ??? ?运行本例程前,需先在当前电脑下载安装我们的服务程序,并且运行该服务程序。</p>
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?</tr>
?? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ?<td valign="top">
?? ??? ??? ??? ??? ?2、
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<td valign="top">
?? ??? ??? ??? ??? ?<p>
?? ??? ??? ??? ??? ??? ?<p>兼容360、搜狗、QQ、UC、猎豹、IE、Microsoft Edge、Google Chrome、Firefox火狐等浏览器。</p>
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?</tr>
?? ??? ??? ??? ?
?? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ?<td valign="top">
?? ??? ??? ??? ??? ?2、
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?<td valign="top">
?? ??? ??? ??? ??? ?<p>
?? ??? ??? ??? ??? ??? ?<p>兼容http及https安全浏览协议。</p>
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?</tr>

?? ??? ??? ??? ?
?? ??? ??? ?</table>
?? ??? ??? ?
?? ??? ?</div>
?? ?
?? ?</div>
?? ?


</body>
</html>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:01:20  更:2022-06-25 18:03:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/24 13:21:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码