PB中調用IC卡讀寫器的程序

讀取卡號

Integer i, li_rtn, area, keya1b0
byte ctrlword, serial[4], picckey[6], piccdata0_2[48]

area = 8//操作第8區
keya1b0 = 1//大於表示A密碼
ctrlword = ( BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY )//控制字

//舊密碼
picckey[1] = 255
picckey[2] = 255
picckey[3] = 255
picckey[4] = 255
picckey[5] = 255
picckey[6] = 255

li_rtn = piccreadex ( ctrlword , serial , area , keya1b0 , picckey , piccdata0_2 )
DebugBreak ()
CHOOSE CASE li_rtn
 CASE 0
  MsgBox("操作成功")
 CASE 8
  MsgBox("請將卡放在感應區")
 CASE 21 //沒有動態庫
  MsgBox("找不到接口文件ICUSB.DLL和OUR_MIFARE.dll")
 CASE ELSE
  MsgBox("錯誤代碼" + string(li_rtn))
END CHOOSE


//返回解釋
/*
#define ERR_REQUEST 8//尋卡錯誤
#define ERR_READSERIAL 9//讀序列嗎錯誤
#define ERR_SELECTCARD 10//選卡錯誤
#define ERR_LOADKEY 11//裝載密碼錯誤
#define ERR_AUTHKEY 12//密碼認證錯誤
#define ERR_READ 13//讀卡錯誤
#define ERR_WRITE 14//寫卡錯誤

#define ERR_NONEDLL 21//沒有動態庫
#define ERR_DRIVERORDLL 22//動態庫或驅動程序異常
#define ERR_DRIVERNULL 23//驅動程序錯誤或尚未安裝
#define ERR_TIMEOUT 24//操作超時,一般是動態庫沒有反映
#define ERR_TXSIZE 25//發送字數不夠
#define ERR_TXCRC 26//發送的CRC錯
#define ERR_RXSIZE 27//接收的字數不夠
#define ERR_RXCRC 28//接收的CRC錯
*/

 

寫卡

Integer li_rtn, i, area, keya1b0
byte ctrlword, serial[4], picckey[6], piccdata0_2[48]

area = 8//操作第8區
keya1b0 = 1//大於表示A密碼
ctrlword = ( BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY )//控制字

//舊密碼
picckey[1] = 255
picckey[2] = 255
picckey[3] = 255
picckey[4] = 255
picckey[5] = 255
picckey[6] = 255

for i = 1 to 48
 piccdata0_2[i] = i
next
li_rtn = piccwriteex ( ctrlword , serial , area , keya1b0 , picckey , piccdata0_2 )
CHOOSE CASE li_rtn
 CASE 0
  MsgBox("操作成功")
 CASE 8
  MsgBox("請將卡放在感應區")
 CASE 21 //沒有動態庫
  MsgBox("找不到接口文件ICUSB.DLL和OUR_MIFARE.dll")
 CASE ELSE
  MsgBox("錯誤代碼" + string(li_rtn))
END CHOOSE
//返回解釋
/*
#define ERR_REQUEST 8//尋卡錯誤
#define ERR_READSERIAL 9//讀序列嗎錯誤
#define ERR_SELECTCARD 10//選卡錯誤
#define ERR_LOADKEY 11//裝載密碼錯誤
#define ERR_AUTHKEY 12//密碼認證錯誤
#define ERR_READ 13//讀卡錯誤
#define ERR_WRITE 14//寫卡錯誤

#define ERR_NONEDLL 21//沒有動態庫
#define ERR_DRIVERORDLL 22//動態庫或驅動程序異常
#define ERR_DRIVERNULL 23//驅動程序錯誤或尚未安裝
#define ERR_TIMEOUT 24//操作超時,一般是動態庫沒有反映
#define ERR_TXSIZE 25//發送字數不夠
#define ERR_TXCRC 26//發送的CRC錯
#define ERR_RXSIZE 27//接收的字數不夠
#define ERR_RXCRC 28//接收的CRC錯
*/

 

 

修改單區密碼

 

Integer li_rtn, area, keya1b0
byte ctrlword, serial[4], piccoldkey[6], piccnewkey[6]

area = 8//操作第8區
keya1b0 = 1//大於表示A密碼
ctrlword = ( BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY )//控制字

//舊密碼
piccoldkey[1] = 255
piccoldkey[2] = 255
piccoldkey[3] = 255
piccoldkey[4] = 255
piccoldkey[5] = 255
piccoldkey[6] = 255

//新密碼
piccnewkey[1] = 255
piccnewkey[2] = 255
piccnewkey[3] = 255
piccnewkey[4] = 255
piccnewkey[5] = 255
piccnewkey[6] = 255


li_rtn = piccchangesinglekey ( ctrlword , serial , area , keya1b0 , piccoldkey , piccnewkey )
DebugBreak ()
CHOOSE CASE li_rtn
 CASE 0
  MsgBox("操作成功")
 CASE 8
  MsgBox("請將卡放在感應區")
 CASE 21 //沒有動態庫
  MsgBox("找不到接口文件ICUSB.DLL和OUR_MIFARE.dll")
 CASE ELSE
  MsgBox("異常")
END CHOOSE

//返回解釋
/*
#define ERR_REQUEST 8//尋卡錯誤
#define ERR_READSERIAL 9//讀序列嗎錯誤
#define ERR_SELECTCARD 10//選卡錯誤
#define ERR_LOADKEY 11//裝載密碼錯誤
#define ERR_AUTHKEY 12//密碼認證錯誤
#define ERR_READ 13//讀卡錯誤
#define ERR_WRITE 14//寫卡錯誤

#define ERR_NONEDLL 21//沒有動態庫
#define ERR_DRIVERORDLL 22//動態庫或驅動程序異常
#define ERR_DRIVERNULL 23//驅動程序錯誤或尚未安裝
#define ERR_TIMEOUT 24//操作超時,一般是動態庫沒有反映
#define ERR_TXSIZE 25//發送字數不夠
#define ERR_TXCRC 26//發送的CRC錯
#define ERR_RXSIZE 27//接收的字數不夠
#define ERR_RXCRC 28//接收的CRC錯
*/

 

 

讀卡器發出聲音

pcdbeep(50)

 

讀取設備全球唯一編號,作爲加密狗用

String ls_tmp

Integer li_rtn
byte devicenumber[4]

li_rtn = pcdgetdevicenumber ( devicenumber )
if li_rtn = 0 then
 /*action*/
 ls_tmp = String ((devicenumber[1]) )+"-"+ String ((devicenumber[2]) ) +"-"+ String ((devicenumber[3]) ) +"-"+ String ((devicenumber[4]) )
 MsgBox ( ls_tmp )
 
end if
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章