Zum Fußzeileninhalt springen
IRONBARCODE VERWENDEN

Wie man einen USB-Barcode-Scanner in C# erstellt

Wenn Sie jemals im Einzelhandel, in der Lagerhaltung oder im Bestandsmanagement gearbeitet haben, wissen Sie, wie entscheidend Barcode-Scanner für den reibungslosen Ablauf der Betriebsabläufe sind. Mit der IronBarcode-Bibliothek und ihren leistungsstarken Validierungs- und Generierungsmöglichkeiten können Sie eine robuste C# USB-Barcodescanner-Anwendung erstellen, die über die einfache Erfassung von Barcodedaten hinausgeht. Es kann auch Ihre Barcodedaten validieren, strukturierte Informationen extrahieren und sogar während des Betriebs neue Barcodes generieren.

In diesem Leitfaden zeige ich Ihnen, wie Sie USB-Barcodescanner mit IronBarcode in C# integrieren. Am Ende haben Sie eine robuste Echtzeit-Scannlösung, die sowohl mit .NET Framework als auch mit .NET-Anwendungen funktioniert und Ihnen hilft, Bestände effizienter zu verwalten und Gegenstände zu verfolgen.

Wie funktionieren USB-Barcodescanner mit IronBarcode?

Die meisten USB-Barcodescanner arbeiten im HID (Human Interface Device) Tastatur-Modus, was bedeutet, dass sie die Tastatureingabe emulieren, sodass Benutzer Codes mühelos scannen können. Wenn Sie einen Barcode scannen, "tippt" der Scanner die Barcodedaten gefolgt von einer Enter-Taste. IronBarcode enhances this raw input by validating formats, extracting structured data, and enabling immediate Barcode-Generierung als Reaktion auf Scans ermöglicht.

// Capture scanner input and validate with IronBarcode
private void txtBarcode_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
        string scannedData = txtBarcode.Text;
        var results = BarcodeReader.Read(GenerateBarcodeImage(scannedData));
        if (results.Any())
        {
            ProcessValidBarcode(results.First());
        }
    }
}
// Capture scanner input and validate with IronBarcode
private void txtBarcode_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
        string scannedData = txtBarcode.Text;
        var results = BarcodeReader.Read(GenerateBarcodeImage(scannedData));
        if (results.Any())
        {
            ProcessValidBarcode(results.First());
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dieser Code erfasst Scanner-Eingaben über ein TextBox und verwendet IronBarcode, um die gescannten Daten zu validieren, indem versucht wird, sie als gültiges Barcode-Format zu lesen, was Ihnen die vollständige Kontrolle über die Eingabe gibt.

Wie richtet man Ihr Barcode-Scanner-Projekt ein?

Starten Sie mit der Erstellung einer Windows Forms-Anwendung in Microsoft Visual Studio und stellen Sie sicher, dass Sie die IronBarcode-Bibliothek herunterladen. Installieren Sie dann die IronBarcode-Bibliothek über die NuGet-Paket-Manager-Konsole, indem Sie diesen Befehl ausführen:

Install-Package BarCode

Fügen Sie diese wesentlichen Namespaces in Ihr Formular ein, zusammen mit den in der Dokumentation bereitgestellten Beispielen.

using IronBarCode;
using System.Drawing;
using System.Linq;
using IronBarCode;
using System.Drawing;
using System.Linq;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Erstellen Sie ein einfaches Formular mit einem einzelnen Textfeld zur Erfassung von Scanner-Eingaben, wobei Sie sicherstellen, dass die Porteinstellungen richtig konfiguriert sind. Stellen Sie das TextBox so ein, dass es beim Laden des Formulars automatisch den Fokus erhält, damit Ihre USB-Scanner-Daten immer erfasst werden.

Wie validiert man gescannte Barcodes mit IronBarcode?

IronBarcode glänzt bei der Validierung und Analyse von Barcodedaten. So überprüfen Sie die gescannte Eingabe und extrahieren sinnvolle Informationen:

private void ProcessScannedBarcode(string scannedText)
{
    // Generate temporary barcode image from scanned text
    var barcode = BarcodeWriter.CreateBarcode(scannedText, BarcodeEncoding.Code128);
    // Validate by reading back
    var validationResults = BarcodeReader.Read(barcode.ToBitmap());
    if (validationResults.Any())
    {
        var validated = validationResults.First();
        // Extract barcode type and value
        string format = validated.BarcodeType.ToString();
        string value = validated.Value;
        lblStatus.Text = $"Valid {format}: {value}";
        // Process based on format
        if (format.Contains("EAN") || format.Contains("UPC"))
        {
            // Product barcode - lookup item
            ProcessProductCode(value);
        }
    }
    else
    {
        lblStatus.Text = "Invalid barcode format";
    }
}
private void ProcessScannedBarcode(string scannedText)
{
    // Generate temporary barcode image from scanned text
    var barcode = BarcodeWriter.CreateBarcode(scannedText, BarcodeEncoding.Code128);
    // Validate by reading back
    var validationResults = BarcodeReader.Read(barcode.ToBitmap());
    if (validationResults.Any())
    {
        var validated = validationResults.First();
        // Extract barcode type and value
        string format = validated.BarcodeType.ToString();
        string value = validated.Value;
        lblStatus.Text = $"Valid {format}: {value}";
        // Process based on format
        if (format.Contains("EAN") || format.Contains("UPC"))
        {
            // Product barcode - lookup item
            ProcessProductCode(value);
        }
    }
    else
    {
        lblStatus.Text = "Invalid barcode format";
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Diese Methode validiert die Eingabe des gescannten Codes, indem ein Barcode erstellt und mit IronBarcode zurückgelesen wird, was als zuverlässige Referenz dient. Es identifiziert das Barcode-Format (z.B. Code 128, EAN, UPC) und verarbeitet dementsprechend. IronBarcode unterstützt zahlreiche Formate, einschließlich QR-Codes, Data Matrix, PDF417 und aller gängigen 1D-Barcodes.

Wie generiert man Antwort-Barcodes aus gescannten Eingaben?

Verwandeln Sie gescannte Daten in neue Barcodes für Etikettierung, Nachverfolgung oder Bestandsführung:

private void GenerateInventoryLabel(string productCode)
        {
            // Create inventory code from scanned product
            string inventoryCode = $"INV-{DateTime.Now:yyyyMMdd}-{productCode}";
            // Generate new barcode with custom styling
            var inventoryBarcode = BarcodeWriter.CreateBarcode(inventoryCode, BarcodeEncoding.Code128);
            inventoryBarcode.AddAnnotationTextAboveBarcode(inventoryCode);
            inventoryBarcode.ResizeTo(300, 100);
            // Ensure labels folder exists
            System.IO.Directory.CreateDirectory("labels");
            // Save barcode PNG for printing
            string filePath = $"labels\\{inventoryCode}.png";
            inventoryBarcode.SaveAsPng(filePath);
            // Load a copy into the PictureBox
            if (pictureBoxReceipt.Image != null)
                pictureBoxReceipt.Image.Dispose();
            pictureBoxReceipt.Image = new System.Drawing.Bitmap(filePath);
        }
        // Alternative: Generate QR code for mobile scanning
        private void CreateQRResponse(string data)
        {
            var qrCode = QRCodeWriter.CreateQrCode(data);
            qrCode.ResizeTo(200, 200);
            System.IO.Directory.CreateDirectory("labels");
            string filePath = $"labels\\QR_{DateTime.Now:yyyyMMddHHmmss}.png";
            qrCode.SaveAsPng(filePath);
            if (pictureBoxQR.Image != null)
                pictureBoxQR.Image.Dispose();
            pictureBoxQR.Image = new System.Drawing.Bitmap(filePath);
        }
private void GenerateInventoryLabel(string productCode)
        {
            // Create inventory code from scanned product
            string inventoryCode = $"INV-{DateTime.Now:yyyyMMdd}-{productCode}";
            // Generate new barcode with custom styling
            var inventoryBarcode = BarcodeWriter.CreateBarcode(inventoryCode, BarcodeEncoding.Code128);
            inventoryBarcode.AddAnnotationTextAboveBarcode(inventoryCode);
            inventoryBarcode.ResizeTo(300, 100);
            // Ensure labels folder exists
            System.IO.Directory.CreateDirectory("labels");
            // Save barcode PNG for printing
            string filePath = $"labels\\{inventoryCode}.png";
            inventoryBarcode.SaveAsPng(filePath);
            // Load a copy into the PictureBox
            if (pictureBoxReceipt.Image != null)
                pictureBoxReceipt.Image.Dispose();
            pictureBoxReceipt.Image = new System.Drawing.Bitmap(filePath);
        }
        // Alternative: Generate QR code for mobile scanning
        private void CreateQRResponse(string data)
        {
            var qrCode = QRCodeWriter.CreateQrCode(data);
            qrCode.ResizeTo(200, 200);
            System.IO.Directory.CreateDirectory("labels");
            string filePath = $"labels\\QR_{DateTime.Now:yyyyMMddHHmmss}.png";
            qrCode.SaveAsPng(filePath);
            if (pictureBoxQR.Image != null)
                pictureBoxQR.Image.Dispose();
            pictureBoxQR.Image = new System.Drawing.Bitmap(filePath);
        }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Diese Methoden demonstrieren die Generierungsfähigkeiten von IronBarcode und erstellen formatierte Barcodes mit Anmerkungen und benutzerdefinierter Größe. Die QR-Code-Generierung zeigt IronBarcodes Unterstützung für 2D-Formate.

Wie erstellt man einen C# USB-Barcodescanner: Abbildung 2

Wie erstellt man eine vollständige Barcodescanner-Anwendung?

Hier ist ein komplettes Beispiel, das Scannen, Validierung und Generierung kombiniert:

using IronBarCode;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UsbBarcodeScanner
{
    public partial class InventoryScanner : Form
    {
        private List<string> scannedItems = new List<string>();
        public InventoryScanner()
        {
            InitializeComponent();
            // Wire the KeyDown event handler for scanner input
        txtScanner.KeyDown += txtScanner_KeyDown;
            // Focus the scanner TextBox when form loads
            this.Load += (s, e) => txtScanner.Focus();
        }
        private void txtScanner_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                e.SuppressKeyPress = true; // Prevents ding or extra chars
                string input = txtScanner.Text.Trim();
                if (string.IsNullOrEmpty(input))
                {
                    lblStatus.Text = "Please enter a barcode";
                    return;
                }
                try
                {
                    // Generate barcode (Code128)
                    var testBarcode = BarcodeWriter.CreateBarcode(input, BarcodeEncoding.Code128);
                    // Add to inventory
                    scannedItems.Add(input);
                    listBoxInventory.Items.Add($"{DateTime.Now:HH:mm:ss} - {input}");
                    // Generate receipt barcode
                    GenerateReceipt();
                    lblStatus.Text = "Item added successfully";
                }
                catch (Exception ex)
                {
                    lblStatus.Text = $"Error: {ex.Message}";
                    // Fallback: Try IronBarcode's image or PDF scanning
                    try
                    {
                        string backupFile = "backup.pdf"; // path to backup PDF
                        if (File.Exists(backupFile))
                        {
                            var results = BarcodeReader.ReadPdf(backupFile);
                            if (results.Any())
                            {
                                var first = results.First();
                                scannedItems.Add(first.Value);
                                listBoxInventory.Items.Add($"{DateTime.Now:HH:mm:ss} - {first.Value}");
                                GenerateReceipt();
                                lblStatus.Text = "Item added via PDF fallback";
                            }
                            else
                            {
                                lblStatus.Text += " (No barcodes found in backup PDF)";
                            }
                        }
                        else
                        {
                            lblStatus.Text += " (Backup PDF not found)";
                        }
                    }
                    catch (Exception fallbackEx)
                    {
                        lblStatus.Text += $" (Fallback failed: {fallbackEx.Message})";
                    }
                }
            }
            txtScanner.Clear();
            txtScanner.Focus();
        }
        private void GenerateReceipt()
        {
            string receiptCode = $"RCP{scannedItems.Count:D5}";
            var receipt = BarcodeWriter.CreateBarcode(receiptCode, BarcodeEncoding.Code93);
            receipt.AddAnnotationTextBelowBarcode($"Items: {scannedItems.Count}");
            // Ensure labels folder exists
            Directory.CreateDirectory("labels");
            string filePath = $"labels\\{receiptCode}.png";
            // Save barcode to file
            receipt.SaveAsPng(filePath);
            // Load into PictureBox safely
            if (pictureBoxReceipt.Image != null)
                pictureBoxReceipt.Image.Dispose();
            pictureBoxReceipt.Image = new Bitmap(filePath);
        }
    }
}
using IronBarCode;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UsbBarcodeScanner
{
    public partial class InventoryScanner : Form
    {
        private List<string> scannedItems = new List<string>();
        public InventoryScanner()
        {
            InitializeComponent();
            // Wire the KeyDown event handler for scanner input
        txtScanner.KeyDown += txtScanner_KeyDown;
            // Focus the scanner TextBox when form loads
            this.Load += (s, e) => txtScanner.Focus();
        }
        private void txtScanner_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                e.SuppressKeyPress = true; // Prevents ding or extra chars
                string input = txtScanner.Text.Trim();
                if (string.IsNullOrEmpty(input))
                {
                    lblStatus.Text = "Please enter a barcode";
                    return;
                }
                try
                {
                    // Generate barcode (Code128)
                    var testBarcode = BarcodeWriter.CreateBarcode(input, BarcodeEncoding.Code128);
                    // Add to inventory
                    scannedItems.Add(input);
                    listBoxInventory.Items.Add($"{DateTime.Now:HH:mm:ss} - {input}");
                    // Generate receipt barcode
                    GenerateReceipt();
                    lblStatus.Text = "Item added successfully";
                }
                catch (Exception ex)
                {
                    lblStatus.Text = $"Error: {ex.Message}";
                    // Fallback: Try IronBarcode's image or PDF scanning
                    try
                    {
                        string backupFile = "backup.pdf"; // path to backup PDF
                        if (File.Exists(backupFile))
                        {
                            var results = BarcodeReader.ReadPdf(backupFile);
                            if (results.Any())
                            {
                                var first = results.First();
                                scannedItems.Add(first.Value);
                                listBoxInventory.Items.Add($"{DateTime.Now:HH:mm:ss} - {first.Value}");
                                GenerateReceipt();
                                lblStatus.Text = "Item added via PDF fallback";
                            }
                            else
                            {
                                lblStatus.Text += " (No barcodes found in backup PDF)";
                            }
                        }
                        else
                        {
                            lblStatus.Text += " (Backup PDF not found)";
                        }
                    }
                    catch (Exception fallbackEx)
                    {
                        lblStatus.Text += $" (Fallback failed: {fallbackEx.Message})";
                    }
                }
            }
            txtScanner.Clear();
            txtScanner.Focus();
        }
        private void GenerateReceipt()
        {
            string receiptCode = $"RCP{scannedItems.Count:D5}";
            var receipt = BarcodeWriter.CreateBarcode(receiptCode, BarcodeEncoding.Code93);
            receipt.AddAnnotationTextBelowBarcode($"Items: {scannedItems.Count}");
            // Ensure labels folder exists
            Directory.CreateDirectory("labels");
            string filePath = $"labels\\{receiptCode}.png";
            // Save barcode to file
            receipt.SaveAsPng(filePath);
            // Load into PictureBox safely
            if (pictureBoxReceipt.Image != null)
                pictureBoxReceipt.Image.Dispose();
            pictureBoxReceipt.Image = new Bitmap(filePath);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Diese vollständige Scanner-Anwendung erfasst mühelos Eingaben von Ihrem USB-Barcodescanner, validiert jeden Eintrag mit IronBarcode und führt eine Echtzeit-Inventarliste, die es Ihnen ermöglicht, Genauigkeit in Ihren Daten zu beanspruchen. Es erzeugt automatisch Quittungs-Barcodes für jeden gescannten Artikel und bietet Ihnen sofortiges visuelles Feedback. Als Sicherheitsnetz kann IronBarcode Barcodes aus PDFs lesen, falls der Hardware-Scanner ausfällt. For advanced scenarios or troubleshooting, explore community discussions on Stack Overflow or dive into Microsoft’s HID device documentation.

Wie erstellt man einen C# USB-Barcodescanner: Abbildung 3 - Ausgabe der vollständigen Scanner-Anwendung mit Quittungsbarcode

Best Practices für Fehlerbehandlung

Beim Arbeiten mit USB-Scannern und IronBarcode:

  • Ungültiges Format: Fangen Sie Ausnahmen ab, wenn BarcodeWriter auf nicht unterstützte Daten stößt
  • Scanner-Trennung: Implementieren Sie die Fokusverwaltung für das TextBox, um die Entfernung des Scanners zu handhaben
  • Datenvalidierung: Verwenden Sie IronBarcodes formatspezifische Kodierungen, um die Datenkompatibilität sicherzustellen
  • Generierungsfehler: Umwickeln Sie die Barcode-Generierung mit try-catch Blöcken
  • Timeout-Handhabung: Erwägen Sie die Implementierung von Tastenanschlag-Zeitmessung, um Scanner- von Tastatureingaben zu unterscheiden

Abschluss

IronBarcode verwandelt einfaches USB-Barcodescannen in intelligente Datenverarbeitungsanwendungen, die Daten effizient filtern und verwalten. Durch die Kombination von Hardware-Scanner-Eingaben mit den Validierungs-, Generierungs- und Formatkonvertierungsmöglichkeiten von IronBarcode können Sie robuste Scanlösungen für jede Branche erstellen. Müssen Sie große Scanvolumen handhaben? Berücksichtigen Sie die Lizenzierungsoptionen, die am besten zu Ihren Bereitstellungsanforderungen passen.

Starten Sie Ihre kostenlose Testversion, um professionelles Barcodescanning in Ihren C#-Anwendungen heute zu implementieren.

Häufig gestellte Fragen

Was ist IronBarcode und wie hängt es mit USB-Barcodescannern zusammen?

IronBarcode ist eine Bibliothek, die es Entwicklern ermöglicht, robuste C#-Anwendungen für USB-Barcodescanning zu erstellen. Sie bietet Funktionen wie Barcode-Validierung, Datenextraktion und Barcode-Generierung.

Kann IronBarcode Barcodedaten von einem USB-Scanner validieren?

Ja, IronBarcode kann von einem USB-Scanner erfasste Barcodedaten validieren und so die Datenintegrität und -genauigkeit in Ihren C#-Anwendungen sicherstellen.

Wie behandelt IronBarcode die Barcode-Generierung?

IronBarcode kann neue Barcodes "on-the-fly" generieren und ermöglicht es Entwicklern, Barcodes einfach innerhalb ihrer C#-Anwendungen zu erstellen und zu drucken.

Gibt es eine Unterstützung für die Fehlerbehandlung in IronBarcode für USB-Barcodescanning?

Ja, IronBarcode beinhaltet eine umfassende Fehlerbehandlung, um häufige Probleme zu bewältigen, die während des USB-Barcodescannings und der -verarbeitung auftreten können.

Welche Arten von Barcodes können mit IronBarcode gescannt werden?

IronBarcode unterstützt das Scannen einer Vielzahl von Barcode-Symbologien, einschließlich QR-Codes, UPC, Code 39 und mehr, was es vielseitig für verschiedene Anwendungen macht.

Kann IronBarcode strukturierte Informationen aus gescannten Barcodes extrahieren?

Ja, IronBarcode kann strukturierte Informationen aus gescannten Barcodes extrahieren, was eine effiziente Datenverarbeitung und -verwaltung unterstützt.

Wie kann ich mit dem Aufbau einer USB-Barcodescanner-Anwendung in C# beginnen?

Um mit dem Aufbau einer USB-Barcodescanner-Anwendung in C# zu beginnen, können Sie IronBarcode zusammen mit den bereitgestellten Codebeispielen und der Dokumentation verwenden, um Ihren Entwicklungsprozess zu leiten.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen