2017-03-13 5 views
1

Ich habe gerade einen USB RFID Reader gekauft und möchte jetzt lesen, schreiben und prüfen, ob sich gerade eine Karte auf dem Reader befindet oder nicht. Also habe ich hier gesucht und den Code unten gefunden. Die Beschreibung ist so ziemlich alles, was ich brauche:So lesen Sie von einem USB RFID Reader mit C#

  • öffnet ein USB-Gerät von Hersteller- und Produkt-ID.

  • Öffnet eine UsbEndpointReader-Klasse zum Lesen.

  • Liest die USB-Geräteausgabe von Ep01 ein und zeigt sie an, bis 5 Sekunden lang keine Daten empfangen werden.

Aber ich verstehe nicht, wo "USBDevice", "USBDeviceFinder" usw. kommen aus? Es ist der einzige Code, den der Benutzer gepostet hat. ich es in meinem Visual Studio kopiert und wie es zum Beispiel erwartet, sagt „Der Name‚USBDevice‘existiert nicht im aktuellen Kontext“

Kann jemand helfen, wie dieses Problem beheben?

Btw. dies ist die ursprüngliche Frage und die Antworten: Link to the Original Post

using System; 
using System.Text; 
using LibUsbDotNet; 
using LibUsbDotNet.Main; 

namespace Examples 
{ 
internal class ReadPolling 
{ 
    public static UsbDevice MyUsbDevice; 
#region SET YOUR USB Vendor and Product ID! 

public static UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(1234, 1); 

#endregion 

public static void Main(string[] args) 
{ 
    ErrorCode ec = ErrorCode.None; 

    try 
    { 
     // Find and open the usb device. 
     MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); 

     // If the device is open and ready 
     if (MyUsbDevice == null) throw new Exception("Device Not Found."); 

     // If this is a "whole" usb device (libusb-win32, linux libusb-1.0) 
     // it exposes an IUsbDevice interface. If not (WinUSB) the 
     // 'wholeUsbDevice' variable will be null indicating this is 
     // an interface of a device; it does not require or support 
     // configuration and interface selection. 
     IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice; 
     if (!ReferenceEquals(wholeUsbDevice, null)) 
     { 
      // This is a "whole" USB device. Before it can be used, 
      // the desired configuration and interface must be selected. 

      // Select config #1 
      wholeUsbDevice.SetConfiguration(1); 

      // Claim interface #0. 
      wholeUsbDevice.ClaimInterface(0); 
     } 

     // open read endpoint 1. 
     UsbEndpointReader reader = MyUsbDevice.OpenEndpointReader(ReadEndpointID.Ep01); 


     byte[] readBuffer = new byte[1024]; 
     while (ec == ErrorCode.None) 
     { 
      int bytesRead; 

      // If the device hasn't sent data in the last 5 seconds, 
      // a timeout error (ec = IoTimedOut) will occur. 
      ec = reader.Read(readBuffer, 5000, out bytesRead); 

      if (bytesRead == 0) throw new Exception(string.Format("{0}:No more bytes!", ec)); 
      Console.WriteLine("{0} bytes read", bytesRead); 

      // Write that output to the console. 
      Console.Write(Encoding.Default.GetString(readBuffer, 0, bytesRead)); 
     } 

     Console.WriteLine("\r\nDone!\r\n"); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(); 
     Console.WriteLine((ec != ErrorCode.None ? ec + ":" : String.Empty) + ex.Message); 
    } 
    finally 
    { 
     if (MyUsbDevice != null) 
     { 
      if (MyUsbDevice.IsOpen) 
      { 
       // If this is a "whole" usb device (libusb-win32, linux libusb-1.0) 
       // it exposes an IUsbDevice interface. If not (WinUSB) the 
       // 'wholeUsbDevice' variable will be null indicating this is 
       // an interface of a device; it does not require or support 
       // configuration and interface selection. 
       IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice; 
       if (!ReferenceEquals(wholeUsbDevice, null)) 
       { 
        // Release interface #0. 
        wholeUsbDevice.ReleaseInterface(0); 
       } 

       MyUsbDevice.Close(); 
      } 
      MyUsbDevice = null; 

      // Free usb resources 
      UsbDevice.Exit(); 

     } 

     // Wait for user input.. 
     Console.ReadKey(); 
     } 
    } 
    } 
} 

Antwort

1

Es ist höchstwahrscheinlich im Paket LibUsbDotNet. Wenn Sie Visual Studio verwenden, öffnen Sie Extras> NuGet-Paket-Manager> NuGet-Pakete für Lösung verwalten ..., navigieren Sie zu Durchsuchen und fügen Sie es in die Suchleiste ein. Fügen Sie es Ihrem Projekt hinzu und jetzt sollte es gut gehen.

Verwandte Themen