RFID Reader Acr122u, Problem beim Umschreiben.

  • VB.NET
  • .NET 4.0

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    RFID Reader Acr122u, Problem beim Umschreiben.

    Moin Moin zusammen,

    Ich bin etwas zu .. :S .. um das C# Konsolenanwenungsdingsbums in ein Win Forms VB.Net um zu basteln.

    Hoffe ihr könnt mir da etwas Helfen.

    Ziel: Auslesen von NFC Tags.

    Betrieb via USB

    Orginal Script

    C#-Quellcode

    1. using Sydesoft.NfcDevice;
    2. using System;
    3. using System.Collections.Generic;
    4. using System.Linq;
    5. using System.Text;
    6. using System.Threading.Tasks;
    7. namespace ConsoleApp1
    8. {
    9. class Program
    10. {
    11. private static Sydesoft.NfcDevice.ACR122U acr122u = new ACR122U();
    12. static void Main(string[] args)
    13. {
    14. acr122u.Init(false, 50, 4, 4, 200); // NTAG213
    15. acr122u.CardInserted += Acr122u_CardInserted;
    16. acr122u.CardRemoved += Acr122u_CardRemoved;
    17. Console.ReadLine();
    18. }
    19. private static void Acr122u_CardInserted(PCSC.ICardReader reader)
    20. {
    21. Console.WriteLine("NFC Transponder wurde aufgelegt.");
    22. Console.WriteLine("Unique ID: " + BitConverter.ToString(acr122u.GetUID(reader)).Replace("-", ""));
    23. string data = "Hello World";
    24. Console.WriteLine("Daten auf NFC Transponder schreiben: " + data);
    25. bool ret = acr122u.WriteData(reader, Encoding.UTF8.GetBytes(data));
    26. Console.WriteLine("Schreibvorgang: " + (ret ? "erfolgreich" : "fehlgeschlagen"));
    27. Console.WriteLine("Daten von NFC Transponder auslesen: " + Encoding.UTF8.GetString(acr122u.ReadData(reader)));
    28. }
    29. private static void Acr122u_CardRemoved()
    30. {
    31. Console.WriteLine("NFC Transponder wurde entfernt.");
    32. }
    33. }




    Die Imports habe ich bereits auch das NFC Nuget Packet.
    Imports Sydesoft.NfcDevice

    Nuget: NFC-ACR122U

    Ich weis das es da bessere Reader gibt aber das war ein Geschenk ^.^...

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. acr122u.Init(False, 50, 4, 4, 200)
    3. AddHandler acr122u.CardInserted, AddressOf Acr122u_CardInserted
    4. AddHandler acr122u.CardRemoved, AddressOf Acr122u_CardRemoved
    5. Console.ReadLine()
    6. End Sub
    7. Private Shared Sub Acr122u_CardInserted(ByVal reader As PCSC.ICardReader)
    8. ' Dim rtb11 As RichTextBox = Form1.rtb1
    9. ' rtb11.AppendText(Environment.NewLine & "NFC Transponder wurde aufgelegt.")
    10. Console.WriteLine("NFC Transponder wurde aufgelegt.")
    11. Console.WriteLine("Unique ID: " & BitConverter.ToString(acr122u.GetUID(reader)).Replace("-", ""))
    12. Dim data As String = "Hello World"
    13. Console.WriteLine("Daten auf NFC Transponder schreiben: " & data)
    14. Dim ret As Boolean = acr122u.WriteData(reader, Encoding.UTF8.GetBytes(data))
    15. Console.WriteLine("Schreibvorgang: " & (If(ret, "erfolgreich", "fehlgeschlagen")))
    16. Console.WriteLine("Daten von NFC Transponder auslesen: " & Encoding.UTF8.GetString(acr122u.ReadData(reader)))
    17. End Sub
    18. Private Shared Sub Acr122u_CardRemoved()
    19. Console.WriteLine("NFC Transponder wurde entfernt.")
    20. End Sub
    21. End Class


    Währe schön wenn mir da jemand helfen könnte.

    Lg Teng
    Dieser Fehler kommt dann -.- *


    System.InvalidOperationException
    HResult=0x80131509
    Nachricht = Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Der Typeninitialisierer für "Software_V1.Form1" hat eine Ausnahme verursacht..
    Quelle = Software V1
    Stapelüberwachung:
    at Software_V1.My.MyProject.MyForms.Create__Instance__[T](T Instance) in :line 190
    at Software_V1.My.MyProject.MyForms.get_Form1()
    at Software_V1.My.MyApplication.OnCreateMainForm() in C:\Users\Teng\source\repos\Software V1\Software V1\My Project\Application.Designer.vb:line 35
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    at Software_V1.My.MyApplication.Main(String[] Args) in :line 81

    Innere Ausnahme 1:
    TypeInitializationException: Der Typeninitialisierer für "Software_V1.Form1" hat eine Ausnahme verursacht.

    Innere Ausnahme 2:
    BadImageFormatException: Die Datei oder Assembly "Sydesoft.NfcDevice.ACR122U, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.



    VB.NET-Quellcode

    1. Imports CefSharp.WinForms
    2. Imports CefSharp
    3. Imports System.Net
    4. Imports System.IO
    5. Imports System.Threading
    6. Imports System.IO.Ports
    7. Imports Sydesoft.NfcDevice
    8. Imports System
    9. Imports System.Collections.Generic
    10. Imports System.Linq
    11. Imports System.Text
    12. Imports System.Threading.Tasks
    13. Public Class Form1
    14. Private Shared acr122u As Sydesoft.NfcDevice.ACR122U = New ACR122U()
    15. Private WithEvents browser As ChromiumWebBrowser
    16. Private Sub ChromiumWebBrowser1_LoadingStateChanged(sender As Object, e As CefSharp.LoadingStateChangedEventArgs) Handles TheBrowser.LoadingStateChanged
    17. End Sub
    18. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    19. TheBrowser.Load("google.de")
    20. acr122u.Init(False, 50, 4, 4, 200)
    21. AddHandler acr122u.CardInserted, AddressOf Acr122u_CardInserted
    22. AddHandler acr122u.CardRemoved, AddressOf Acr122u_CardRemoved
    23. Console.ReadLine()
    24. End Sub
    25. Private Shared Sub Acr122u_CardInserted(ByVal reader As PCSC.ICardReader)
    26. ' Dim rtb11 As RichTextBox = Form1.rtb1
    27. ' rtb11.AppendText(Environment.NewLine & "NFC Transponder wurde aufgelegt.")
    28. Console.WriteLine("NFC Transponder wurde aufgelegt.")
    29. Console.WriteLine("Unique ID: " & BitConverter.ToString(acr122u.GetUID(reader)).Replace("-", ""))
    30. Dim data As String = "Hello World"
    31. Console.WriteLine("Daten auf NFC Transponder schreiben: " & data)
    32. Dim ret As Boolean = acr122u.WriteData(reader, Encoding.UTF8.GetBytes(data))
    33. Console.WriteLine("Schreibvorgang: " & (If(ret, "erfolgreich", "fehlgeschlagen")))
    34. Console.WriteLine("Daten von NFC Transponder auslesen: " & Encoding.UTF8.GetString(acr122u.ReadData(reader)))
    35. End Sub
    36. Private Shared Sub Acr122u_CardRemoved()
    37. Console.WriteLine("NFC Transponder wurde entfernt.")
    38. End Sub
    39. End Class
    @Tenglou Es kann sein, dass das vom Mischen von Console und WinForm herrührt.
    Ist das Console-Programm ordentlich gelaufen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Console.ReadLine() funktioniert in WinForm nicht.
    Am besten, Du machst Dir eine Form mit hinreichend vielen Button drauf.
    In die Handler von denen packst Du der Reihe nach rein, was nacheinander ablaufen muss.
    Die Form_Load lässt Du leer.
    Instanziierung der DLL(s) kannst Du in den Konstruktor packen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Selbst wenn ich mal den ganzen anderen *Müll* raus nehme -.- selbe Fehler

    1 Button zum Test
    Instanziierung der DLL(s) kannst Du in den Konstruktor packen. --- ähm ja ich weiß Grundlagen usw... wen sowas mit PHP ginge währe ich schon lange fertig ^^

    VB.NET-Quellcode

    1. Imports CefSharp.WinForms
    2. Imports CefSharp
    3. Imports System.Net
    4. Imports System.IO
    5. Imports System.Threading
    6. Imports System.IO.Ports
    7. Imports Sydesoft.NfcDevice
    8. Imports System
    9. Imports System.Collections.Generic
    10. Imports System.Linq
    11. Imports System.Text
    12. Imports System.Threading.Tasks
    13. Public Class Form1
    14. Private Shared acr122u As Sydesoft.NfcDevice.ACR122U = New ACR122U()
    15. Private WithEvents browser As ChromiumWebBrowser
    16. Private Sub ChromiumWebBrowser1_LoadingStateChanged(sender As Object, e As CefSharp.LoadingStateChangedEventArgs) Handles TheBrowser.LoadingStateChanged
    17. End Sub
    18. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    19. End Sub
    20. Private Shared Sub Acr122u_CardInserted(ByVal reader As PCSC.ICardReader)
    21. Dim rtb11 As RichTextBox = Form1.rtb1
    22. rtb11.AppendText(Environment.NewLine & "NFC Transponder wurde aufgelegt.")
    23. End Sub
    24. Private Shared Sub Acr122u_CardRemoved()
    25. Dim rtb11 As RichTextBox = Form1.rtb1
    26. rtb11.AppendText(Environment.NewLine & "NFC Transponder wurde entfernt.")
    27. End Sub
    28. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    29. acr122u.Init(False, 50, 4, 4, 200)
    30. AddHandler acr122u.CardInserted, AddressOf Acr122u_CardInserted
    31. AddHandler acr122u.CardRemoved, AddressOf Acr122u_CardRemoved
    32. End Sub
    33. End Class

    Tenglou schrieb:

    VB.NET-Quellcode

    1. Dim rtb11 As RichTextBox = Form1.rtb1
    Diese Zeilen kannst Du ersatzlos streichen, aber dann rtb1.AppendText(...)
    Verstehe dazu diesen Thread:
    Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Diese Zeilen kannst Du ersatzlos streichen, aber dann rtb1.AppendText(...)Verstehe dazu diesen Thread:

    Nö...
    BC30369: Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Tenglou“ ()

    So für den fall das es mal jemanden interessieren sollte, hier die Lösung:

    1x Button
    1x RichTextBox (rtb1)

    NFC-ACR122Uhttps://www.nuget.org/packages/NFC-ACR122U/

    VB.NET-Quellcode

    1. Imports System.Text
    2. Imports Sydesoft.NfcDevice
    3. Public Class Form1
    4. Private Shared acr122u As Sydesoft.NfcDevice.ACR122U = New Sydesoft.NfcDevice.ACR122U()
    5. Delegate Sub ZeigenDelegate(ByVal Text As String)
    6. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    7. acr122u.Init(False, 50, 4, 4, 200) 'NTAG213
    8. End Sub
    9. Private Sub Acr122u_CardInserted(ByVal reader As PCSC.ICardReader)
    10. Dim Params As String = "NFC Transponder wurde aufgelegt."
    11. Me.Invoke(New ZeigenDelegate(AddressOf Zeigen), Params)
    12. Dim txt As String = Encoding.Default.GetString(acr122u.ReadData(reader))
    13. Me.Invoke(New ZeigenDelegate(AddressOf Zeigen), txt)
    14. End Sub
    15. Private Sub Acr122u_WriteText(reader As PCSC.ICardReader)
    16. Dim Data As String = TextBox1.Text
    17. Dim result As Boolean = acr122u.WriteData(reader, Encoding.UTF8.GetBytes(Data))
    18. If result = True Then
    19. Dim istext As String = Encoding.UTF8.GetString(acr122u.ReadData(reader))
    20. Me.Invoke(New ZeigenDelegate(AddressOf Zeigen), "NFC wurde beschrieben mit" & istext)
    21. Else
    22. Me.Invoke(New ZeigenDelegate(AddressOf Zeigen), "Fehler NFC wurde nicht beschrieben")
    23. End If
    24. End Sub
    25. Private Sub Acr122u_CardRemoved()
    26. Dim Params As String = "NFC Transponder wurde entfernt."
    27. Me.Invoke(New ZeigenDelegate(AddressOf Zeigen), Params)
    28. End Sub
    29. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    30. Button2.Enabled = False
    31. AddHandler acr122u.CardInserted, AddressOf Acr122u_CardInserted
    32. AddHandler acr122u.CardRemoved, AddressOf Acr122u_CardRemoved
    33. End Sub
    34. Public Sub Zeigen(ByVal Text As String)
    35. rtb1.AppendText(vbNewLine & Text)
    36. End Sub
    37. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    38. Button1.Enabled = False
    39. AddHandler acr122u.CardInserted, AddressOf Acr122u_WriteText
    40. AddHandler acr122u.CardRemoved, AddressOf Acr122u_CardRemoved
    41. End Sub
    42. End Class


    Nicht Elegant aber Klappt, wenn ich Button 2 Klicke dann wird der Text der in der TextBox steht in den NFC tag geschrieben.

    Vielen dank an alle Helfer ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Tenglou“ ()

    Naifu schrieb:

    Wieso ist das denn eigentlich Shared?
    Das könnte die implizite VB.NET-VB6-Ranz Kompatibilitäts-Instanz sein.
    @Tenglou
    Was passiert (nicht), wenn Du die Änderung vornimmst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!