目前编写IC卡读写程序,有以下问题需要解决:1、如何获得IC卡的容量,即字节数;//Lib并未提供此接口
2、涉及到续写IC卡,如何数据末的起始位,
   如:上次数据末尾地址为77H,那么下一次我需要从78H开始写数据,如何得到78H
   这个值;//Lib并未提供此接口
3、如何清除IC卡的所有数据;//有的并没有提供清除接口,如AT24C系列的IC卡寻求经验之谈:   IC卡存储的数据几乎全部是数字信息,只有少量的字符信息如".",请问您是如何
存储这样的数据的?
   我想:用0 1 2 ...的字符存储未免太浪费空间,如果用16进制存储是不是可行?
   如我用 10H表示十进制的10,而不用31H30H表示没有经验,请指教!

解决方案 »

  1.   

    1、IC卡的类型?
    2、IC卡的容量我没有查过,但可以通过型号,或者如果读写兼容的话,你可以从第一页读到最后一页,用计数器来算容量,或者从第一段读到最后一段,许多IC卡分sector,block,page,来进行读写。MF卡的大小,估计不能通过这种方式读出来。
    3、你可以建立一个相当于分区信息的表,比如将第一页作为记录你写到的位置计数,然后根据你的计数器来读写相应的位置,如果你觉得不安全,也可以放两份,我就是这样做的。
    4、如果没有清除指令,那么就老实地写入0xFF,相当于格式化。
    5、本来电脑全部是数字嘛,如果能存数字,就能存一切,既然能存数字,那么 对应的ASCII也就能存,那么也就无所谓什么数字还是字符了。
      

  2.   

    2)。你可以每次写完卡记住最后的位置,在卡片得某一个位置上,下次写得时候先读出上次得末尾,然后接着写就行了。就是对卡片格式一下呀!3)。写0xFF就可以了。4)。数据我也想写ASCII,可我不知道在Delphi里面怎么得到Integer,Single,String的ASCII并把他们连接到一起。
      

  3.   

    非常感谢!1、卡类型ATMEL24C64
    2、小弟没接触过IC卡,不知道怎么读sector,block,page信息,买卡和读写器时,随附
       demo确实有页的信息
    3、我现在就是这么做的,前6字节被固定使用了,1 2 字节存放记录数,9999条记录肯定
       用不了的,3 4 5存放商场编号,000000,也差不多,6 存放每条记录长度,99差不多
    4、我也是写入的0xFF,就是不知道容量,我怎么知道写到最后一个字节呢?
    5、呵呵,我也是这么干的,节省空间嘛!各位大侠,在容量上再考虑一下!to ffwin() :能不能给点详细的,关于2
      

  4.   

    to: xuejinlong
    在DElphi中可以用inttohex函数来轮换Integer-->string,然后处理转换成ASCII,
    to: csvmm
    你可以去atmel网站down一个关于ATMEL24C64的说明书,pdf格式的,里面有详细的用法,上面有指令格式。这种卡我没有用过,我用的是atmel--at45db041AT24C64--我查了一下,共有两种容量,64K,你先看一下它的说明书吧,挺详细的。
    AT24C32---32K,
    我用的是512K的,只要是一种卡,容量是一定的。
    你先看一下说明书,我没有仔细看,但这几种卡的操作方式挺类似的,挺好用的。
      

  5.   

    1、应该可以获得IC卡的容量的,随机的软盘里有个demo,它可以识别多种卡类型,并且
       可以识别卡的容量,每页256个字节,不知道用delphi怎么实现?2、我做清除操作时(写入oxff),最多只能写入256个,并且不能跨页,是不是就是这样?3、我没找到关于ATMEL24C64的说明书,谁有能发给我吗?[email protected]
      

  6.   

    ic卡上写的数据一般式十六进制,BCD码等
    1。IC卡的容量不能获取,可根据卡类型作一些判断,如ATMEL24C64应该是64K
    2。记住偏移位3。清空卡片写0XFF即可
      

  7.   

    ATMEL24C64 是8k的还有其他卡类型,我怀疑是以下容量:ATMEL24C16 :2k
    ATMEL24C04 : 512字节
    ATMEL24C02 : 256字节
    ATMEL24C01A: 128字节市场上出现的AT24C系列非加密卡基本就这几种,听说有16k的新型卡已经上市,我得到的消息:还没有超过16k的卡,是不是?真的没有32k、64k甚至更大容量的卡吗?还有:我做清除操作时(写入oxff),最多只能写入256个,并且不能跨页,是不是就是这样?例如,我要清除8K的卡:不能一次性写入8192个0xff,只能写32次256个0xff,为什么?
      

  8.   

    不止24C系列,所有的4442等,及CPU卡,都可以
      

  9.   

    还有:我做清除操作时(写入oxff),最多只能写入256个,并且不能跨页,是不是就是这样?例如,我要清除8K的卡:不能一次性写入8192个0xff,只能写32次256个0xff,为什么?
      

  10.   

    楼上的几位朋友,小弟现在也在做感应卡的程序,对方提供了读卡器和手持机给我,读卡器可以把读出来的卡号通过window的超级终端里显示出来,我在程序里应该如何写程序接受,还有就是如何把持机里的数据下载到电脑中,如何初始化手持机里的数据??急。
      

  11.   

    还有:我做清除操作时(写入oxff),最多只能写入256个,并且不能跨页,是不是就是这样?例如,我要清除8K的卡:不能一次性写入8192个0xff,只能写32次256个0xff,为什么?
      

  12.   

    是的,不能跨页如果它不提供按sector,或者提供block写的话。
    去www.atmel.com网站,里面有个serch,敲入AT24C64 就可以下的说明书,没有多大,pdf格式