当前位置:编程学习 > VB >>

IC卡怎么连续读写两个块区数据

M1卡,一共16个扇区(0~15),每个扇区四个块(0~3),第三块存放密码。,这样每个块能用3个快,每个块可存储16字节数据,太少了,只能存储8个汉字。现在想要把两个或者三个块连续读写。比如实现第4、5、6块(也就是第1扇区三个数据块)数据的写入和读出。怎么实现?
想法是:用LenB()返回字节长度,前16个字节存放到第4块,17~32个字节存放到第5块,后面的存放到第6块。
下面的代码不对额,但就是上面的意思。求大神帮助!
sector = 1【选择1扇区】
st = rf_authentication(icdev, 0, sector)【对1扇区进行验证,返回值为0,验证成功,二次开发包的函数】
If (st = 0) Then
'List1.AddItem ("rf_authentication ok")
Else
MsgBox "1扇区验证失败!", vbCritical
Exit Sub
End If
data1 = Trim(Text1.Text)【把Text1中的字符赋值给data1】
If LenB(data1) >= 0 And LenB(data1) <= 16 Then【当输入字节长度在0~16之间,则全部写到块4】
st = rf_write(icdev, 4, data1)
Else【否则把前16个字节写到块5,后面的写到块6】
st = rf_write(icdev, 4, MidB(data1, 1, 16)) And st = rf_write(icdev, 5, MidB(data1, 17))
End If --------------------编程问答-------------------- 读卡器与M1卡之间有完整的一套协议,你的想法极有可能是不能实现的。
我的理解是M1卡本身就拒绝一次读写多个块。M1卡虽然一点都不智能,但是也要比4428 4412之类的卡要复杂的多,不是想怎样就能怎样的,必须要遵循它的协议。
--------------------编程问答-------------------- 数据长度的判断要放在前面,然后逐块认证、写入。 --------------------编程问答-------------------- 楼主跟我是不是一个单位的哟,呵呵。

感觉楼主开发的这个IC卡跟我现在开发的IC一模一样也。(是否是深圳明华奥汉科技的IC卡,看那函数极像)

我是这样操作的,一个扇区四个块,只能写一、二、三个块,第四块是密码区不管它。

这IC的写入跟读出可能双方要约定好(比如你写了后对方读的时候要按你写的规则来读,比如哪几个区哪几个块写的是什么信息)。

两种方法写入:
1.首先检查要写入的字符串的长度,如果超过8个字符就把超过的再接着写入第二块;
2.先不管字符的长度,约定好(比如第一扇区我只写入公司名称),我不管公司名称的长度是多少(但是不要超过24个,因为一个扇区最多写三个块,一个块8个汉字),我全部把它写入三个扇区,前8个字符写入1块,中8个字符写入2块,剩下的写入3块——这种写法,就是当所有字符串不超过8个时,也不会出错,只是后面两个块写入的全部是空值而已。

采用怎样的思路就看你的了。
补充:VB ,  COM/DCOM/COM+
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,