讀取卡號
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