Nei moderni settori della logistica, della vendita al dettaglio, della medicina e della produzione, gli standard GS1, inclusi gli identificatori di applicazione (AI), sono diventati uno strumento universale per la strutturazione dei dati nei codici a barre. Per lavorare efficacemente con questi codici, è fondamentale non solo leggere una stringa di caratteri, ma anche analizzarne correttamente il contenuto, selezionando ciascun identificatore di applicazione e i dati ad esso associati. Il software VintaSoft Barcode .NET SDK offre un potente strumento per l'analisi e la strutturazione delle informazioni in conformità con lo standard GS1.
Cosa sono gli identificatori delle applicazioni GS1 e perché analizzarli
Gli identificatori di applicazione GS1 sono brevi prefissi numerici (solitamente da 2 a 4 cifre) inseriti nel codice a barre prima dei dati effettivi. Ogni prefisso identifica in modo univoco il tipo di informazione, come il Global Trade Item Number (GTIN), la data di produzione, la data di scadenza, il peso, il numero di serie, ecc. La corretta interpretazione di questi identificatori consente l'estrazione automatica di informazioni strutturate e univoche dal codice a barre per la contabilità, la tracciabilità e l'automazione dei processi aziendali.
Quali formati di codice a barre supportano gli identificatori GS1
Gli standard GS1 con identificatori di applicazione sono utilizzati in molti sistemi di simboli di codici a barre:
- GS1-128 — utilizzato nella logistica e nei magazzini per contrassegnare pacchi, pallet ed etichette di spedizione;
- GS1 Data Matrix - molto richiesto nel settore farmaceutico e medico per l'identificazione di farmaci, componenti e dispositivi medici;
- GS1 QR Code - un formato universale adatto alla trasmissione rapida di informazioni estese o alla verifica online;
- GS1 DataBar - spesso presente nei negozi al dettaglio e sulle confezioni di alimenti freschi, per registrare peso, data di scadenza e prezzo.
Si tratta dei formati più utilizzati dalle grandi aziende di tutto il mondo per garantire la tracciabilità e l'automazione end-to-end.
Come funziona l'analisi degli identificatori GS1 con VintaSoft Barcode .NET SDK
Il pacchetto software VintaSoft Barcode .NET SDK consente non solo di leggere rapidamente qualsiasi tipo di codice a barre, ma anche di analizzare automaticamente le linee di dati in conformità con lo standard GS1.
Fasi principali dell'analisi:
- Riconoscimento dei codici a barre e definizione del formato. L'SDK determina automaticamente se il codice a barre scansionato appartiene a uno degli standard GS1 e supporta l'utilizzo degli identificatori applicativi.
- Ricerca di identificatori e markup dei dati. Dopo la decodifica, lo scanner utilizza le regole di analisi interne degli standard GS1 e suddivide sequenzialmente la riga scansionata in sezioni separate: seleziona ciascun identificatore di applicazione e lo associa al contenuto corrispondente (numero, data, stringa).
- Formazione di un risultato strutturato. Come risultato dell'analisi, l'SDK restituisce non una singola riga, ma un oggetto strutturato espanso, in cui ogni identificatore corrisponde al suo valore e alla sua descrizione. Questo approccio offre alle applicazioni o ai sistemi aziendali un accesso flessibile e univoco ai dati senza bisogno di analisi manuale.
- Elaborazione flessibile di diverse combinazioni di identificatori. Supporta l'elaborazione di codici a barre complessi contenenti set di diverse IA: ad esempio, estrazione simultanea di GTIN, data di scadenza, peso, numero di serie e altre informazioni.
Applicazione e vantaggi per le aziende
L'analisi degli identificativi delle applicazioni GS1 con VintaSoft Barcode .NET SDK apre nuove opportunità di automazione e controllo per le aziende. La soluzione si integra facilmente nella catena dei processi aziendali, semplifica la contabilizzazione della movimentazione delle merci e garantisce un elevato livello di affidabilità dei dati.
Tra i vantaggi pratici:
- Automazione della contabilità e del controllo di ricezione, spedizione e inventario delle merci;
- Maggiore trasparenza delle catene di fornitura e conformità ai requisiti di etichettatura;
- Riduzione degli errori grazie all'estrazione accurata delle informazioni dai codici a barre;
- Integrazione rapida con i sistemi IT aziendali;
- Capacità di lavorare con vari formati di codice e applicazioni.
Utilizzando uno strumento di questo tipo le aziende non solo possono ridurre i costi, ma anche migliorare la qualità dei servizi, velocizzare l'elaborazione delle merci e rendere i processi più trasparenti e moderni.
Conclusione
L'analisi e la sintassi degli identificatori delle applicazioni GS1 sono parte integrante dei moderni processi di automazione e contabilità nei settori della vendita al dettaglio, della logistica e dell'assistenza sanitaria.
VintaSoft Barcode .NET SDK offre una soluzione universale, flessibile e ad alte prestazioni per la scansione e l'analisi di codici a barre complessi conformi agli standard globali GS1. Grazie al supporto di un'ampia gamma di formati, all'analisi automatica dei dati strutturati e alla facile integrazione nei sistemi esistenti, le soluzioni VintaSoft aiutano le aziende ad aumentare la trasparenza dei processi e a ridurre i costi operativi.
Per maggiori informazioni sulle funzionalità di VintaSoft Barcode .NET SDK ed esempi di integrazione, visitare il
sito web ufficiale di VintaSoft o contattare il servizio di supporto dell'azienda.
Ecco un codice C# che mostra come generare un'immagine di codice a barre Code128 con informazioni GS1 (GS1-128) e riconoscere un codice a barre GS1-128 nell'immagine generata:
using System;
using System.Text;
using Vintasoft.Barcode;
using Vintasoft.Barcode.BarcodeInfo;
using Vintasoft.Barcode.GS1;
using Vintasoft.Barcode.SymbologySubsets;
using Vintasoft.Imaging;
/// <summary>
/// Test that shows how to encode the barcode data in GS1 format using the GS1Codec class,
/// create image with GS1-128 barcode,
/// read GS1-128 barcode from image and
/// parse data stored in GS1 format.
/// </summary>
class GS1CodecExample
{
/// <summary>
/// Runs the test.
/// </summary>
public static void TestGS1Codec()
{
bool valueVisible = true;
// form the GS1 Application identifiers
GS1ApplicationIdentifierValue[] aiValues = new GS1ApplicationIdentifierValue[4];
GS1ApplicationIdentifier ai;
// 01 - Global Trade Item Number
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("01");
aiValues[0] = new GS1ApplicationIdentifierValue(ai, "0123456789123C");
// 310 - Net weight, kilograms
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("310");
aiValues[1] = new GS1ApplicationIdentifierValue(ai, "0012.55");
// 30 - Count of Items
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("30");
aiValues[2] = new GS1ApplicationIdentifierValue(ai, "10");
// 90 - Company Internal Information
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("90");
aiValues[3] = new GS1ApplicationIdentifierValue(ai, "ABCabc12345");
// get GS1 printable value
StringBuilder printableValue = new StringBuilder();
foreach (GS1ApplicationIdentifierValue value in aiValues)
printableValue.Append(value);
// create the barcode writer
using (BarcodeWriter writer = new BarcodeWriter())
{
// specify that writer must create output image as 24-bpp image
writer.Settings.PixelFormat = BarcodeImagePixelFormat.Bgr24;
// specify that writer must generate Code128 barcode
writer.Settings.Barcode = BarcodeType.Code128;
// encode GS1 value in GS1-128 symbology
writer.Settings.Value = GS1Codec.GS1_128.Encode(aiValues, writer.Settings);
// set printable value
if (valueVisible)
{
writer.Settings.ValueVisible = true;
writer.Settings.PrintableValue = printableValue.ToString();
}
else
{
writer.Settings.ValueVisible = false;
}
// create image with barcode
using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
{
// delete aiValues array
aiValues = null;
// create barcode reader
using (BarcodeReader reader = new BarcodeReader())
{
// specify that reader must search for GS1-128 barcodes only
reader.Settings.ScanBarcodeTypes = BarcodeType.None;
reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.GS1_128);
// read barcode from image
IBarcodeInfo[] infos = reader.ReadBarcodes(barcodeImage);
// gets a GS1 Application identifiers from barcode value
aiValues = ((GS1BarcodeInfo)infos[0]).ApplicationIdentifierValues;
printableValue = new StringBuilder();
// print Application identifiers values
for (int i = 0; i < aiValues.Length; i++)
{
GS1ApplicationIdentifierValue aiValue = aiValues[i];
ai = aiValue.ApplicationIdentifier;
Console.WriteLine(string.Format("[{0}] {1}", i + 1, aiValue));
Console.WriteLine(string.Format("Application identifier : {0}", ai.ApplicationIdentifier));
Console.WriteLine(string.Format("Value : {0}", aiValue.Value));
Console.WriteLine(string.Format("Data title : {0}", ai.DataTitle));
Console.WriteLine(string.Format("Data content : {0}", ai.DataContent));
Console.WriteLine(string.Format("Format : {0}", ai.Format));
Console.WriteLine(string.Format("Is contains decimal point: {0}", ai.IsContainsDecimalPoint));
Console.WriteLine(string.Format("Is variable length : {0}", ai.IsVariableLength));
Console.WriteLine();
printableValue.Append(aiValue.ToString());
}
// print GS1 printable value
Console.WriteLine("Printable GS1 value: " + printableValue.ToString());
}
}
}
}
}