原来做的一读卡程序时把卡放到读卡器上,然后按键读卡,将卡的值写到TextBox里。
JS代码function CloseCard()
    {
        Reader.PortClose();
        return true;
    }
    var xmlhttp;
    function ValidationXML()
    {
        Reader.PortOpen();
        Reader.ReadDefault(1); 
        var sn = Reader.GetCardID();
//                window.alert (sn);
        if(sn=="")
        {
           alert("没有读到卡,请放卡!")
           CloseCard();
        }
        else
        {
            CloseCard();
            if(window.ActiveXObject)
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            else if(window.XMLHttpRequest)
                xmlhttp = new XMLHttpRequest();
            
            xmlhttp.open("Post","GetKahao.aspx?sn="+sn,true);
            xmlhttp.onreadystatechange = onMessBack;
            xmlhttp.send(null);
            return false;
        }
    }
    function onMessBack()
    {
        if(xmlhttp.readystate == 4 && xmlhttp.status == 200)
        {
            document.getElementById("txtCardNum").value=xmlhttp.responseText;
        }
    }
前台就用BUTTON调用这个方法就行了
代码:<input id="Btn" onclick="javascript:return ValidationXML();" type="button" value="读卡(R)"
                            class="btn" accesskey="r" />但是现在我想做成用户把卡放到读卡器上,就自动读取卡的值 写到TextBox里。
是不是在载入时每隔多久就读卡1次像这样:
gftimer=setTimeout('gofirst()',5000);window.onload = function gofirst()
{
clearTimeout(gftimer);
         ValidationXML();
}
这样对么?还有什么别的办法

解决方案 »

  1.   

    我是通过卡号判断是否相同来确认的。
    function StartRead() 
    {
        debugger;
        var vWxcj;
        var vPzhm;
        var vPzys;
        var vGcPzhm;
        var vSjy;
        var statesId = "";
        FindCard();
        if (devinfo != "") 
        {
            snCard = devinfo;
            var s1Card = devinfo;
            snCard = document.all["HdRfNo"].value
            if (snCard == "") 
            {
                //snCard是旧值
                document.all["HdRfNo"].value = devinfo;
            }
            ///主车写第9块。
            devinfo = MWRFATL.MF_Read(9);
            vPzhm = devinfo;
            sPzhm = MWRFATL.MF_a_Hex(vPzhm, 16);
            ///牌照颜色写第10块
            devinfo = MWRFATL.MF_Read(10);
            vPzys = devinfo;
            sPzys = MWRFATL.MF_a_Hex(vPzys, 16);
            //挂车写第6块。
            devinfo = MWRFATL.MF_Read(6);
            vGcPzhm = devinfo;
            sGcPzhm = MWRFATL.MF_a_Hex(vGcPzhm, 16);
            //送检员写第8块。
            devinfo = MWRFATL.MF_Read(8);
            vSjy = devinfo;
            sSjy = MWRFATL.MF_a_Hex(vSjy, 16);
            
           if (sPzhm != "" && sPzys != "") 
             {
              dosometing           
     MWRFATL.RF_Beep(10);
                
                   }
                         ////卡号相同的话就寻卡。
            if (s1Card == snCard)
                      {
                 
                FindCard();
                      }
                ///不同的话赋值给当前卡号。
              else 
                       {
                document.all["HdRfNo"].value = s1Card;
                              }
        }
        else 
        {
             
           // document.all["HdRfNo"].value = "";
          document.all["txtRfNo"].value = "";
      // CloseReader();
    //        StartRead();
      }