日期:2014-05-17  浏览次数:20889 次

求教非接触式IC读取问题
本帖最后由 bulls5988 于 2013-01-12 13:49:56 编辑
没接触过IC卡,读卡器是没商标的杂牌子。好容易在网上找了一个Demo,就想实现目的取出这个IC会员卡的卡号,Demo里有类库的说明文件。我看不出来是用什么语言写的。IC卡和磁条卡不一样,不光是三个磁道,而是有很多个扇区,我不知道卡号在哪个扇区里,请问如何用C#读出卡的所有内容?(使用COM2端口)

int rf_read(HANDLE icdev,unsigned char _Adr,unsigned char *_Data);
功    能:读取卡中数据
       对于M1卡,一次读一个块的数据,为16个字节;
       对于ML卡,一次读出相同属性的两页(0和1,2和3,...),
为8个字节(在定义缓冲区时应定义16个字节)
入口参数:icdev:被打开串口的句柄
          _Adr:M1卡棗块地址(0~63);
                ML卡棗页地址(0~11)
出口参数:_Data:读出数据
返    回:成功则返回 0
   例:int st;
       unsigned char data[16];
       st=rf_read(icdev,4,data);  //读M1卡块4的数据
   结果:data = {0x11,0x2,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,
0xdd,0xee,0xff}

------解决方案--------------------
读写器:
IC卡号在0块0扇区,厂家出厂时已固化,只能读取不能修改。
IC卡的读写需要密码,每块都有A、B两个,分别对应于块的读写。
应先登录,然后才能进行读写。
----------
读卡器:
读卡器是通过轮询主动读取IC卡号,读卡器一般有网络型和串口型,在读取前一般需要通过厂家提供的软件工具配置读卡器,网络型的通过读卡器设备上的SN来配置IP地址和端口,然后PC上就侦听来自读卡器的卡号。