IT人
相关图书

小弟初次做读写IC卡的程序,现在有几个基础的问题想请教一下。

所属分类:硬件/嵌入开发 单片机/工控
-----------------------------------------

小弟初次做读写IC卡的程序,现在有几个基础的问题想请教一下。

1,在向某个块写入数据的时候,写之前要做很多的验证,如进行防碰撞选择,选择卡,等的操作
然后再向指定块写入数据。这时是不是可以接着写其它的块呢?还是得重新验证再进行写其它块的操作。

2,在连接读卡器的时候,是不是每次都得进行连接呢,还是一次连接后,就可以进行操作了,
直到不需要的时候再进行断开操作?

3,IC卡的一个块只用16字节,如果一个数据超出16个字节的话该怎么做呢,是分开写到两个块中?还是用什么办法?


if(RC500_232_request (0,type)!=0) //进行请求操作
{
if(RC500_232_request (0,type)!=0) //如果第一次请求失败,再重复请求一次
{
MessageBox("请求失败","错误",MB_OK);
}

}
if(RC500_232_anticoll(0,snr)!=0)//进行防碰撞选择,成功则返回卡号
MessageBox("防碰撞失败","错误",MB_OK);
if(RC500_232_select(snr,size)!=0)//选择卡
MessageBox("选择卡失败","错误",MB_OK);
if(RC500_232_authkey(0,5,szpwd)!=0)//验证第5扇区的密钥A
MessageBox("验证失败","错误",MB_OK);
if(RC500_232_write(20,data)!=0)//往第20块写入数据
MessageBox("写入数据失败","错误",MB_OK);   
/*
程序到这里,是不是可以接着读写其它块的数据呢?如:

if(RC500_232_write(21,data)!=0)//往第21块写入数据
MessageBox("写入数据失败","错误",MB_OK);   

if(RC500_232_write(22,data)!=0)//往第22块写入数据
MessageBox("写入数据失败","错误",MB_OK);   

if(RC500_232_read(20,data)!=0)//读取第二十块的数据
MessageBox("读取数据成功","错误",MB_OK);   
*/

----------------------------------------------------------------------

1.其他区块需要重新验证,每个区块的访问密钥不同。
2.读卡器只要初始化后,就可以使用。如断开链接需要重新复位初始化。才能工作。
3.超出的字节不会有应答。

--------------------------------------------------------

谢谢楼上的兄弟。
if(RC500_232_authkey(0,5,szpwd)!=0)//验证第5扇区的密钥A
    return FALSE;
if(RC500_232_write(20,data)!=0)//往第20块写入数据
   return FALSE; 

if(RC500_232_authkey(0,5,szpwd)!=0)//验证第5扇区的密钥A
  return FALSE;

if(RC500_232_write(21,data)!=0)//往第21块写入数据
  return FALSE;

if(RC500_232_authkey(0,5,szpwd)!=0)//验证第5扇区的密钥A
 return FALSE;
if(RC500_232_write(22,data)!=0)//往第22块写入数据
  return FALSE; 

if(RC500_232_authkey(0,5,szpwd)!=0)//验证第5扇区的密钥A
   return FALSE;
if(RC500_232_read(20,data)!=0)//读取第二十块的数据
   return FALSE;

return TRUE ;

也就是选择卡片正确后,每读写一个数据块都得进行一次
if(RC500_232_authkey(0,5,szpwd)!=0)//验证第5扇区的密钥A
   return FALSE;
这样的校验吗?



相关问题
    Copyright ◎ 1998 - 2007 编程资料网 All Rights Reserved