Private Sub TagTech_Connected (Success As Boolean)
Log($"Connected: ${Success}"$)
sector=txtSector.Text
If kA0.Checked Then
key(0)=0xA0
key(1)=0xA1
key(2)=0xA2
key(3)=0xA3
key(4)=0xA4
key(5)=0xA5
else if kFF.Checked Then
key(0)=0xFF
key(1)=0xFF
key(2)=0xFF
key(3)=0xFF
key(4)=0xFF
key(5)=0xFF
End If
If Success = False Then
ToastMessageShow("Error connecting to tag", True)
Log(LastException)
Else
Try
If ka.Checked Then
TagTech.RunAsync("Authenticate", "authenticateSectorWithKeyA", Array(sector, key), 0)
Else
TagTech.RunAsync("Authenticate", "authenticateSectorWithKeyB", Array(sector, key), 0)
End If
' Authenticate
Catch
ToastMessageShow("Ath1:"&LastException,False)
End Try
End If
End Sub
Private Sub Authenticate_RunAsync (Flag As Int, Success As Boolean, Result As Object)
Log($"Finished trying to auth. Success=${Success}, Flag=${Flag}"$)
If Success Then
Dim blockIndex As Int=txtBLK.Text
' TagTech.RunAsync("blockToSector","blockToSector",Array(sector),0)
Try
Dim message As String
message="pedramghaneipou"
If rdbWrite.Checked Then
TagTech.RunAsync("writeBlock", "writeBlock", Array(blockIndex,message), 0)
Else
TagTech.RunAsync("readBlock","readBlock", Array(blockIndex), 0)
End If
Catch
ToastMessageShow("Read2:"&LastException,False)
End Try
Else
ListView1.AddSingleLine("Read error flag :"& Flag)
End If
End Sub
Private Sub writeBlock_RunAsync (Flag As Int, Success As Boolean, Result As Object)
Log($"Writing completed. Success=${Success}, Flag=${Flag}"$)
If Success Then
ListView1.AddSingleLine("Write ok:"&Result)
Else
ListView1.AddSingleLine("Write error:"&Result)
End If
End Sub
Private Sub readBlock_RunAsync(Flag As Int, Success As Boolean, Result As Object)
Log($"Finished trying to read. Success=${Success}, Flag=${Flag}"$)
Log(LastException)
If Success Then
If Result<>Null Then
Dim myBlock() As Byte = Result
ListView1.AddSingleLine(txtSector.Text & ">"&txtBLK.Text&": "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(0))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(1))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(2))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(3))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(4))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(5))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(6))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(7))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(8))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(9))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(10))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(11))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(12))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(13))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(14))),2)&" "& _
Right("0" & Bit.ToHexString(ToUnsigned(myBlock(15))),2)&" " _
)
TagTech.Close
End If
Else
ListView1.AddSingleLine("cannot read")
End If
End Sub
Sub Activity_Pause (UserClosed As Boolean)
nfc.DisableForegroundDispatch
End Sub
Sub ToUnsigned(b As Byte) As Int
Dim x As String
x= Bit.And(0xFF, b)
Return x
End Sub
Sub Right(Text As String, Length As Int) As String
If Length>Text.Length Then Length=Text.Length
Return Text.SubString(Text.Length-Length)
End Sub