注:c#初学者,懂得不是很多,因为最近有一个项目才开始研究的,学术不精,勿喷。
这里我们用的是明华URF-R330读写器 卡片类型M1 开发环境vs2008
由于我只需要进行对卡片的读取和修改,所以这篇文章只针对读卡写卡而生
首先我们得简单的了解一下读卡器从连接电脑到读取卡片到写卡这一个简单的过程 :
1.读卡器连接电脑,明华这款读卡器是利用USB接口的,首先是驱动吗?这个大家都懂(这里我是没有用到驱动直接就连上了,可以在我的电脑右击管理的配置里查看是否连接上卡机)。
2.咳咳!这里敲黑板了,因为我们要开始用代码来连接了,首先是需要代码这边通过端口来连接卡机。(这里提醒一下注意卡机的端口是否被占用,也就是说卡机这个时候是否被你电脑的另一个程序占用)
3.端口连接上了,这里就需要读卡的步骤,但是在读卡之前呢需要进行对卡片的寻卡、认证。
4.这个时候就可以对你的卡片为所欲为了,想读想写随你便。
5.关闭端口,这个不要我说了吧,图书馆借完书还得换回去呢!
M1卡的结构:
M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63.
这里要注意,扇区0的0块是不允许修改的,这里存储这卡片的基本信息。而且每个扇区的最后一块是存储着扇区的控制块和密码,这个基本的卡片规则你们就去网上一查,有的是。
说了这么一大堆了终于要开始步入正题了。
由于我是用的开发者文件进行二次开发的,首先我们需要以下几个文件,nwrf32.dll,common.cs,mifareone.cs,如果需要的大家可以来找我要(我也是在淘宝那里骗来的……..),首先把dll放入Debug里面,引入这两个文件就好了。
1.连接端口部分:
public int icdev; // 通讯设备标识符
icdev = common.rf_init(0, 115200);//这个是在按钮里的
我看了他们的Demo写了一大堆,我一开始还照着他的一点一点写,后来发现他写的那些一点用都没有,也就是这一句话,不要问我为什么写0,115200;我也不知道,这是我经过无限的测试发现的问题,只要这么写就能连上,我只知道第一个参数是端口第二个是波特率。对了,这里最好定义一个全局变量,就是我写的那样,因为我们随时要调用这个通讯设备标识符,如果成功的话这个标识符会大于0;
2.寻卡
UInt16 tagtype = 0;
byte size =