随着RFID应用的普及,越来越多的软件工程师需要使用RFID读写器编程来实现自己的需求。为了使软件工程师更快的了解RFID读写器的使

用,本文选择一款市面上常用的USB免驱RFID读写器SDT-HA来做解析。USB免驱一般是使用USB HID接口,因为windows系统本身带有HID接口的驱

动,所以不需要单独发布驱动程序。

要编写RFID读写器的程序,先必须了解RFID读写器读写的卡的内存结构。现在广泛使用的是以M1(S50)卡及其兼容卡为代表的智能卡,以

下将详细介绍S50卡的内存结构。

标准S50智能卡有8Kbits内存,相当于1K字节,实际可以用来的存储数据的有752字节,为什么会缩水,在稍后的内存介绍中将会解释。

标准S50智能卡有16个扇区,每个扇区有4块,每块有16个字节。这全部算下来就是16*4*16=1024字节(1K)。由于块是卡结构的最小管理

单位,所以我们在读写这张卡的时候就是按照块来操作的,就是说必须是16个字节。每4个块组成了一个扇区单元,组成扇区单元的目的就是为

了管理卡的密钥,也就是卡的密钥和扇区是对应的。有16个扇区,也就有16组密钥各自独立的工作着。某组密钥只是对这个扇区(4个块)管用

,与其他的扇区无关。这种设计可以使此智能卡可以同时作多达16种不同的应用。

每个扇区的密钥都存放在该扇区的最后一块,占用了一个单独的块。密钥分为A密钥和B密钥,关于密钥可以参见文章《关于S50卡密钥A和密钥B》。

第0扇区的第0块用于保存序列号等相关数据,是只读的,不能写入任何数据。如果我们按照顺序定义块,那么块号就是从0到63。0到3块

为第0扇区,4到7块为第1扇区,依此类推,第60到63块为第15扇区。其中第0块是只读的,第3块,7块....第63块全部是密钥块,不能用来保存

数据, 所以总的可以保存数据的块为16*3-1=47块,共47*16=752字节。

用c语言编写rfid读卡系统,USB免驱RFID读写器编程解析之一:智能卡篇相关推荐

  1. Win7 64位系统USB免驱设备驱动识别失败解决方法

    插入USB设备,然后打开设备管理器,选择要安装驱动的设备,然后选择计算机的指定位置. 选择c:\windows\winsxs位置或者C:\WINDOWS\SYSTEM32\DRIVERSTORE位置

  2. 韦根读卡电路c语言程序,私人项目开源 — 低成本125K RFID读卡模块(原理图+PCB+代码+调试)...

    RFID读卡模块原理图是ORCAD的,有PDF预览,PCB是PADS的,还有BOM烧写说明,标注图等.其中UART输出是量产过的 韦根输出的只是看示波器波形是对的,没有实际应用:里面有源代码,编写前提 ...

  3. 板线分离嵌入式RFID读卡模块NFC读写模块HX880系列的应用案例

    HX880系列高频IC卡读写模块是华翔天诚科技一款支持ISO14443A/B,ISO15693双协议.支持S50.S70.Ultralight.FM11RF08.FM1208.MF Pro.MF Fe ...

  4. 如何开发Android安卓RFID读卡APP

    读卡器介绍:免驱RFID读卡器 Web读卡器 可二次开发 Android.Linux 乐乐课堂-淘宝网 (taobao.com)https://item.taobao.com/item.htm?spm ...

  5. FDX-B|EMID格式低频RFID 读卡模块LD6900技术选型与说明

    FDX-B|EMID格式低频RFID 读卡模块LD6900是华翔天诚推出一款基于 RFID 无线射频识别技术的低频(LF)读卡模块,工作频率支持 134.2KHZ.125KHZ,符合 ISO 1178 ...

  6. 用c语言做RFID读卡程序,2.STM32读卡号读写数据代码示例3.0(C语言)

    文件名大小更新时间 2.STM32读卡号读写数据代码示例3.0(C语言)\HFRFID.uvgui.WEIZAI736912016-07-15 2.STM32读卡号读写数据代码示例3.0(C语言)\H ...

  7. 韦根读卡电路c语言程序,RFID读卡模块电路图、PCB源文件 125K RFID读卡模块 - 下载 - 搜珍网...

    RFID项目\ATtiny13_cn.pdf RFID项目\PCB示意图.png RFID项目\RFID BOM.xls RFID项目\RFID_0630.pcb RFID项目\RFID_UART\. ...

  8. 低频RFID读卡流程

    低频RFID系统与ID卡 低频RFID系统读卡器的工作频率范围一般从120KHz到134KHz.该频段的波长大约为2500m,除了金属材料影响外,一般低频能够穿过任意材料的物品而不降低它的读取距离.低 ...

  9. 用c语言编写程序学工系统,[工学]chap02_用C语言编写程序.ppt

    [工学]chap02_用C语言编写程序 Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度 2.3 计算分段函数 2.4 输 ...

最新文章

  1. 如何用Python从本地将一个文件备份到Google Drive
  2. 在数据库SQl中拼串
  3. html5基础知识文档,HTML5基础知识(1)
  4. java 判断是否是日期_java判断是否为日期的方法(附代码)
  5. text 热敏打印机_只要有想象力,打印机都能做游戏
  6. 将历史、数学、语文、地理、政治知识融会贯通的诀窍就是它
  7. 机械动作时序图怎么画_人物动作怎么画?动漫绘画人物姿势的基本画法!
  8. SylixOS电源管理之外设功耗管理
  9. C宏的一个技巧:可变参数
  10. 菲波那契数列编程实现
  11. 用R解析Mahout用户推荐协同过滤算法(UserCF)
  12. spring基于注解的 IOC 配置ioc实现crud
  13. 青少年计算机知识,学习计算机程序设计和算法知识对青少年教育有什么帮助?...
  14. 3Dmax读取丢失的贴图的方法
  15. C语言程序100例之C#版-029
  16. 二倍图三倍图什么意思_iOS开发中的二倍图、三倍图
  17. 计算机老出现安全警报怎么办,windows安全警报怎么关闭,教您怎么关闭windows安全警报...
  18. 谢孟媛老师 初级文法学习笔记
  19. 出海企业怎么选择国际短信平台
  20. 开源游戏服务器框架NoahGameFrame(NF)服务器端环境搭建(二)

热门文章

  1. uva 1626 Brackets sequence
  2. 使用本地CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box创建三个k8s集群虚拟机
  3. jax指标的用法_股票指标参数用法.doc
  4. Java基础之map总结
  5. 简单的修改项目中的头像
  6. 新人小白如何快速适应职场 怎么更好学习技术
  7. java对cookie的操作,JAVA操作COOKIE
  8. 南京python周末培训
  9. 该如何搭建网校系统,需要哪些准备呢?
  10. 网际校验和算法(Internet CheckSum)