发卡器介绍:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.1d75789eyZBxwL&id=615391857885https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.1d75789eyZBxwL&id=615391857885

Private Declare Function piccreadex Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal picckey As Long, ByVal piccdata0_2 As Long) As Byte'Close the comport
Private Declare Function piccwriteex Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal picckey As Long, ByVal piccdata0_2 As Long) As Byte'修改单区函数声明
Private Declare Function piccchangesinglekey Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal piccoldkey As Long, ByVal piccnewkey As Long) As BytePrivate Declare Function piccchangesinglekeyex Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal piccoldkey As Long, ByVal piccnewkey As Long) As Byte'让设备发出声响函数声明
Private Declare Function pcdbeep Lib "OUR_MIFARE.dll" (ByVal xms As Long) As Byte'读取设备编号函数声明
Private Declare Function pcdgetdevicenumber Lib "OUR_MIFARE.dll" (ByVal devicenumber As Long) As Byte'寻卡并返回该卡的序列号
Private Declare Function piccrequest Lib "OUR_MIFARE.dll" (ByVal serial As Long) As Byte'寻卡并选中指定序列号的IC卡,必须指定序列号
Private Declare Function piccrequestex Lib "OUR_MIFARE.dll" (ByVal serial As Long) As Byte'将密码写入芯片内部保密性极高的只写区域,此函数写入密码仅仅是为了piccauthkey2函数的使用。
Private Declare Function pcdwritekeytoe2 Lib "OUR_MIFARE.dll" (ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal picckey As Long) As Byte'密码认证方式1,用外部密码认证,必须指定外部密码。本函数必须在piccrequest或piccrequestex函数执行之后运行,并且要紧接着调用,中途不能调用其他函数。
Private Declare Function piccauthkey1 Lib "OUR_MIFARE.dll" (ByVal serial As Long, ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal picckey As Long) As Byte'读出一块的数据,也就是16个字节。必须在执行piccrequest或 Piccrequestex函数,接着执行piccauthkey1或 piccauthkey2函数,然后执行piccread才能成功读出一块的数据。
Private Declare Function piccread Lib "OUR_MIFARE.dll" (ByVal block As Byte, ByVal piccdata As Long) As Byte'写一块的数据,也就是16个字节。必须在执行piccrequest或 Piccrequestex函数,接着执行piccauthkey1或 piccauthkey2函数,然后执行piccread才能成功读出一块的数据。
Private Declare Function piccwrite Lib "OUR_MIFARE.dll" (ByVal block As Byte, ByVal piccdata As Long) As Byte'读设备存储区1
Private Declare Function pcdgetcustomizedata1 Lib "OUR_MIFARE.dll" (ByVal readerdata As Long) As Byte'写设备存储区1
Private Declare Function pcdsetcustomizedata1 Lib "OUR_MIFARE.dll" (ByVal readerdata As Long) As Byte'读设备存储区2
Private Declare Function pcdgetcustomizedata2 Lib "OUR_MIFARE.dll" (ByVal readerdata As Long, ByVal devicenumber As Long) As Byte'写设备存储区2
Private Declare Function pcdsetcustomizedata2 Lib "OUR_MIFARE.dll" (ByVal readerdata As Long) As BytePrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)'控制字定义,控制字指定,控制字的含义请查看本公司网站提供的动态库说明
Private Const BLOCK0_EN = &H1
Private Const BLOCK1_EN = &H2
Private Const BLOCK2_EN = &H4
Private Const NEEDSERIAL = &H8
Private Const EXTERNKEY = &H10
Private Const NEEDHALT = &H20
Dim oldkh As StringPrivate Sub Command1_Click()
Dim status As Byte '存放返回值
Dim myareano As Byte '区号
Dim authmode As Byte '密码类型,用A密码或B密码
Dim myctrlword As Byte '控制字
Dim mypicckey(0 To 5) As Byte '密码
Dim mypiccserial(0 To 3) As Byte '卡序列号
Dim mypiccdata(0 To 47) As Byte '卡数据缓冲
Dim myblockdata(0 To 15) As Byte '卡数据缓冲'控制字指定,控制字的含义请查看本公司网站提供的动态库说明
myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY'指定区号
myareano = Combo2.ListIndex  '指定为第8区
'批定密码模式
authmode = Combo1.ListIndex  '大于0表示用A密码认证,推荐用A密码认证'指定密码
mypicckey(0) = "&H" & Mid(Text5, 1, 2)
mypicckey(1) = "&H" & Mid(Text5, 3, 2)
mypicckey(2) = "&H" & Mid(Text5, 5, 2)
mypicckey(3) = "&H" & Mid(Text5, 7, 2)
mypicckey(4) = "&H" & Mid(Text5, 9, 2)
mypicckey(5) = "&H" & Mid(Text5, 11, 2)Text3.Text = ""
Text1.Text = ""status = piccreadex(myctrlword, VarPtr(mypiccserial(0)), myareano, authmode, VarPtr(mypicckey(0)), VarPtr(mypiccdata(0)))'在下面设定断点,然后查看mypiccserial、mypiccdata,
'调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
'开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
'处理返回函数
Select Case statusCase 0:infstr = ""For j = 0 To 2For i = 0 To 15infstr = infstr + Right("00" + Hex(mypiccdata(j * 16 + i)), 2) + " "Next iNext jText3.Text = infstrinfstr = ""status = piccread(myareano * 4 + 3, VarPtr(myblockdata(0)))If status = 0 ThenFor i = 0 To 15infstr = infstr + Right("00" + Hex(myblockdata(i)), 2) + " "Next iText1.Text = infstrEnd Ifpcdbeep 50MsgBox "操作成功"Case 8:    MsgBox "请将卡放在感应区"        Case 21 '没有动态库MsgBox "找不到动态库ICUSB.DLL请将ICUSB.DLL拷贝到VB安装后的目录VB98下"    Case ElseMsgBox "异常" + Format(status, "0")
End Select
End SubPrivate Sub Command2_Click()
Dim writestr As String
Dim i As IntegerDim status As Byte '存放返回值
Dim myareano As Byte '区号
Dim authmode As Byte '密码类型,用A密码或B密码
Dim myctrlword As Byte '控制字
Dim mypicckey(0 To 5) As Byte '密码
Dim mypiccserial(0 To 3) As Byte '卡序列号
Dim mypiccdata(0 To 47) As Byte '卡数据缓冲writestr = Trim(Text3.Text)If Len(Trim(writestr)) < 143 ThenMsgBox "写卡数据不足,请补足写卡数据"Exit Sub
End IfOn Error GoTo err1:For i = 0 To 47mypiccdata(i) = "&H" + Mid(writestr, i * 3 + 1, 2)
Next i'控制字指定,控制字的含义请查看本公司网站提供的动态库说明
myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY'指定区号
myareano = Combo2.ListIndex  '指定为第8区
'批定密码模式
authmode = Combo1.ListIndex  '大于0表示用A密码认证,推荐用A密码认证'指定密码
mypicckey(0) = "&H" & Mid(Text5, 1, 2)
mypicckey(1) = "&H" & Mid(Text5, 3, 2)
mypicckey(2) = "&H" & Mid(Text5, 5, 2)
mypicckey(3) = "&H" & Mid(Text5, 7, 2)
mypicckey(4) = "&H" & Mid(Text5, 9, 2)
mypicckey(5) = "&H" & Mid(Text5, 11, 2)status = piccwriteex(myctrlword, VarPtr(mypiccserial(0)), myareano, authmode, VarPtr(mypicckey(0)), VarPtr(mypiccdata(0)))
Select Case statusCase 0:pcdbeep 50MsgBox "写卡成功"        Case 8:    MsgBox "请将卡放在感应区"        Case 21 '没有动态库MsgBox "找不到动态库ICUSB.DLL请将ICUSB.DLL拷贝到VB安装后的目录VB98下"    Case ElseMsgBox "异常" + Format(status, "0")
End SelectExit Suberr1:MsgBox "写卡数据错误,请输入正确的16进制写卡数据"
End SubPrivate Sub Command6_Click()
Dim i As Integer
Dim status As Byte '存放返回值
Dim myareano As Byte '区号
Dim authmode As Byte '密码类型,用A密码或B密码
Dim myctrlword As Byte '控制字
Dim mypiccserial(0 To 3) As Byte '卡序列号
Dim mypiccoldkey(0 To 5) As Byte '旧密码
Dim mypiccnewkey(0 To 16) As Byte '新密码'控制字指定,控制字的含义请查看本公司网站提供的动态库说明
myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY'指定区号
myareano = Combo2.ListIndex  '指定为第8区
'批定密码模式
authmode = Combo1.ListIndex  '大于0表示用A密码认证,推荐用A密码认证'指定密码On Error GoTo err1:mypiccoldkey(0) = "&H" & Mid(Text5, 1, 2)
mypiccoldkey(1) = "&H" & Mid(Text5, 3, 2)
mypiccoldkey(2) = "&H" & Mid(Text5, 5, 2)
mypiccoldkey(3) = "&H" & Mid(Text5, 7, 2)
mypiccoldkey(4) = "&H" & Mid(Text5, 9, 2)
mypiccoldkey(5) = "&H" & Mid(Text5, 11, 2)'指定新密码,注意:指定新密码时一定要记住,否则有可能找不回密码,导致该卡报废。
newkey = Trim(Text1.Text)
For i = 0 To 15mypiccnewkey(i) = "&H" & Mid(newkey, i * 3 + 1, 2)
Nextmypiccnewkey(16) = &H3  '3是表示同时更改A、B、 密码权限访问字,为2表示密码权限访问字不更改,只改A、B密码,为0表示只改A密码answ = MsgBox("您确定修改密码控制块的数据吗,此块数据如果改写了错误的数据卡片将报废!", vbQuestion + vbOKCancel, "警告")
If answ <> vbOK Then Exit Substatus = piccchangesinglekeyex(myctrlword, VarPtr(mypiccserial(0)), myareano, authmode, VarPtr(mypiccoldkey(0)), VarPtr(mypiccnewkey(0)))'处理返回函数
Select Case statusCase 0:pcdbeep 50MsgBox "操作成功"        Case 8:    MsgBox "请将卡放在感应区"        Case 21 '没有动态库MsgBox "找不到动态库ICUSB.DLL请将ICUSB.DLL拷贝到VB安装后的目录VB98下"    Case ElseMsgBox "异常" + Format(status, "0")
End SelectExit Suberr1:MsgBox "写卡数据错误,请输入正确的16进制写卡数据"
End SubPrivate Sub Form_Load()
Combo1.ListIndex = 1
Combo2.ListIndex = 16
End SubPrivate Sub Command17_Click() '读s70卡>=32的扇区
Dim status As Byte '存放返回值
Dim i, j, p As Integer
Dim myareano As Byte '区号
Dim authmode As Byte '密码类型,用A密码或B密码
Dim myctrlword As Byte '控制字
Dim mypicckey(0 To 5) As Byte '密码
Dim mypiccserial(0 To 3) As Byte '卡序列号
Dim mypiccdata(0 To 255) As Byte '卡数据缓冲
Dim myblockdata(0 To 15) As Byte '卡数据缓冲
Dim readinf  As String'控制字指定,控制字的含义请查看本公司网站提供的动态库说明
myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY'指定区号
myareano = Val(Combo1.Text)  '指定区
'批定密码模式
authmode = 1 '大于0表示用A密码认证,推荐用A密码认证'指定密码
mypicckey(0) = &HFF
mypicckey(1) = &HFF
mypicckey(2) = &HFF
mypicckey(3) = &HFF
mypicckey(4) = &HFF
mypicckey(5) = &HFFText3.Text = ""status = piccreadex(myctrlword, VarPtr(mypiccserial(0)), myareano, authmode, VarPtr(mypicckey(0)), VarPtr(mypiccdata(0)))
'在下面设定断点,然后查看mypiccserial、mypiccdata,
'调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
'开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
'处理返回函数
Select Case statusCase 0:p = 48For i = 3 To 15status = piccread(128 + ((myareano - 32) * 16) + i, VarPtr(myblockdata(0)))If status = 0 ThenFor j = 0 To 15mypiccdata(p) = myblockdata(j)p = p + 1NextElseMsgBox "读第" & Format(myareano * 4 + i, "0") & "块数据出错!"Exit SubEnd IfNextreadinf = ""For i = 0 To 239         '0-14块 数据块readinf = readinf + Format(Hex(mypiccdata(i)), "00")NextText3.Text = readinfreadinf = ""For i = 240 To 255     '15块密码控制块readinf = readinf + Format(Hex(mypiccdata(i)), "00")NextText4.Text = readinfMsgBox "读卡成功"Case 8:    MsgBox "请将卡放在感应区"        Case 21 '没有动态库MsgBox "找不到动态库ICUSB.DLL请将ICUSB.DLL拷贝到VB安装后的目录VB98下"    Case ElseMsgBox "异常"
End Select
End SubPrivate Sub Command18_Click()  '写s70卡>=32的扇区
Dim i, j, p As Integer
Dim status As Byte '存放返回值
Dim myareano As Byte '区号
Dim authmode As Byte '密码类型,用A密码或B密码
Dim myctrlword As Byte '控制字
Dim mypicckey(0 To 5) As Byte '密码
Dim mypiccserial(0 To 3) As Byte '卡序列号
Dim mypiccdata(0 To 47) As Byte '卡数据缓冲
Dim myblockdata(0 To 15) As Byte '卡数据缓冲
Dim writhdata(0 To 240) As Byte '卡数据缓冲
Dim writinf As String'控制字指定,控制字的含义请查看本公司网站提供的动态库说明
myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY'指定区号
myareano = Val(Combo1.Text) '指定为第8区
'批定密码模式
authmode = 1 '大于0表示用A密码认证,推荐用A密码认证'指定密码
mypicckey(0) = &HFF
mypicckey(1) = &HFF
mypicckey(2) = &HFF
mypicckey(3) = &HFF
mypicckey(4) = &HFF
mypicckey(5) = &HFFwritinf = Trim(Text3.Text)
For i = 0 To 239writinf = writinf + "00"
Next'指定卡数据
For i = 0 To 239writhdata(i) = "&H" + Mid(writinf, i * 2 + 1, 2)If i <= 47 Then mypiccdata(i) = writhdata(i)
Next istatus = piccwriteex(myctrlword, VarPtr(mypiccserial(0)), myareano, authmode, VarPtr(mypicckey(0)), VarPtr(mypiccdata(0)))
'在下面设定断点,然后查看mypiccserial、mypiccdata,
'调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
'开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
'处理返回函数
Select Case statusCase 0:j = 0p = 3For i = 48 To 239myblockdata(j) = writhdata(i)j = j + 1If j = 16 Thenstatus = piccwrite(128 + ((myareano - 32) * 16) + p, VarPtr(myblockdata(0)))If status = 0 Thenj = 0p = p + 1ElseMsgBox "写" & Format(128 + ((myareano - 32) * 16) + p, "0") & "块错误"Exit SubEnd IfEnd IfNextpcdbeep 50MsgBox "操作成功"        Case 8:    MsgBox "请将卡放在感应区"        Case 21 '没有动态库MsgBox "找不到动态库ICUSB.DLL请将ICUSB.DLL拷贝到VB安装后的目录VB98下"    Case ElseMsgBox "异常"
End SelectEnd Sub

vb6荣士读写器ISO-14443-A系列M1 S50、S70、F08卡源码相关推荐

  1. M100嵌入式自动吞吐式读写器|电动读卡机如何通过C#程序读取社保卡号

    M100嵌入式自动吞吐式读写器|电动读卡机是一款双保护门功能读卡器,第一层防尘防异物机械门,第二层电动门. M100嵌入式自动吞吐式读写器|电动读卡机采用耐高温.耐磨擦.高强度.抗老化的复合型塑胶为主 ...

  2. 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab增强型黑猩猩优化器算法求解单目标优化问题[含Matlab源码 2013期] 点击上面蓝色字体,直接付费下 ...

  3. Vb6荣士Udp Rtu通讯IC卡网络读写源码

    网络读写器介绍: https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.25.454be728NKUIW8&id=2 ...

  4. android音乐播放器、多种架构综合应用、滤镜处理等源码

    Android仿微信朋友圈查看图片下拽返回. Android图片滤镜处理,相机滤镜处理效果源码 Android自定义View源码:一个水平的进度条 基于MVP-Clean + Weex + RxJav ...

  5. iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码...

    iOS精选源码 iOS WKWebView的使用源码 模仿apple music 小播放器的交互实现 高仿微信的悬浮小窗口 iOS仿支付宝首页效果 [swift]仿微信悬浮窗 类似于今日头条,网易新闻 ...

  6. 2020 零基础 Vue综合应用 教开发音乐播放器—悦听(激发编程乐趣)【整理+源码】

    文章目录 1.引言 2.音乐播放器完整版效果图如下: 3.接口引用 4.示例代码 5.结束语 点击进入Vue❤学习专栏~ 1.引言 这是Vue学习的综合应用篇,教你开发一个音乐播放器,能听歌,能看热门 ...

  7. iOS主题更换、音乐播放器、栏目管理、上传视频封面等源码

    iOS精选源码 主题更换库ThemeStyleTools ios 上传视频选择视频封面(videoCoverController) 网络音乐播放器SCMusic(适配iOS11) OpenGL DEM ...

  8. 【Android App】物联网中指南针、计步器、感光器、陀螺仪的讲解及实战演示(附源码 超详细必看)

    需要源码请点赞关注收藏后评论区留言~~~ 一.指南针-磁场传感器 顾名思义,指南针只要找到朝南的方向就好了. 可是在App中并非使用一个方向传感器这么简单,事实上单独的方向传感器已经弃用,取而代之的是 ...

  9. 【C语言游戏】微信飞机大战 | PlaneFight(EasyX,drawAlpha绘制透明贴图,计时器,计帧器,游戏难度自动调整,接受鼠标消息,源码素材免费分享)

    一.数据结构介绍 struct aircraft //所有飞机的结构体 typedef struct aircraft{ int type;//飞机类型 int HP;//剩余血量 int bomb_ ...

最新文章

  1. 在小公司混水摸鱼3年,被面试官直接开怼:能力太差了,还不如应届生哇~
  2. ThreadLocal应用-使用ThreadLocal做线程缓存变量池
  3. 数据库选项--ALTER DATABASE WITH 选项
  4. 计算机重装系统后黑屏,电脑重装系统后开机黑屏怎么办
  5. python弹出框多一个空白框_Selenium+python3 应对多个弹出框存在(alert_is_present)判断和处理...
  6. 分区表理论解析(下):SQL Server 2k52k8系列(二)
  7. Java对MongoDb的CURD操作
  8. 平台卖家要不要做独立站?
  9. Hibernate缓存之初探
  10. 数据结构 Java数据结构 --- 反射
  11. matlab单项pwm整流电流内环pr控制仿真,基于PR的单相PWM整流器电流控制研究
  12. java反射的优缺点_浅谈Java反射的优缺点
  13. Halcon实战之MLP颜色匹配(一)
  14. python macd底背离_MACD的“底背离”狠不狠?回测告诉你结果
  15. 【IUI 2020】人在回路机器学习——Human-in-the-Loop AI in Government: A Case Study
  16. 读SQL进阶教程笔记12_地址与三值逻辑
  17. hazelcast mysql_HAZELCAST 客户端命令 可用于简单调试
  18. Python实现json串比对并输出差异结果
  19. 【英语天天读】Advice to a Young Man
  20. 【世通兰陵王系列】IP段是什么意思?杭州高防IP段:103.219.30

热门文章

  1. 申请六维邀请码最新标准(2010年11月新修订)
  2. Spark 算子之join使用
  3. BeautifulReport测试报告的bootstrap文件失效(404)
  4. chrome css两端对齐,两端对齐布局与text-align:justify
  5. Linux 创建(删除)连接命令 ln -s 软连接
  6. 获取电脑当前正在连接的wifi密码
  7. 微软和苹果笔记本键盘对比_看看微软,谷歌和苹果的平面设计方法
  8. python-docx 切分runs时会将整个词切分成多个的问题
  9. PHP 全局变量 - 9 个超全局变量详解与用法示例
  10. java中如何获取字符的ASCII码