web開發與IC卡讀卡器


前段時間有個項目在客戶端web下使用IC卡讀卡器,試了很多種方案都覺得麻煩,最后在網上找了個現成的方案,采用了YW-605HA讀卡器,廠家就不說了,免得說做廣告。開發起來也挺簡單。

 他們將IC卡讀卡器接口封裝成ocx文件,分為32位版本和64位版本,自動安裝時自動判斷32位還是64位,這個比較方便,要不然按照版本部署客戶端,那可得累死了。他們的說明如下:

 

 

控件文件名稱:yw60x.ocx

32位控件:x86\yw60x.ocx

64位控件:x64\yw60x.ocx

用戶可以根據B/S客戶端的環境配置相應的ocx文件,也可以采用安裝包yw60xocxSetup.exe自動判斷客戶端的環境並且自動選擇適合的ocx進行安裝並注冊

 

web讀卡器ocx有靜態調用和動態調用兩種方法,這個做web開發的估計都熟悉,直接copy代碼就行了,說明如下:

 

 

讀寫器控件yw60x.ocx類名:YW60X.yw60xCtrl.1

讀寫器控件yw60x.ocx的classid:167E1838-7388-4A24-86DE-985B91F0FFBF

在web中可以采用靜態調用和動態調用的方法來初始化控件

動態調用方法:

var obj = new ActiveXObject("YW60X.yw60xCtrl.1");

靜態調用方法:

<object id="yoworfidreader"

classid="clsid:167E1838-7388-4A24-86DE-985B91F0FFBF">

</object>

 

下面說說在web下我們如何與web讀卡器進行交互,為了輸出相應的參數,他們設計了幾個輸出性質的屬性,如下:

 

屬性名稱

類型

含義

備注

LastResult

Long

最后一個函數執行后的返回值,與函數本身的返回值相同

判斷函數的返回值與判斷LastResult值是一樣的

OutData1

Variant

一個Byte數組,函數執行要輸出的首要內容

Byte數組可以在js和vbs里面自由轉換成數組使用,或者使用控件自帶的轉換函數進行轉換

OutData1Size

Long

OutData1數組的長度,字節數

 

OutData2

Variant

一個Byte數組,函數執行要輸出的首要內容

 

OutData2Size

Long

OutData2數組的長度,字節數

 

OutData3

Variant

一個Byte數組,函數執行要輸出的首要內容

 

OutData3Size

Long

OutData3數組的長度,字節數

所有的數據類型都是varaint類型的,與javascript非常兼容,但是在web中處理16進制數組是個麻煩的事,為此他們還設計了很多的類型轉換函數,如下:

 

  從數組獲取所需格式的卡號字符串


函數原形:BSTR ConvertCardNo(VARIANT vCardNo, LONG ConvertIndex)


  將數組轉換成16進制的字符串


函數原形:BSTR GetHexStr(VARIANT vData);


  將數組轉換成ascii可見字符的字符串


函數原形:BSTR GetAlphaStr(VARIANT vData);


   將16進制字符串轉換成VARIANT類的數組


函數原形:VARIANT GetVariantFromHexStr(BSTR sHexStr);
  將普通符串轉換成VARIANT類的數組


函數原形:VARIANT GetVariantFromAlphaStr(BSTR sAlphaStr);

 

看到這了,大家應該知道了。各種數據轉換都是很方便的,下面看看怎么讀卡,直接給一段代碼吧,也是很簡單的

 

function ReadCard()
  {
  var BlockID;
  var Key;
  RequestCard();
  BlockID = document.getElementById("BlockIDRead").value;
   
  Key =document.ReaderTest.GetVariantFromHexStr(document.getElementById("KeyRead").value);
  i = document.ReaderTest.YW_KeyAuthorization(1,96,BlockID,Key);
  if(i<0)
  {
  document.getElementById("DataRead").value ="密鑰認證錯誤";
  return;
  }
   
  i = document.ReaderTest.YW_ReadaBlock(1,BlockID,16);
  if(i<0)
  {
  document.getElementById("DataRead").value ="讀塊錯誤";
  return;
  }
  document.getElementById("DataRead").value = document.ReaderTest.GetHexStr(document.ReaderTest.OutData1);
  document.ReaderTest.YW_Buzzer(1,5,5,1);
  CloseReader();
  }
   

很簡單的吧

 

  IC卡讀卡器的web開發也可以采用友我科技RFID讀寫器雲服務技術,將適應更多的web瀏覽器,如IE,Chrome,Firefox,safari,Opera等等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM