Tutoriels

Scanner des codes-barres Android vers l'IBM i avec .NET et NTi

ParRémi Rouillot

image d’illustration de l’article

Contenu détaillé de l’article:Scanner des codes-barres Android vers l'IBM i avec .NET et NTi

Cet article présente le développement d'une application mobile Android en .NET MAUI capable de scanner des codes-barres et d'insérer les données directement dans une table DB2 for i sur IBM i via NTi Data Provider.

Étape 1 - Créer la table dans l'IBM i

La table suivante stocke les codes-barres scannés, la date du scan et le type de code-barres :

CREATE TABLE SAMPLE.BARCODES (
    SCANDATE  TIMESTAMP,
    SCANTYPE  VARCHAR(256),
    SCANVALUE VARCHAR(1024)
)

Étape 2 - Développer l'application mobile

Le projet est créé depuis un modèle .NET MAUI dans Visual Studio.

Lecture des codes-barres avec ZXing

La bibliothèque ZXing.Net.Maui exploite l'appareil photo du smartphone pour lire les codes-barres. Elle s'intègre directement dans la vue :

<zxing:CameraBarcodeReaderView
    x:Name="cameraBarcodeReaderView"
    BarcodesDetected="BarcodesDetected"/>

Les données lues sont interceptées dans le code sous-jacent via la méthode BarcodesDetected (voir la documentation ZXing).

Ne pas oublier de déclarer la permission d'accès à l'appareil photo dans le manifeste de l'application, sans quoi les autorisations nécessaires ne seront pas accordées.

Insertion dans l'IBM i avec NTi

La méthode BarcodesDetected utilise NTi Data Provider et Dapper pour insérer les données dans DB2 for i :

protected void BarcodesDetected(object sender, BarcodeDetectionEventArgs e)
{
    Vibration.Default.Vibrate();
    NTiConnection conn = new(_connectionString);
    conn.Open();
    foreach (var barcode in e.Results)
    {
        conn.Execute(
            "INSERT INTO SAMPLE.BARCODES (SCANDATE, SCANTYPE, SCANVALUE) VALUES (@TIME, @TYPE, @VALUE)",
            new
            {
                Time = DateTime.Now,
                Type = barcode.Format.ToString(),
                Value = barcode.Value
            }
        );
    }
    conn.Close();
}

Une vibration est déclenchée sur le smartphone pour confirmer la lecture à l'utilisateur.

Code complet

MainPage.xaml :

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;assembly=ZXing.Net.MAUI.Controls"
             x:Class="BarcodeAppXaml.MainPage">
    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">
            <Image
                Source="nti.png"
                HeightRequest="185"
                Aspect="AspectFit"/>
            <Label
                Text="NTi - Scan"
                Style="{StaticResource Headline}" />
            <Label
                Text="Exemple d'application permettant de scanner des QR codes et des codes à barres, et d'envoyer les données dans l'IBM i avec NTi"
                Style="{StaticResource SubHeadline}"/>
            <zxing:CameraBarcodeReaderView
                x:Name="cameraBarcodeReaderView"
                BarcodesDetected="BarcodesDetected"/>
        </VerticalStackLayout>
    </ScrollView>
</ContentPage>

MainPage.xaml.cs :

using ZXing.Net.Maui;
using Aumerial.Data.Nti;
using Dapper;

namespace BarcodeAppXaml
{
    public partial class MainPage : ContentPage
    {
        private static string _connectionString = "...";
        public MainPage()
        {
            InitializeComponent();
            cameraBarcodeReaderView.Options = new BarcodeReaderOptions
            {
                Formats = BarcodeFormats.All,
                AutoRotate = true,
                Multiple = true
            };
        }

        protected void BarcodesDetected(object sender, BarcodeDetectionEventArgs e)
        {
            Vibration.Default.Vibrate();
            NTiConnection conn = new(_connectionString);
            conn.Open();
            foreach (var barcode in e.Results)
            {
                conn.Execute(
                    "INSERT INTO SAMPLE.BARCODES (SCANDATE, SCANTYPE, SCANVALUE) VALUES (@TIME, @TYPE, @VALUE)",
                    new
                    {
                        Time = DateTime.Now,
                        Type = barcode.Format.ToString(),
                        Value = barcode.Value
                    }
                );
            }
            conn.Close();
        }
    }
}

Étape 3 - Publication et test

Visual Studio permet de publier l'application directement sous forme d'archive APK, installable sur n'importe quel appareil Android : smartphone, douchette d'entrepôt, tablette.

💡Une connexion entre le smartphone et l'IBM i est nécessaire, via un VPN par exemple. Sans cela, il faudrait implémenter une politique de saisie hors-ligne avec synchronisation différée.

NTi Data Provider est totalement agnostique à la plateforme. Il fonctionne en environnement Android/ARM sans pilote à installer, et fonctionnerait de la même manière sur iOS.

L'application est installée sur un smartphone Android et cherche automatiquement des codes-barres à l'ouverture :

Test du scan sur l’application mobile NTi Scan

En scannant un code EAN8 sur un emballage, la vibration confirme la lecture et les données sont immédiatement insérées dans l'IBM i :

L’application mobile NTi Scan fonctionne et cherche des codes-barres

Le résultat est visible directement dans la table SAMPLE.BARCODES :

Données récupérées sur IBM i via le scan d’un code-barres

Conclusion

NTi Data Provider devient ici le liant entre le terrain et l'IBM i via un smartphone. Ce type d'application peut s'envisager sur une douchette en entrepôt ou sur le smartphone d'un technicien de maintenance pour remonter de la traçabilité dans l'IBM i.

Tous les dispositifs d'acquisition deviennent utilisables simplement avec l'IBM i : appareil photo, scanner laser, périphériques Bluetooth.


Rémi Rouillot

Démarrez dès maintenant

Récupérez votre licence d’essai gratuite en ligne
et connectez vos applications .NET à votre IBM i en quelques minutes.

Créez votre compte

Connectez-vous au portail Aumerial, générez votre licence d’essai et activez NTi sur votre IBM i en quelques instants.

Démarrer l’essai

Ajouter NTi à votre projet

Installez NTi Data Provider depuis NuGet dans Visual Studio et référencez-le dans votre projet .NET.

Voir la documentation

Besoin d’aide ?

Si vous avez des questions sur nos outils ou sur les options de licence, notre équipe est disponible pour vous aider.

Nous contacter
30 jours d’essai gratuit activation immédiate sans engagement aucun composant à installer côté IBM i