Passer au contenu du pied de page
UTILISATION DE IRONBARCODE

Comment créer un scanner de code-barres MAUI en utilisant IronBarcode

Les applications mobiles modernes comptent de plus en plus sur la numérisation des codes-barres pour la gestion des stocks, les systèmes de point de vente et le suivi des produits. Créer un scanner de codes-barres MAUI vous permet d'intégrer la détection des codes-barres directement dans votre application .NET MAUI, en combinant un flux de caméra avec le traitement des fichiers image pour détecter les codes QR, les matrices de données et d'autres formats de codes-barres. Alors que de nombreuses bibliothèques se concentrent sur l'aperçu de la caméra, IronBarcode excelle à lire avec précision les codes-barres et à les numériser, même dans des conditions difficiles.

Dans ce guide, je vais vous montrer comment implémenter une fonctionnalité de numérisation de codes-barres dans un projet .NET MAUI en utilisant IronBarcode. À la fin, vous serez capable de numériser plusieurs codes-barres dans un fichier image ou à partir de la caméra d'un appareil, de lire les données à partir de n'importe quel code-barres donné et d'utiliser IronBarcode dans vos propres projets MAUI en toute confiance.

Quelles sont les conditions préalables à la construction d'un scanner de codes-barres MAUI ?

Avant de commencer, assurez-vous d'avoir installé Visual Studio Code ou Visual Studio 2022, ainsi que la charge de travail .NET MAUI, et de posséder une connaissance de base de C#. Vous aurez également besoin du SDK .NET 8 pour des performances optimales et un support pour les applications multiplateformes.

Comment configurer un projet de numérisation de codes-barres MAUI ?

Créez un nouveau projet d’application .NET MAUI dans Visual Studio 2022. Nommez-le "BarcodeScannerApp" et sélectionnez .NET 8 comme framework cible.

Installez IronBarcode via la console du gestionnaire de packages NuGet :

Install-Package BarCode

Cela installe une bibliothèque .NET avec prise en charge de plusieurs formats de codes-barres, y compris le code QR, le code 128 et la matrice de données. IronBarcode fonctionne hors ligne et gère les codes-barres inversés non pris en charge de manière native, garantissant une numérisation continue et une meilleure cohérence de numérisation.

Pour activer IronBarcode, obtenez une licence d'essai gratuite et ajoutez-la à votre code :

License.LicenseKey = "YOUR-LICENSE-KEY";
License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Comment configurer les autorisations de la caméra pour Android et iOS ?

Les autorisations de caméra spécifiques à la plateforme sont essentielles pour la fonctionnalité de numérisation des codes-barres. Chaque plateforme nécessite une configuration spécifique dans ses fichiers manifeste.

Pour Android, modifiez Platforms/Android/AndroidManifest.xml :

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ces autorisations permettent l'accès à la caméra et déclarent l'utilisation du matériel de la caméra, garantissant que votre application peut capturer des images de codes-barres sur les appareils Android.

Pour iOS, modifiez Platforms/iOS/Info.plist :

<key>NSCameraUsageDescription</key>
<string>This app requires camera access to scan barcodes</string>
<key>NSCameraUsageDescription</key>
<string>This app requires camera access to scan barcodes</string>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette configuration fournit la description de confidentialité requise qu'iOS affiche lors de la demande d'autorisation de la caméra aux utilisateurs.

Comment créer l'interface du scanner de codes-barres ?

Concevez une interface simple et conviviale dans MainPage.xaml :

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="BarcodeScannerApp.MainPage">
    <VerticalStackLayout Padding="20" Spacing="20">
        <Label Text="Barcode Scanner" 
               FontSize="24" 
               HorizontalOptions="Center" />
        <Image x:Name="CapturedImage" 
               HeightRequest="300"
               Aspect="AspectFit" />
        <Label x:Name="ResultLabel" 
               Text="Tap button to scan"
               HorizontalOptions="Center" />
        <Button Text="Scan Barcode" 
                Clicked="OnScanClicked"
                BackgroundColor="#007ACC"
                TextColor="White" />
    </VerticalStackLayout>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="BarcodeScannerApp.MainPage">
    <VerticalStackLayout Padding="20" Spacing="20">
        <Label Text="Barcode Scanner" 
               FontSize="24" 
               HorizontalOptions="Center" />
        <Image x:Name="CapturedImage" 
               HeightRequest="300"
               Aspect="AspectFit" />
        <Label x:Name="ResultLabel" 
               Text="Tap button to scan"
               HorizontalOptions="Center" />
        <Button Text="Scan Barcode" 
                Clicked="OnScanClicked"
                BackgroundColor="#007ACC"
                TextColor="White" />
    </VerticalStackLayout>
</ContentPage>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ce layout crée une interface propre avec une zone d'aperçu d'image, une étiquette d'affichage des résultats et un bouton de numérisation. La VerticalStackLayout fournit un espacement et un rembourrage cohérents pour une apparence professionnelle.

Comment implémenter la fonctionnalité de lecteur de codes-barres ?

Implémentez la logique de numérisation dans MainPage.xaml.cs en utilisant les capacités de traitement d'image de IronBarcode :

using IronBarCode;
using IronSoftware.Drawing;
namespace BarcodeScannerApp;
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
        License.LicenseKey = "YOUR-LICENSE-KEY";
    }
    private async void OnScanClicked(object sender, EventArgs e)
    {
        try
        {
            // Capture photo using device camera
            var photo = await MediaPicker.Default.CapturePhotoAsync();
            if (photo == null) return;
            // Convert photo to byte array
            using var stream = await photo.OpenReadAsync();
            using var memoryStream = new MemoryStream();
            await stream.CopyToAsync(memoryStream);
            var imageBytes = memoryStream.ToArray();
            // Display captured image
            CapturedImage.Source = ImageSource.FromStream(() => 
                new MemoryStream(imageBytes));
            // Process with IronBarcode
            var bitmap = AnyBitmap.FromBytes(imageBytes);
            var results = await BarcodeReader.ReadAsync(bitmap);
            // Display results
            if (results.Any())
            {
                var barcodeValue = results.First().Value;
                ResultLabel.Text = $"Scanned: {barcodeValue}";
            }
            else
            {
                ResultLabel.Text = "No barcode detected";
            }
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error", 
                $"Scanning failed: {ex.Message}", "OK");
        }
    }
}
using IronBarCode;
using IronSoftware.Drawing;
namespace BarcodeScannerApp;
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
        License.LicenseKey = "YOUR-LICENSE-KEY";
    }
    private async void OnScanClicked(object sender, EventArgs e)
    {
        try
        {
            // Capture photo using device camera
            var photo = await MediaPicker.Default.CapturePhotoAsync();
            if (photo == null) return;
            // Convert photo to byte array
            using var stream = await photo.OpenReadAsync();
            using var memoryStream = new MemoryStream();
            await stream.CopyToAsync(memoryStream);
            var imageBytes = memoryStream.ToArray();
            // Display captured image
            CapturedImage.Source = ImageSource.FromStream(() => 
                new MemoryStream(imageBytes));
            // Process with IronBarcode
            var bitmap = AnyBitmap.FromBytes(imageBytes);
            var results = await BarcodeReader.ReadAsync(bitmap);
            // Display results
            if (results.Any())
            {
                var barcodeValue = results.First().Value;
                ResultLabel.Text = $"Scanned: {barcodeValue}";
            }
            else
            {
                ResultLabel.Text = "No barcode detected";
            }
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error", 
                $"Scanning failed: {ex.Message}", "OK");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette implémentation capture une image via MediaPicker, la convertit en un tableau d'octets pour le traitement, et utilise la méthode BarcodeReader.ReadAsync de IronBarcode pour la détection. La méthode AnyBitmap.FromBytes gère automatiquement divers formats d'image. La gestion des erreurs garantit une récupération en douceur avec des messages conviviaux.

Avec ce code, nous pouvons numériser ce code-barres :

Comment créer un scanner de codes-barres MAUI à l'aide de IronBarcode : Figure 2 - Code-barres de test d'entrée

Et vous devriez pouvoir voir les données du code-barres affichées à l'écran :

Comment créer un scanner de codes-barres MAUI à l'aide de IronBarcode : Figure 3 - Valeur du code-barres numérisé

Quelles fonctionnalités avancées offre IronBarcode ?

IronBarcode fournit plusieurs fonctionnalités avancées qui améliorent la fiabilité de la numérisation. Les algorithmes d'apprentissage automatique de la bibliothèque ajustent automatiquement les seuils de confiance, améliorant la précision avec les codes-barres difficiles. Les filtres de correction d'image gèrent les codes-barres tournés, biaisés ou mal éclairés sans configuration supplémentaire.

Pour des besoins de numérisation spécifiques, personnalisez les options du lecteur :

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
var results = await BarcodeReader.ReadAsync(bitmap, opcanbvations);
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};
var results = await BarcodeReader.ReadAsync(bitmap, opcanbvations);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette configuration optimise la numérisation pour des types de codes-barres spécifiques et permet la détection de plusieurs codes-barres dans une seule image, réduisant le temps de traitement tout en maintenant la précision.

Comment créer un scanner de codes-barres MAUI à l'aide de IronBarcode : Figure 4 - Plusieurs codes numérisés à partir de la même image

Conseils courants de dépannage

Même avec un ensemble de scanners de codes-barres MAUI robuste, des problèmes peuvent parfois survenir en raison des paramètres de l'appareil, de la qualité de l'image ou des contraintes spécifiques de la plateforme. Les conseils suivants abordent les problèmes les plus courants rencontrés lors de la mise en œuvre de la fonctionnalité de numérisation de codes-barres dans une application .NET MAUI :

  • Caméra ne s'ouvrant pas : Assurez-vous que les autorisations suivantes sont correctement définies dans le nœud du manifeste et redéployez l'application. Vérifiez également les configurations multi-caméras prises en charge si vous testez sur des appareils avec plusieurs caméras ou avec des configurations de caméra personnalisées.
  • Mauvais résultats de numérisation : Ajustez la résolution de l'image ou l'éclairage, ou appliquez des transformations au code-barres. De plus, activer la numérisation continue et augmenter l'option de vitesse dans BarcodeReaderOptions peut améliorer la cohérence de la numérisation.
  • Problèmes de mémoire : Disposez correctement des flux d'images à l'aide de déclarations using. Cela garantit que votre fonctionnalité de numérisation de code-barres reste réactive et évite les plantages ou ralentissements inattendus sur les appareils Android ou les machines Windows de Microsoft.
  • Problèmes iOS : Confirmez qu'Info.plist inclut les propriétés QR code associables appropriées. Il est recommandé de tester sur les appareils iPhone et iPad pour garantir une fonctionnalité de numérisation de codes-barres cohérente sur les appareils iOS.

Conclusion

IronBarcode transforme la numérisation de codes-barres MAUI avec son moteur de traitement d'image robuste et ses capacités d'apprentissage automatique. Contrairement aux bibliothèques d'aperçu de caméra en temps réel, l'approche de IronBarcode garantit une numérisation fiable même dans des conditions difficiles. La fonctionnalité hors ligne de la bibliothèque et son support étendu de formats en font un choix idéal pour les applications d'entreprise. Maintenant, vous pourrez aborder en toute confiance ce que nous vous avons appris aujourd'hui pour créer votre propre scanner de codes-barres .NET MAUI. Souhaitez-vous en savoir plus ? N'oubliez pas de lire la documentation complète de IronBarcode.

Commencez à développer avec une version d'essai gratuite pour le déploiement en production. La combinaison d'IronBarcode en termes de précision, de facilité d'implémentation et de fonctionnalités complètes en fait le choix optimal pour les applications de numérisation de codes-barres MAUI.

Questions Fréquemment Posées

Quel est l'avantage d'utiliser IronBarcode pour un scanner de code-barres MAUI?

IronBarcode excelle dans la lecture précise des codes-barres et leur balayage même dans des conditions difficiles, ce qui le rend idéal pour l'intégration dans les applications MAUI.

IronBarcode peut-il traiter plusieurs formats de code-barres dans une application MAUI?

Oui, IronBarcode peut détecter divers formats de code-barres, y compris les QR codes et les matrices de données, le rendant polyvalent pour différents besoins d'application.

Comment IronBarcode s'intègre-t-il au flux de caméra dans un scanner de code-barres MAUI?

IronBarcode permet une intégration transparente avec le flux de caméra, permettant la détection et le traitement des codes-barres en temps réel directement dans les applications MAUI.

IronBarcode prend-il en charge le balayage de code-barres hors ligne dans les applications MAUI?

Oui, IronBarcode prend en charge le balayage de code-barres hors ligne, lui permettant de fonctionner sans connexion Internet, ce qui est bénéfique pour les applications mobiles.

Quelles sont les caractéristiques clés d'IronBarcode pour le balayage de code-barres dans MAUI?

Les caractéristiques clés incluent la détection précise des codes-barres, le support de divers formats de code-barres et une performance robuste même dans des conditions difficiles.

Comment IronBarcode gère-t-il les conditions de balayage difficiles?

IronBarcode est conçu pour lire précisément les codes-barres dans des conditions difficiles telles qu'un mauvais éclairage ou des angles inclinés, garantissant une performance fiable.

Est-il facile de configurer les permissions de balayage de code-barres avec IronBarcode dans MAUI?

Oui, IronBarcode fournit des instructions claires pour la configuration des permissions nécessaires pour le balayage de code-barres, rendant la mise en œuvre simple dans MAUI.

IronBarcode peut-il être utilisé pour les applications de gestion d'inventaire dans MAUI?

Absolument, IronBarcode convient parfaitement à la gestion d'inventaire, offrant des capacités de balayage de code-barres efficaces qui peuvent être intégrées dans les applications MAUI.

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