VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ft=t&id=615391857885
一、读取旧Ntag卡的UID和数据
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click'轻松读卡'技术支持:'网站:Dim i, j As IntegerDim cardidhex, authkey, Str As StringDim status, myctrlword, comedc As Byte '存放返回值Dim mypiccserial(7) As Byte '卡序列号Dim mypicckey(0 To 3) As Byte '认证密码Dim mypiccdata(0 To 3) As Byte '读卡的数据缓冲,Ultralight卡及NTAG21x卡的数组长度必须为16个字节,写卡的为4个字节Dim piccdata(0 To 8191) As ByteDim myblockaddr As Byte '起始块地址Dim myblocksize As Byte '总块数If CheckBox3.Checked ThenIf Len(Trim(TextBox7.Text)) < 8 Theni = MsgBox("卡认证密码位数不足!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")If i <> vbOK ThenTextBox7.Select()Exit SubEnd IfElseauthkey = Trim(TextBox7.Text)For i = 0 To 3mypicckey(i) = CByte("&H" & Mid(authkey, i * 2 + 1, 2))NextEnd Ifmyctrlword = &H10 '需要认证卡密码后再继续Elsemyctrlword = 0End Ifmyblockaddr = CByte(rwbeginp.Value)myblocksize = CByte(rwps.Value)j = 0For i = myblockaddr To myblockaddr + myblocksize - 1status = piccreadex_ntag(myctrlword, mypiccserial(0), mypicckey(0), i, 1, mypiccdata(0))If status = 0 Thenpiccdata(j * 4 + 0) = mypiccdata(0)piccdata(j * 4 + 1) = mypiccdata(1)piccdata(j * 4 + 2) = mypiccdata(2)piccdata(j * 4 + 3) = mypiccdata(3)j = j + 1ElseExit ForEnd IfNextSelect Case statusCase 0pcdbeep(50)cardidhex = ""For i = 0 To 6cardidhex = cardidhex + Strings.Right("00" + Hex(mypiccserial(i)), 2)NextTextBox8.Text = cardidhexcardidhex = ""For i = 0 To myblocksize * 4 - 1cardidhex = cardidhex + Strings.Right("00" + Hex(piccdata(i)), 2)NextRichTextBox1.Text = cardidhexlcddispfull("读卡成功! ")MsgBox("读卡成功!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "提示")Case 8lcddispfull("请将卡放在感应区! ")MsgBox("请将卡放在感应区!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 12lcddispfull("读块" + Convert.ToString(i) + "失败,密码错误! ")MsgBox("读块" + Convert.ToString(i) + "失败,密码错误!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 13lcddispfull("读块" + Convert.ToString(i) + "失败,可能需要验证密码! ")MsgBox("读块" + Convert.ToString(i) + "失败,可能需要验证密码!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 23MsgBox("请连上USB读写器!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case Elselcddispfull("读块" + Convert.ToString(i) + "时操作异常,返回代码:" + Convert.ToString(status) + " ")MsgBox("读块" + Convert.ToString(i) + "时操作异常,返回代码:" + Convert.ToString(status), MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")End SelectEnd Sub
二、将读取的UID和数据写入新标签
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click'技术支持:'网站:Dim i, j As IntegerDim cardidhex, authkey, Str, writstr As StringDim status, myctrlword, comedc As Byte '存放返回值Dim mypiccserial(7) As Byte '卡序列号Dim mypicckey(0 To 3) As Byte '认证密码Dim mypiccdata(0 To 3) As Byte '写卡的为4个字节Dim myblockaddr As Byte '起始块地址Dim myblocksize As Byte '总块数Dim piccdata(0 To 8100) As ByteDim rwlen As IntegerIf rwps.Value < 1 ThenMsgBox("写卡页数必须大于0!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Exit SubEnd Ifmyblockaddr = CByte(rwbeginp.Value)myblocksize = CByte(rwps.Value)If CheckBox3.Checked ThenIf Len(Trim(TextBox7.Text)) < 8 Theni = MsgBox("卡认证密码位数不足!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")If i <> vbOK ThenTextBox7.Select()Exit SubEnd IfElseauthkey = Trim(TextBox7.Text)For i = 0 To 3mypicckey(i) = CByte("&H" & Mid(authkey, i * 2 + 1, 2))NextEnd Ifmyctrlword = &H10 '需要认证卡密码后再继续Elsemyctrlword = 0End Ifrwlen = myblocksize * 4If Not checkhexstr(RichTextBox1.Text.Trim(), rwlen, piccdata) ThenMessageBox.Show("写卡信息不足,建议先读取对应块内数据后再改写!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error)ReturnEnd Ifj = 0For i = myblockaddr To myblockaddr + myblocksize - 1mypiccdata(0) = piccdata(j * 4 + 0)mypiccdata(1) = piccdata(j * 4 + 1)mypiccdata(2) = piccdata(j * 4 + 2)mypiccdata(3) = piccdata(j * 4 + 3)If i = 2 Thenmypiccdata(2) = 0mypiccdata(3) = 0status = picclock_ntag(0, mypiccdata(0)) '2块的后两个字节是静态锁Elsestatus = piccwriteex_ntag(myctrlword, mypiccserial(0), mypicckey(0), i, 1, mypiccdata(0))End IfIf status = 0 Thenj = j + 1ElseExit ForEnd IfNextSelect Case statusCase 0pcdbeep(50)cardidhex = ""For i = 0 To 6cardidhex = cardidhex + Strings.Right("00" + Hex(mypiccserial(i)), 2)NextTextBox8.Text = cardidhexlcddispfull("写卡成功! ")MsgBox("写卡成功!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "提示")Case 8lcddispfull("请将卡放在感应区! ")MsgBox("请将卡放在感应区!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 12lcddispfull("写块" + Convert.ToString(i) + "时失败,卡密码错误! ")MsgBox("写块" + Convert.ToString(i) + "时失败,卡密码错误!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 14lcddispfull("写块" + Convert.ToString(i) + "时失败,可能需要验证密码或页已经锁定! ")MsgBox("写块" + Convert.ToString(i) + "时失败,可能需要验证密码或页已经锁定!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case 23MsgBox("请连上USB读写器!", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")Case Elselcddispfull("写块" + Convert.ToString(i) + "时操作异常,代码:" + Convert.ToString(status) + " ")MsgBox("写块" + Convert.ToString(i) + "时操作异常,返回代码:" + Convert.ToString(status), MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "提示")End SelectEnd Sub
相关文章:

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...