Passer au contenu du pied de page
UTILISATION DE IRONBARCODE

Comment créer un scanner de code-barres USB en C#

Si vous avez déjà travaillé dans la vente au détail, l'entreposage ou la gestion des stocks, vous savez à quel point les scanners de codes-barres sont cruciaux pour faire fonctionner les opérations en douceur. Avec la bibliothèque IronBarcode et ses puissantes capacités de validation et de génération, vous pouvez créer une application C# de scanner USB de codes-barres robuste qui va au-delà de la simple capture de données de codes-barres. Elle peut également valider vos données de codes-barres, extraire des informations structurées et même générer de nouveaux codes-barres à la volée.

Dans ce guide, je vous montrerai comment intégrer des scanners USB de codes-barres avec IronBarcode en C#. À la fin, vous disposerez d'une solution de numérisation en temps réel robuste qui fonctionne à la fois avec .NET Framework et les applications .NET, vous aidant à gérer les stocks et à suivre les articles plus efficacement.

Comment les scanners USB de codes-barres fonctionnent-ils avec IronBarcode ?

La plupart des scanners USB de codes-barres fonctionnent en mode HID (Human Interface Device) clavier, ce qui signifie qu'ils émulent une saisie clavier, permettant aux utilisateurs de scanner les codes sans effort. Lorsque vous scannez un code-barres, le scanner "tape" les données du code-barres suivies d'une touche Entrée. IronBarcode enhances this raw input by validating formats, extracting structured data, and enabling immediate génération immédiate de codes-barres en réponse aux scans.

// 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

Ce code capture l'entrée du scanner par le biais d'une TextBox et utilise IronBarcode pour valider les données scannées en essayant de les lire comme un format de code-barres valide, vous donnant un contrôle complet sur l'entrée.

Comment configurer votre projet de scanner de codes-barres ?

Commencez par créer une application Windows Forms dans Microsoft Visual Studio et assurez-vous de télécharger la bibliothèque IronBarcode. Ensuite, installez la bibliothèque IronBarcode via la console du gestionnaire de packages NuGet en exécutant cette commande :

Install-Package BarCode

Ajoutez ces espaces de noms essentiels à votre formulaire, ainsi que les exemples fournis dans la documentation.

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

Créez un formulaire simple avec une seule zone de texte pour capturer l'entrée du scanner, en veillant à ce que la configuration du port soit correcte. Réglez la TextBox pour recevoir automatiquement le focus lorsque le formulaire se charge, en vous assurant que les données de votre scanner USB sont toujours capturées.

Comment valider les codes-barres scannés avec IronBarcode ?

IronBarcode excelle dans la validation et l'analyse des données de codes-barres. Voici comment vérifier l'entrée scannée et extraire des informations significatives :

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

Cette méthode valide l'entrée du code scanné en créant un code-barres et en le lisant à nouveau avec IronBarcode, ce qui sert de référence fiable. Elle identifie le format du code-barres (par exemple, Code 128, EAN, UPC) et traite en conséquence. IronBarcode prend en charge de nombreux formats, y compris les QR codes, Data Matrix, PDF417 et tous les codes-barres 1D courants.

Comment générer des codes-barres de réponse à partir des entrées scannées ?

Transformez les données scannées en nouveaux codes-barres pour l'étiquetage, le suivi ou la gestion des stocks :

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

Ces méthodes démontrent les capacités de génération d'IronBarcode, en créant des codes-barres formatés avec annotations et taille personnalisée. La génération de QR codes montre le support d'IronBarcode pour les formats 2D.

Comment créer un scanner USB de codes-barres C# : Figure 2

Comment construire une application complète de numérisation de codes-barres ?

Voici un exemple complet combinant la numérisation, la validation et la génération :

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

Cette application de scanner complète capture facilement l'entrée de votre scanner USB de codes-barres, valide chaque entrée à l'aide d'IronBarcode et maintient une liste d'inventaire en temps réel, vous permettant de revendiquer l'exactitude de vos données. Elle génère automatiquement des codes-barres de reçu pour chaque article scanné, vous offrant un retour visuel instantané. En tant que filet de sécurité, IronBarcode peut également lire les codes-barres à partir de fichiers PDF si le scanner matériel échoue. For advanced scenarios or troubleshooting, explore community discussions on Stack Overflow or dive into Microsoft’s HID device documentation.

Comment créer un scanner USB de codes-barres C# : Figure 3 - Sortie d'application scanner complète avec code-barres de reçu

Meilleures pratiques de gestion des erreurs

Lors du travail avec des scanners USB et IronBarcode :

  • Mauvais format : Attrapez les exceptions lorsque BarcodeWriter rencontre des données non prises en charge
  • Déconnexion du scanner : Implémentez la gestion du focus de la TextBox pour gérer la suppression du scanner
  • Validation des données : Utilisez les encodages spécifiques au format d'IronBarcode pour garantir la compatibilité des données
  • Échecs de génération : Enveloppez la génération de codes-barres dans des blocs try-catch
  • Gestion des délais d'attente : Envisagez de mettre en œuvre un timing de frappe pour différencier le scanner de la saisie clavier

Conclusion

IronBarcode transforme la simple numérisation USB de codes-barres en applications de traitement de données intelligentes qui filtrent et gèrent efficacement les données. En combinant l'entrée du scanner matériel avec les capacités de validation, génération et conversion de formats d'IronBarcode, vous pouvez créer des solutions de numérisation robustes pour n'importe quelle industrie. Besoin de gérer une numérisation à haut volume ? Envisagez les options de licence qui conviennent le mieux à vos besoins de déploiement.

Commencez votre essai gratuit pour implémenter la numérisation professionnelle de codes-barres dans vos applications C# dès aujourd'hui.

Questions Fréquemment Posées

Qu'est-ce qu'IronBarcode et comment est-il lié aux scanners de codes-barres USB ?

IronBarcode est une bibliothèque qui permet aux développeurs de créer des applications C# robustes pour le scan de codes-barres USB. Elle offre des fonctionnalités telles que la validation de codes-barres, l'extraction de données et la génération de codes-barres.

IronBarcode peut-il valider les données de codes-barres d'un scanner USB ?

Oui, IronBarcode peut valider les données de codes-barres capturées par un scanner USB, garantissant l'intégrité et la précision des données dans vos applications C#.

Comment IronBarcode gère-t-il la génération de codes-barres ?

IronBarcode peut générer de nouveaux codes-barres à la volée, permettant aux développeurs de créer et d'imprimer des codes-barres facilement au sein de leurs applications C#.

Y a-t-il un support de gestion des erreurs dans IronBarcode pour le scan de codes-barres USB ?

Oui, IronBarcode inclut une gestion complète des erreurs pour gérer les problèmes courants qui peuvent survenir durant le scan et le traitement des codes-barres USB.

Quels types de codes-barres peuvent être numérisés avec IronBarcode ?

IronBarcode prend en charge le scan d'une large gamme de symbologies de codes-barres, incluant les QR codes, UPC, Code 39 et plus, le rendant polyvalent pour diverses applications.

IronBarcode peut-il extraire des informations structurées à partir de codes-barres scannés ?

Oui, IronBarcode peut extraire des informations structurées à partir de codes-barres scannés, aidant ainsi le traitement et la gestion efficaces des données.

Comment puis-je commencer à construire une application de scanner de codes-barres USB en C# ?

Pour commencer à construire une application de scanner de codes-barres USB en C#, vous pouvez utiliser IronBarcode ainsi que les exemples de code fournis et la documentation pour guider votre processus de développement.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite