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

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84323.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84323.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84323.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL SERVER 數據庫遷移的三種方法!

要將SQL Server從研發環境的把數據庫結構(不含數據)遷移至生產環境,可通過以下幾種方法實現。以下是具體操作步驟及適用場景: ?? 一、使用SSMS圖形界面生成結構腳本(推薦新手) 通過SQL Server Management Studio的生成腳本向導,僅導出數據庫架構: ??連接測試庫??…

C# 快速檢測 PDF 是否加密,并驗證正確密碼

引言&#xff1a;為什么需要檢測PDF加密狀態&#xff1f; 在批量文檔處理系統&#xff08;如 OCR 文字識別、內容提取、格式轉換&#xff09;中&#xff0c;加密 PDF 無法直接操作。檢測加密狀態可提前篩選文件&#xff0c;避免流程因密碼驗證失敗而中斷。 本文使用 Free Spire…

(33)課54:3 張表的 join-on 連接舉例,多表查詢總結。數據庫編程補述及游標綜合例題。靜態 sqL與動態sqL(可帶參數)

&#xff08;112&#xff09;3 張表的 join-on 連接舉例 &#xff1a; &#xff08;113&#xff09; 多表查詢總結 &#xff1a; &#xff08;114&#xff09;數據庫編程補述 &#xff1a; 綜合例題 &#xff1a; 以上沒有動手練習&#xff0c;不知道這樣的語法是否…

再見 Navicat!一款開源的 Web 數據庫管理工具!

大家好&#xff0c;我是 Java陳序員。 在日常的開發工作中&#xff0c;常常需要與各種數據庫打交道。而為了提高工作效率&#xff0c;常常會使用一些可視化工具進行操作數據庫。 今天&#xff0c;給大家介紹一款開源的數據庫管理工具&#xff0c;無需下載安裝軟件&#xff0c…

OkHttp 中實現斷點續傳 demo

在 OkHttp 中實現斷點續傳主要通過以下步驟完成&#xff0c;核心是利用 HTTP 協議的 Range 請求頭指定下載范圍&#xff1a; 實現原理 Range 請求頭&#xff1a;向服務器請求文件的特定字節范圍&#xff08;如 Range: bytes1024-&#xff09; 本地文件記錄&#xff1a;保存已…

函數中的Callable

在編程中&#xff0c;?Callable&#xff08;可調用對象&#xff09;?? 是指任何可以通過 () 操作符調用的對象。在函數和類設計的上下文中&#xff0c;Callable 通常指代可以被調用的實體&#xff0c;例如函數、方法、Lambda表達式或實現了 __call__ 方法的對象。以下是詳細…

MySQL學習之觸發器

文章目錄 前言什么是觸發器&#xff08;Trigger&#xff09;&#xff1f;觸發器的特點 MySQL中觸發器的用法創建NEW 與 OLD舉例其他操作 注意事項后續內容參考目錄 前言 閱讀本文前請注意最后編輯時間&#xff0c;文章內容可能與目前最新的技術發展情況相去甚遠。歡迎各位評論…

AIGC 基礎篇 Python基礎 04 for循環與while循環

今天&#xff0c;我們來講Python里面的循環部分 1.for循環 for i in range(1,10,2):print(i) 這是一個簡單但是完整的for循環&#xff0c;里面包含了for循環的所有結構 首先注意格式是“for 變量 in range(取得到的起始值&#xff0c;取不到的終點值&#xff0c;步長)” …

安寶特方案丨XRSOP人員作業標準化管理平臺:AR智慧點檢驗收套件

在選煤廠、化工廠、鋼鐵廠等過程生產型企業&#xff0c;其生產設備的運行效率和非計劃停機對工業制造效益有較大影響。 隨著企業自動化和智能化建設的推進&#xff0c;需提前預防假檢、錯檢、漏檢&#xff0c;推動智慧生產運維系統數據的流動和現場賦能應用。同時&#xff0c;…

每日算法 -【Swift 算法】三數之和最接近目標值

?? Swift 實現:三數之和最接近目標值(3Sum Closest) ? 前言 在算法學習過程中,經典的“三數之和”系列題目是很多人通往進階路上的一道坎。今天我們來介紹其中一個非常實用的變種問題 —— 三數之和最接近目標值(3Sum Closest),并使用 Swift 實現一個高效的解法。 …

python打卡day50@浙大疏錦行

知識點回顧&#xff1a; resnet結構解析CBAM放置位置的思考針對預訓練模型的訓練策略 差異化學習率三階段微調 ps&#xff1a;今日的代碼訓練時長較長&#xff0c;3080ti大概需要40min的訓練時長 作業&#xff1a; 好好理解下resnet18的模型結構嘗試對vgg16cbam進行微調策略 R…

虛幻引擎5-Unreal Engine筆記之SET節點的輸出引腳獲取設置后的最新變量值

虛幻引擎5-Unreal Engine筆記之SET節點的輸出引腳獲取設置后的最新變量值 code review! 一個變量的“SET”節點 retrieve 是動詞&#xff0c;意思是“檢索、獲取、取回”。 retrieves 只是當主語是第三人稱單數&#xff08;比如 he、she、it 或單個人/物&#xff09;時使用的…

編譯原理實驗 之 TINY 解釋測試目標代碼

文章目錄 實驗任務1任務2 本次的實驗是在前三次TINYC的基礎上的一個測試&#xff0c;所以完成前三次的實驗是基礎 編譯原理 之 實驗一 編譯原理實驗 之 Tiny C語言編譯程序實驗 語法分析 編譯原理實驗 之 TINY 之 語義分析&#xff08;第二次作業 首先將新的文件復制到先前的…

CanFestival移植到STM32G4

文章目錄 一、準備工作二、軟件配置三、移植CanFestival參考 一、準備工作 1、獲取Canfestival源碼 2、Python下載 3、wxPython下載 4、CanFestival字典生成 5、安裝參考 Python2.7.15及wxPython2.8百度云盤下載地址&#xff1a;https://pan.baidu.com/s/1bRS403m4B31m4ovSJ-_…

iOS性能調優實戰:借助克魔(KeyMob)與常用工具深度洞察App瓶頸

在日常iOS開發過程中&#xff0c;性能問題往往是最令人頭疼的一類Bug。尤其是在App上線前的壓測階段或是處理用戶反饋的高發期&#xff0c;開發者往往需要面對卡頓、崩潰、能耗異常、日志混亂等一系列問題。這些問題表面上看似偶發&#xff0c;但背后往往隱藏著系統資源調度不當…

第十三章 RTC 實時時鐘

第十三章 RTC 實時時鐘 目錄 第十三章 RTC 實時時鐘 1 RTC簡介 1.1 主要特性 2 功能描述 2.1 概述 2.2 復位過程 2.3 讀RTC寄存器 2.4 配置RTC寄存器 2.5 RTC標志的設置 3 RTC寄存器描述 3.1 RTC控制寄存器高位(RTC_CRH) 3.2 RTC控制寄存器低位(RTC_CRL) 3.3 RTC預…

618來了,推薦京東云服務器

2核2G3M,49元/1年,348元/3年 2核4G5M,149元/1年,518元/3年 4核8G5M,368元/1年,1468元/3年 8核16G5M,1258元/1年,3498元/3年 8核32G10M,1498元/1年,4268元/3年 活動地址&#xff1a;https://3.cn/2hT-F6AX

數據庫邏輯刪除,唯一性約束究極解決方案

文章目錄 一、寫在前面二、解決方案1、業務邏輯層面控制2、物理刪除數據歸檔3、is_delete !0的都認為是刪除&#xff08;推薦&#xff09;4、MySQL 函數索引&#xff08;表達式索引&#xff09;&#xff08;需 MySQL 8.0&#xff09;&#xff08;推薦&#xff09;5、部分索引&a…

3-存儲系統

一-基本概念 二-主存儲器 三-主存儲器與CPU的連接 四-外部存儲器 五-高速緩沖存儲器 六-虛擬存儲器

華為0528筆試

第三題 題目 給定一個二維數組 mountainMap 表示一座山的地圖&#xff0c;數組中的每個元素 mountainMap[x][y] 代表坐標 (x, y) 處山的高度。登山員從山底出發&#xff0c;爬到山峰。 山底的含義&#xff1a;mountainMap中高度為0的坐標點。 山峰的含義&#xff1a;mountain…