M
mervyn807
Unregistered / Unconfirmed
GUEST, unregistred user!
本人用HD9632的读写卡气,操作M1(IC类型)的卡,程序已经打开了串口,能够识别读写卡器,能够识别到有没有卡在上面,但读不出卡号,这个函数不能正常执行,程序没办法往下进行,也写不了卡也读不了卡,一天了,请大家帮忙,我会尽量多送分的
急需!
我可以提供HD9632的接口函数给大家,希望帮写个简单的例子
能读出卡的信息和写卡就行
3.1库函数说明
3.1.1获取动态库版本号
原型:int WINAPI lib_ver(unsigned int *nVer)
参数:*nVer:2字节动态库版本号
返回:成功返回0
3.1.2 DES算法加密函数
原型:int (WINAPI* des_encrypt)(unsigned char *szOut, unsigned char *szIn , unsigned int
inlen, unsigned char *key, unsigned int keylen);
参数:szOut: 输出的DES值,长度等于明文长度
szIn: 明文
inlen: 明文长度,8字节的整数倍
key: 密钥
keylen: 密钥长度,如果大于8字节,是3des,如果小于等于8字节单des.不足补零
返回:成功返回0
3.1.3 DES算法解密算法函数
原型:int (WINAPI* des_decrypt)(unsigned char *szOut, unsigned char *szIn , unsigned int
inlen, unsigned char *key, unsigned int keylen);
参数:szOut: 输出的DES值,长度等于密文长度
szIn: 密文
inlen: 密文长度,8字节的整数倍
key: 密钥
keylen: 密钥长度,如果大于8字节,是3des,如果小于等于8字节单des.不足补零
返回:成功返回0
3.1.4初始化串口
原型:int WINAPI rf_init_com (int port,long baud)
参数:port:串口号,取值为1~4
baud:为通讯波特率4800~115200
返回:成功返回0
3.1.5指定设备标识
原型:int WINAPI rf_init_device_number (unsigned short icdev)
参数:icdev:通讯设备标识符,0-65536
返回:成功返回0
3.1.6读取设备标识
原型:int WINAPI rf_get_device_number (unsigned short *Icdev)
参数:icdev:存放返回通讯设备标识符
返回:成功返回0
3.1.7读取读写卡器硬件版本号
原型:int WINAPI rf_get_model (unsigned short icdev, unsigned short *Version)
参数:icdev: 通讯设备标识符,0-65536
Version: 存放返回版本信息
返回:成功返回0
3.1.8读取读写卡器产品序列号
原型:int WINAPI rf_get_snr (unsigned short icdev, unsigned char *Snr)
参数:icdev: 通讯设备标识符,0-65536
Snr: 存放返回读写卡器产品序列号
返回:成功返回0
3.1.9蜂鸣
原型:int WINAPI rf_beep (unsigned short icdev, unsigned char msec)
参数:icdev: 通讯设备标识符,0-65536
msec: 蜂鸣时限,单位是10 毫秒
返回:成功返回0
3.1.10设置读写卡器SAM卡通讯波特率
原型:int WINAPI rf_init_sam (unsigned short icdev, unsigned char bound)
参数:icdev: 通讯设备标识符,0-65536
bound: sam 卡波特率,取值为9600、38400
返回:成功返回0
3.1.11复位SAM卡
原型:int WINAPI rf_sam_rst(unsigned short icdev, unsigned char *pData, unsigned char *pMsgLg)
参数:icdev: 通讯设备标识符,0-65536
pDate: 返回的复位信息内容
pMsgLg: 返回复位信息的长度
返回:成功返回0
3.1.12向SAM发送COS命令
原型:int WINAPI rf_sam_cos(unsigned short icdev, unsigned char *command, unsigned char
cmdLen ,unsigned char *pData, unsigned char* Length)
参数:icdev: 通讯设备标识符,0-65536
command: COS命令
cmdLen: COS命令长度
pDate: 卡片返回的数据,含SW1、SW2
pMsgLg: 返回数据长度
返回:成功返回0
3.1.13设置读写卡器非接触工作方式(注:3)
原型:int WINAPI rf_init_type (unsigned short icdev, unsigned char type)
参数:icdev:通讯设备标识符,0-65536
type: 读写卡器工作方式
返回:成功返回0
说明:type='A':设置为TYPE_A方式
type='B':设置为TYPE_B方式
type='r': 设置为AT88RF020卡方式
3.1.14设置读写卡器天线状态
原型:int WINAPI rf_antenna_sta (unsigned short icdev, unsigned char model)
参数:icdev:通讯设备标识符,0-65536
model:天线状态
返回:成功返回0
说明:model=0:关闭天线
model=1:开启天线
3.1.15寻TYPE_A卡(注:1)
原型:int WINAPI rf_request (unsigned short icdev, unsigned char model, unsigned short *TagType)
参数:icdev:通讯设备标识符,0-65536
model: 寻卡模式
TagType:返回卡类型值
返回:成功返回0
说明:mode=0x26:寻未进入休眠状态的卡
mode=0x52:寻所有状态的卡
3.1.16 TYPE_A卡防冲撞(注:1)
原型:int WINAPI rf_anticoll(unsigned short icdev, unsigned char bcnt, unsigned char *pSnr,
unsigned char* pRLength)
参数:icdev:通讯设备标识符,0-65536
bcnt: 卡序列号字节数,取值4、7、10,Mifare 卡取值4
pSnr: 返回的卡序列号
pRLength:卡序列号长度
返回:成功返回0
3.1.17锁定一张TYPE_A卡(注:1)
原型:int WINAPI rf_select (unsigned short icdev, unsigned char *pSnr, unsigned char srcLen,
unsigned char *Size)
参数:icdev: 通讯设备标识符,0-65536
pSnr: 卡序列号
srcLen: 卡序列号长度,MifareOne卡该值等于4
Size: 返回卡容量
返回:成功返回0
3.1.18命令已激活的TYPE_A卡进入HALT状态(注:1)
原型:int WINAPI rf_halt(unsigned short icdev)
参数:icdev: 通讯设备标识符,0-65536
返回:成功返回0
3.1.19验证MifareOne卡密钥(注:1)
原型:int WINAPI rf_M1_authen
tication2(unsigned short icdev, unsigned char model, unsigned char
block, unsigned char *key)
参数:icdev: 通讯设备标识符,0-65536
model: 密码验证模式
block: 要验证密码的绝对块号
key: 密钥内容,6 字节
返回:成功返回0
说明:model=0x60:验证A密钥
model=0x61:验证B密钥
3.1.20读取MifareOne卡一块数据(注:1)
原型:int WINAPI rf_M1_read (unsigned short icdev, unsigned char block, unsigned char
*pData,unsigned char *pLen)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
pData: 读出数据
pLen: 读出数据的长度
返回:成功返回0
3.1.21写入MifareOne卡一块数据(注:1)
原型:int WINAPI rf_M1_write (unsigned short icdev, unsigned char block, unsigned char *data)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
data: 写入的数据,16 字节
返回:成功返回0
3.1.22将Mifare One卡某一扇区初始化为钱包(注:1)
原型:int WINAPI rf_M1_initval (unsigned short icdev, unsigned char block, long value)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
value: 初始值,16进制,低字节在前
返回:成功返回0
3.1.23读取Mifare One卡钱包值(注:1)
原型:int WINAPI rf_M1_initval (unsigned short icdev, unsigned char block, long value)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
pValue: 返回的值,16进制,低字节在前
返回:成功返回0
3.1.24 Mifare One卡扣款(注:1)
原型:int WINAPI rf_M1_decrement (unsigned short icdev, unsigned char block, long value)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
value: 要扣的值,16进制,低字节在前
返回:成功返回0
3.1.25 Mifare One卡充值(注:1)
原型:int WINAPI rf_M1_decrement (unsigned short icdev, unsigned char block, long value)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
value: 要增加的值,16进制,低字节在前
返回:成功返回0
3.1.26 Mifare One卡数据回传(注:1)
原型:int WINAPI rf_M1_restore (unsigned short icdev, unsigned char block)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
返回:成功返回0
说明:用此函数将指定的块内容传入卡的buffer,然后可用rf_M1transfer()函数将buffer 中数据
再传送到另一块中去
3.1.27 Mifare One卡数据传送(注:1)
原型:int WINAPI rf_M1_transfer (unsigned short icdev, unsigned char block)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
返回:成功返回0
说明:该函数仅在increment、decrement和restore 命令之后调用
3.1.28寻感应区内符合ISO14443 TYPE_A标准的CPU卡并复位(注:1)
原型:int WINAPI rf_typea_rst (unsigned short icdev, unsigned char model, unsigned char
*pData, unsigned char *pMsgLg)
参数:icdev: 通讯设备标识符,0-65536
model: 寻卡方式
pDate: 返回的CSN + 复位信息内容
pMsgLg: 返回数据长度
返回:成功返回0
说明:mode=0x26:寻未进入休眠状态的卡
mode=0x52:寻所有状态的卡
3.1.29寻感应区内符合ISO14443 TYPE_B标准的卡并激活(注:2)
原型:int WINAPI rf_atqb (unsigned short icdev, unsigned char model, unsigned char
*pData,unsigned char *pMsgLg)
参数:icdev: 通讯设备标识符,0-65536
model:: 寻卡方式
pDate: 返回的复位信息内容
pMsgLg: 返回复位信息长度
返回:成功返回0
说明:mode= 0:REQB
mode=1:WUPB
3.1.30向符合ISO14443标准的CPU卡发送COS命令
原型:int WINAPI rf_cos_command (unsigned short icdev, unsigned char *command, unsigned char
cmdLen, unsigned char *pData, unsigned char* pMsgLg)
参数:icdev: 通讯设备标识符,0-65536
command:COS 命令
cmdLen: COS命令长度
pDate: 卡片返回的数据,含SW1、SW2
pMsgLg: 返回数据长度
返回:成功返回0
3.1.31命令已激活的TYPE_B卡进入HALT状态(注:2)
原型:int WINAPI rf_hltb (unsigned short icdev, unsigned long PUPI)
参数:icdev: 通讯设备标识符,0-65536
PUPI: 卡片唯一标识符
返回:成功返回0
3.1.32验证AT88RF020卡密码(注:2)
原型:int WINAPI rf_at020_check (unsigned short icdev, unsigned char *key)
参数:icdev: 通讯设备标识符,0-65536
key: 密码,8 字节
返回:成功返回0
3.1.33读取AT88RF020卡一页数据(注:2)
原型:int WINAPI rf_at020_read (unsigned short icdev, unsigned char page, unsigned char
*pData, unsigned char* pMsgLen)
参数:icdev: 通讯设备标识符,0-65536
page: 页地址,(0~31)
pDate: 返回的数据
pMsgLen:返回数据的长度
返回:成功返回0
3.1.34写入AT88RF020卡一页数据(注:2)
原型:int WINAPI rf_at020_write(unsigned short icdev, unsigned char page, unsigned char *data)
参数:icdev: 通讯设备标识符,0-65536
page: 页地址,(0~31)
date: 要写入的数据,8 字节
返回:成功返回0
3.1.35 AT88RF020卡LOCK(注:2)
原型:int WINAPI rf_at020_lock(unsigned short icdev, unsigned char *data)
参数:icdev: 通讯设备标识符,0-65536
date: 数据,4字节
返回:成功返回0
3.1.36 AT88RF020卡计数(注:2)
原型:int WINAPI rf_at020_count(unsigned short icdev, unsigned char *data)
参数:icdev: 通讯设备标识符,0-65536
date: 数据,6字节
返回:成功返回0
3.1.37命令AT88RF020卡进入HALT状态(注:2)
原型:int WINAPI rf_at020_deselect(unsigned short icdev)
参数:icdev: 通讯设备标识符,0-65536
返回:成功返回0
3.1.38设置指示灯颜色
原型:int WINAPI rf_light(unsigned short icdev, unsigned char color)
参数:icdev: 通讯设备标识符,0-65536
color: 0 = 熄灭
1 = 红色
2 = 绿色
3 = 黄色
返回:成功返回0
3.1.39关闭COM口
原型:int WINAPI rf_ClosePort ( )
返回:成功返回0
注:1。TYPE_B专用读写卡器无此函数
2.Mifare专用读写卡器无此函数
3.仅TYPE_A&TYPE_B兼容读写卡器有此函数
3.2设备标识符
MFHD9632读写卡器支持组网功能,MFHD9632只响应设备标识符与本身相符或设备标识符等于0x0000的指令。
procedure TForm_People_Card.Button_CardClick(Sender: TObject);
Var
I_Com:Integer;//端口号
I_Baud:Integer;//波特率
jChar;
buf1Char;
// buf1:Array[1..10]of Byte;//存贮卡序列号
Card_SizeChar;
//返回卡容量
Card_LenChar;
status:Integer;
len:Byte;
begin
I_Com:=StrToInt(ComboBox_Com.Text);
I_Baud:=StrToInt(ComboBox_baud.Text);
begin
iRe:=rf_init_com(I_Com,I_Baud);
//Application.ProcessMessages;
if iRe <> 0 then
begin
ShowMessage('打开端口错误!') ;
end ;
status:=rf_init_type(0,'A');
iRe:=rf_request(0,$52,j);
if iRe <> 0 then
begin
ShowMessage('寻卡失败!');
end;
iRe:=rf_anticoll(0,4,buf1,Card_Len);
if iRe <> 0 then
begin
ShowMessage('卡冲突');
end;
{GetMem(pSNR,16);
iRe:=rf_get_snr(0,pSNR);
//Memo1.Lines.Add( '序列号: '+String(pSNR));
//showmessage('序列号:'+String(pSNR));
FreeMem(pSNR,16);
}
status:=rf_select(0,buf1,len,Card_Size);
if status = 0 then
begin
//Memo1.Lines.Add('选卡失败!');
showmessage('选卡成功!')
end
else
showmessage('选卡失败!');
end;
到这里选卡就会失败,不能选卡成功
急需!
我可以提供HD9632的接口函数给大家,希望帮写个简单的例子
能读出卡的信息和写卡就行
3.1库函数说明
3.1.1获取动态库版本号
原型:int WINAPI lib_ver(unsigned int *nVer)
参数:*nVer:2字节动态库版本号
返回:成功返回0
3.1.2 DES算法加密函数
原型:int (WINAPI* des_encrypt)(unsigned char *szOut, unsigned char *szIn , unsigned int
inlen, unsigned char *key, unsigned int keylen);
参数:szOut: 输出的DES值,长度等于明文长度
szIn: 明文
inlen: 明文长度,8字节的整数倍
key: 密钥
keylen: 密钥长度,如果大于8字节,是3des,如果小于等于8字节单des.不足补零
返回:成功返回0
3.1.3 DES算法解密算法函数
原型:int (WINAPI* des_decrypt)(unsigned char *szOut, unsigned char *szIn , unsigned int
inlen, unsigned char *key, unsigned int keylen);
参数:szOut: 输出的DES值,长度等于密文长度
szIn: 密文
inlen: 密文长度,8字节的整数倍
key: 密钥
keylen: 密钥长度,如果大于8字节,是3des,如果小于等于8字节单des.不足补零
返回:成功返回0
3.1.4初始化串口
原型:int WINAPI rf_init_com (int port,long baud)
参数:port:串口号,取值为1~4
baud:为通讯波特率4800~115200
返回:成功返回0
3.1.5指定设备标识
原型:int WINAPI rf_init_device_number (unsigned short icdev)
参数:icdev:通讯设备标识符,0-65536
返回:成功返回0
3.1.6读取设备标识
原型:int WINAPI rf_get_device_number (unsigned short *Icdev)
参数:icdev:存放返回通讯设备标识符
返回:成功返回0
3.1.7读取读写卡器硬件版本号
原型:int WINAPI rf_get_model (unsigned short icdev, unsigned short *Version)
参数:icdev: 通讯设备标识符,0-65536
Version: 存放返回版本信息
返回:成功返回0
3.1.8读取读写卡器产品序列号
原型:int WINAPI rf_get_snr (unsigned short icdev, unsigned char *Snr)
参数:icdev: 通讯设备标识符,0-65536
Snr: 存放返回读写卡器产品序列号
返回:成功返回0
3.1.9蜂鸣
原型:int WINAPI rf_beep (unsigned short icdev, unsigned char msec)
参数:icdev: 通讯设备标识符,0-65536
msec: 蜂鸣时限,单位是10 毫秒
返回:成功返回0
3.1.10设置读写卡器SAM卡通讯波特率
原型:int WINAPI rf_init_sam (unsigned short icdev, unsigned char bound)
参数:icdev: 通讯设备标识符,0-65536
bound: sam 卡波特率,取值为9600、38400
返回:成功返回0
3.1.11复位SAM卡
原型:int WINAPI rf_sam_rst(unsigned short icdev, unsigned char *pData, unsigned char *pMsgLg)
参数:icdev: 通讯设备标识符,0-65536
pDate: 返回的复位信息内容
pMsgLg: 返回复位信息的长度
返回:成功返回0
3.1.12向SAM发送COS命令
原型:int WINAPI rf_sam_cos(unsigned short icdev, unsigned char *command, unsigned char
cmdLen ,unsigned char *pData, unsigned char* Length)
参数:icdev: 通讯设备标识符,0-65536
command: COS命令
cmdLen: COS命令长度
pDate: 卡片返回的数据,含SW1、SW2
pMsgLg: 返回数据长度
返回:成功返回0
3.1.13设置读写卡器非接触工作方式(注:3)
原型:int WINAPI rf_init_type (unsigned short icdev, unsigned char type)
参数:icdev:通讯设备标识符,0-65536
type: 读写卡器工作方式
返回:成功返回0
说明:type='A':设置为TYPE_A方式
type='B':设置为TYPE_B方式
type='r': 设置为AT88RF020卡方式
3.1.14设置读写卡器天线状态
原型:int WINAPI rf_antenna_sta (unsigned short icdev, unsigned char model)
参数:icdev:通讯设备标识符,0-65536
model:天线状态
返回:成功返回0
说明:model=0:关闭天线
model=1:开启天线
3.1.15寻TYPE_A卡(注:1)
原型:int WINAPI rf_request (unsigned short icdev, unsigned char model, unsigned short *TagType)
参数:icdev:通讯设备标识符,0-65536
model: 寻卡模式
TagType:返回卡类型值
返回:成功返回0
说明:mode=0x26:寻未进入休眠状态的卡
mode=0x52:寻所有状态的卡
3.1.16 TYPE_A卡防冲撞(注:1)
原型:int WINAPI rf_anticoll(unsigned short icdev, unsigned char bcnt, unsigned char *pSnr,
unsigned char* pRLength)
参数:icdev:通讯设备标识符,0-65536
bcnt: 卡序列号字节数,取值4、7、10,Mifare 卡取值4
pSnr: 返回的卡序列号
pRLength:卡序列号长度
返回:成功返回0
3.1.17锁定一张TYPE_A卡(注:1)
原型:int WINAPI rf_select (unsigned short icdev, unsigned char *pSnr, unsigned char srcLen,
unsigned char *Size)
参数:icdev: 通讯设备标识符,0-65536
pSnr: 卡序列号
srcLen: 卡序列号长度,MifareOne卡该值等于4
Size: 返回卡容量
返回:成功返回0
3.1.18命令已激活的TYPE_A卡进入HALT状态(注:1)
原型:int WINAPI rf_halt(unsigned short icdev)
参数:icdev: 通讯设备标识符,0-65536
返回:成功返回0
3.1.19验证MifareOne卡密钥(注:1)
原型:int WINAPI rf_M1_authen
tication2(unsigned short icdev, unsigned char model, unsigned char
block, unsigned char *key)
参数:icdev: 通讯设备标识符,0-65536
model: 密码验证模式
block: 要验证密码的绝对块号
key: 密钥内容,6 字节
返回:成功返回0
说明:model=0x60:验证A密钥
model=0x61:验证B密钥
3.1.20读取MifareOne卡一块数据(注:1)
原型:int WINAPI rf_M1_read (unsigned short icdev, unsigned char block, unsigned char
*pData,unsigned char *pLen)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
pData: 读出数据
pLen: 读出数据的长度
返回:成功返回0
3.1.21写入MifareOne卡一块数据(注:1)
原型:int WINAPI rf_M1_write (unsigned short icdev, unsigned char block, unsigned char *data)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
data: 写入的数据,16 字节
返回:成功返回0
3.1.22将Mifare One卡某一扇区初始化为钱包(注:1)
原型:int WINAPI rf_M1_initval (unsigned short icdev, unsigned char block, long value)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
value: 初始值,16进制,低字节在前
返回:成功返回0
3.1.23读取Mifare One卡钱包值(注:1)
原型:int WINAPI rf_M1_initval (unsigned short icdev, unsigned char block, long value)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
pValue: 返回的值,16进制,低字节在前
返回:成功返回0
3.1.24 Mifare One卡扣款(注:1)
原型:int WINAPI rf_M1_decrement (unsigned short icdev, unsigned char block, long value)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
value: 要扣的值,16进制,低字节在前
返回:成功返回0
3.1.25 Mifare One卡充值(注:1)
原型:int WINAPI rf_M1_decrement (unsigned short icdev, unsigned char block, long value)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
value: 要增加的值,16进制,低字节在前
返回:成功返回0
3.1.26 Mifare One卡数据回传(注:1)
原型:int WINAPI rf_M1_restore (unsigned short icdev, unsigned char block)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
返回:成功返回0
说明:用此函数将指定的块内容传入卡的buffer,然后可用rf_M1transfer()函数将buffer 中数据
再传送到另一块中去
3.1.27 Mifare One卡数据传送(注:1)
原型:int WINAPI rf_M1_transfer (unsigned short icdev, unsigned char block)
参数:icdev: 通讯设备标识符,0-65536
block: M1卡绝对块号
返回:成功返回0
说明:该函数仅在increment、decrement和restore 命令之后调用
3.1.28寻感应区内符合ISO14443 TYPE_A标准的CPU卡并复位(注:1)
原型:int WINAPI rf_typea_rst (unsigned short icdev, unsigned char model, unsigned char
*pData, unsigned char *pMsgLg)
参数:icdev: 通讯设备标识符,0-65536
model: 寻卡方式
pDate: 返回的CSN + 复位信息内容
pMsgLg: 返回数据长度
返回:成功返回0
说明:mode=0x26:寻未进入休眠状态的卡
mode=0x52:寻所有状态的卡
3.1.29寻感应区内符合ISO14443 TYPE_B标准的卡并激活(注:2)
原型:int WINAPI rf_atqb (unsigned short icdev, unsigned char model, unsigned char
*pData,unsigned char *pMsgLg)
参数:icdev: 通讯设备标识符,0-65536
model:: 寻卡方式
pDate: 返回的复位信息内容
pMsgLg: 返回复位信息长度
返回:成功返回0
说明:mode= 0:REQB
mode=1:WUPB
3.1.30向符合ISO14443标准的CPU卡发送COS命令
原型:int WINAPI rf_cos_command (unsigned short icdev, unsigned char *command, unsigned char
cmdLen, unsigned char *pData, unsigned char* pMsgLg)
参数:icdev: 通讯设备标识符,0-65536
command:COS 命令
cmdLen: COS命令长度
pDate: 卡片返回的数据,含SW1、SW2
pMsgLg: 返回数据长度
返回:成功返回0
3.1.31命令已激活的TYPE_B卡进入HALT状态(注:2)
原型:int WINAPI rf_hltb (unsigned short icdev, unsigned long PUPI)
参数:icdev: 通讯设备标识符,0-65536
PUPI: 卡片唯一标识符
返回:成功返回0
3.1.32验证AT88RF020卡密码(注:2)
原型:int WINAPI rf_at020_check (unsigned short icdev, unsigned char *key)
参数:icdev: 通讯设备标识符,0-65536
key: 密码,8 字节
返回:成功返回0
3.1.33读取AT88RF020卡一页数据(注:2)
原型:int WINAPI rf_at020_read (unsigned short icdev, unsigned char page, unsigned char
*pData, unsigned char* pMsgLen)
参数:icdev: 通讯设备标识符,0-65536
page: 页地址,(0~31)
pDate: 返回的数据
pMsgLen:返回数据的长度
返回:成功返回0
3.1.34写入AT88RF020卡一页数据(注:2)
原型:int WINAPI rf_at020_write(unsigned short icdev, unsigned char page, unsigned char *data)
参数:icdev: 通讯设备标识符,0-65536
page: 页地址,(0~31)
date: 要写入的数据,8 字节
返回:成功返回0
3.1.35 AT88RF020卡LOCK(注:2)
原型:int WINAPI rf_at020_lock(unsigned short icdev, unsigned char *data)
参数:icdev: 通讯设备标识符,0-65536
date: 数据,4字节
返回:成功返回0
3.1.36 AT88RF020卡计数(注:2)
原型:int WINAPI rf_at020_count(unsigned short icdev, unsigned char *data)
参数:icdev: 通讯设备标识符,0-65536
date: 数据,6字节
返回:成功返回0
3.1.37命令AT88RF020卡进入HALT状态(注:2)
原型:int WINAPI rf_at020_deselect(unsigned short icdev)
参数:icdev: 通讯设备标识符,0-65536
返回:成功返回0
3.1.38设置指示灯颜色
原型:int WINAPI rf_light(unsigned short icdev, unsigned char color)
参数:icdev: 通讯设备标识符,0-65536
color: 0 = 熄灭
1 = 红色
2 = 绿色
3 = 黄色
返回:成功返回0
3.1.39关闭COM口
原型:int WINAPI rf_ClosePort ( )
返回:成功返回0
注:1。TYPE_B专用读写卡器无此函数
2.Mifare专用读写卡器无此函数
3.仅TYPE_A&TYPE_B兼容读写卡器有此函数
3.2设备标识符
MFHD9632读写卡器支持组网功能,MFHD9632只响应设备标识符与本身相符或设备标识符等于0x0000的指令。
procedure TForm_People_Card.Button_CardClick(Sender: TObject);
Var
I_Com:Integer;//端口号
I_Baud:Integer;//波特率
jChar;
buf1Char;
// buf1:Array[1..10]of Byte;//存贮卡序列号
Card_SizeChar;
//返回卡容量
Card_LenChar;
status:Integer;
len:Byte;
begin
I_Com:=StrToInt(ComboBox_Com.Text);
I_Baud:=StrToInt(ComboBox_baud.Text);
begin
iRe:=rf_init_com(I_Com,I_Baud);
//Application.ProcessMessages;
if iRe <> 0 then
begin
ShowMessage('打开端口错误!') ;
end ;
status:=rf_init_type(0,'A');
iRe:=rf_request(0,$52,j);
if iRe <> 0 then
begin
ShowMessage('寻卡失败!');
end;
iRe:=rf_anticoll(0,4,buf1,Card_Len);
if iRe <> 0 then
begin
ShowMessage('卡冲突');
end;
{GetMem(pSNR,16);
iRe:=rf_get_snr(0,pSNR);
//Memo1.Lines.Add( '序列号: '+String(pSNR));
//showmessage('序列号:'+String(pSNR));
FreeMem(pSNR,16);
}
status:=rf_select(0,buf1,len,Card_Size);
if status = 0 then
begin
//Memo1.Lines.Add('选卡失败!');
showmessage('选卡成功!')
end
else
showmessage('选卡失败!');
end;
到这里选卡就会失败,不能选卡成功