Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo argomento illustra come usare le API dello scanner di codice a barre UWP (Universal Windows Platform) per elaborare simboli di codice a barre senza configurare manualmente lo scanner.
Una simbologia del codice a barre è la mappatura dei dati a un specifico formato di codice a barre. Alcune simbologie comuni includono UPC, Codice 128, Codice QR e così via.
Determinare quali simboli sono supportati
Poiché l'applicazione può essere usata con diversi modelli di scanner di codice a barre di più produttori, è possibile eseguire una query sullo scanner per determinare l'elenco di simboli supportati. Ciò può essere utile se l'applicazione richiede una simbologia specifica che potrebbe non essere supportata da tutti gli scanner o se è necessario abilitare simboli che sono stati disabilitati manualmente o a livello di codice nello scanner.
Una volta creato un oggetto
L'esempio seguente ottiene un elenco dei simboli supportati dello scanner di codice a barre e li visualizza in un blocco di testo:
private void DisplaySupportedSymbologies(BarcodeScanner barcodeScanner, TextBlock textBlock)
{
var supportedSymbologies = await barcodeScanner.GetSupportedSymbologiesAsync();
foreach (uint item in supportedSymbologies)
{
string symbology = BarcodeSymbologies.GetName(item);
textBlock.Text += (symbology + "\n");
}
}
Determinare se è supportata una simbologia specifica
Per determinare se lo scanner supporta una simbologia specifica, è possibile chiamare IsSymbologySupportedAsync.
L'esempio seguente controlla se lo scanner di codice a barre supporta il simbolo Code32:
bool symbologySupported = await barcodeScanner.IsSymbologySupportedAsync(BarcodeSymbologies.Code32);
Modificare i simboli riconosciuti
In alcuni casi, è possibile usare un subset di simboli supportati dallo scanner di codice a barre. Ciò è particolarmente utile per bloccare simboli che non si intende usare nell'applicazione. Ad esempio, per garantire che un utente esegua l'analisi del codice a barre corretto, è possibile vincolare l'analisi a UPC o EAN durante l'acquisizione di SKU di elementi e vincolare l'analisi al codice 128 durante l'acquisizione dei numeri di serie.
Dopo aver appreso i simboli supportati dallo scanner, è possibile impostare i simboli da riconoscere. Puoi eseguire questa operazione dopo aver creato un oggetto ClaimedBarcodeScanner utilizzando ClaimScannerAsync. È possibile chiamare SetActiveSymbologiesAsync per abilitare un set specifico di simboli mentre quelli omessi dall'elenco sono disabilitati.
L'esempio seguente imposta i simboli attivi di uno scanner di codice a barre richiesto su Code39 e Code39Ex:
private async void SetSymbologies(ClaimedBarcodeScanner claimedBarcodeScanner)
{
var symbologies = new List<uint>{ BarcodeSymbologies.Code39, BarcodeSymbologies.Code39Ex };
await claimedBarcodeScanner.SetActiveSymbologiesAsync(symbologies);
}
Attributi della simbologia del codice a barre
Le diverse simbologie dei codici a barre possono avere attributi differenti, ad esempio supportare più lunghezze di decodifica, trasmettere la cifra di controllo all'host come parte dei dati grezzi e la validazione della cifra di controllo. Con la classe BarcodeSymbologyAttributes, è possibile ottenere e impostare questi attributi per un ClaimedBarcodeScanner specifico e la simbologia del codice a barre.
È possibile ottenere gli attributi di una determinata simbologia con GetSymbologyAttributesAsync. Il frammento di codice seguente ottiene gli attributi della simbologia Upca per un ClaimedBarcodeScanner.
BarcodeSymbologyAttributes barcodeSymbologyAttributes =
await claimedBarcodeScanner.GetSymbologyAttributesAsync(BarcodeSymbologies.Upca);
Dopo aver modificato gli attributi e averli impostati, è possibile chiamare SetSymbologyAttributesAsync. Questo metodo restituisce un bool, che è true se gli attributi sono stati impostati correttamente.
bool success = await claimedBarcodeScanner.SetSymbologyAttributesAsync(
BarcodeSymbologies.Upca, barcodeSymbologyAttributes);
Limitare i dati di scansione in base alla lunghezza
Alcune simboligie sono di lunghezza variabile, ad esempio Codice 39 o Codice 128. I codici a barre di questi simboli possono trovarsi vicino l'uno all'altro contenente dati diversi spesso di lunghezza specifica. L'impostazione della lunghezza specifica dei dati necessari può impedire analisi non valide.
Prima di impostare la lunghezza della decodifica, verificare se la simbologia del codice a barre supporta lunghezze multiple con IsDecodeLengthSupported. Dopo aver appreso che è supportato, è possibile impostare il DecodeLengthKind, che è di tipo BarcodeSymbologyDecodeLengthKind. Questa proprietà può essere uno dei valori seguenti:
- AnyLength: decodifica le lunghezze di qualsiasi numero.
- Discrete: Decodifica le lunghezze di DecodeLength1 o DecodeLength2 dei caratteri a byte singolo.
- Range: Decodifica le lunghezze tra DecodeLength1 e DecodeLength2 di caratteri a byte singolo. L'ordine di DecodeLength1 e DecodeLength2 non importa (può essere maggiore o inferiore all'altro).
Infine, è possibile impostare i valori di DecodeLength1 e DecodeLength2 per controllare la lunghezza dei dati necessari.
Il frammento di codice seguente illustra l'impostazione della lunghezza di decodifica:
private async Task<bool> SetDecodeLength(
ClaimedBarcodeScanner scanner,
uint symbology,
BarcodeSymbologyDecodeLengthKind kind,
uint decodeLength1,
uint decodeLength2)
{
bool success = false;
BarcodeSymbologyAttributes attributes = await scanner.GetSymbologyAttributesAsync(symbology);
if (attributes.IsDecodeLengthSupported)
{
attributes.DecodeLengthKind = kind;
attributes.DecodeLength1 = decodeLength1;
attributes.DecodeLength2 = decodeLength2;
success = await scanner.SetSymbologyAttributesAsync(symbology, attributes);
}
return success;
}
Controllare la trasmissione delle cifre
Un altro attributo che è possibile impostare su una simbologia è se la cifra di controllo verrà trasmessa all'host come parte dei dati non elaborati. Prima di impostare questa impostazione, assicurarsi che la simbologia supporti la trasmissione delle cifre di controllo con IsCheckDigitTransmissionSupported. Impostare quindi se la trasmissione delle cifre di controllo è abilitata con IsCheckDigitTransmissionEnabled.
Il frammento di codice seguente illustra l'impostazione della trasmissione delle cifre di controllo:
private async Task<bool> SetCheckDigitTransmission(ClaimedBarcodeScanner scanner, uint symbology, bool isEnabled)
{
bool success = false;
BarcodeSymbologyAttributes attributes = await scanner.GetSymbologyAttributesAsync(symbology);
if (attributes.IsCheckDigitTransmissionSupported)
{
attributes.IsCheckDigitTransmissionEnabled = isEnabled;
success = await scanner.SetSymbologyAttributesAsync(symbology, attributes);
}
return success;
}
Controllare la convalida delle cifre
È anche possibile impostare se la cifra di controllo del codice a barre verrà convalidata. Prima di impostare questa impostazione, assicurarsi che la simbologia supporti la convalida della cifra di controllo con IsCheckDigitValidationSupported. Impostare quindi se la convalida della cifra di controllo è abilitata con IsCheckDigitValidationEnabled.
Il frammento di codice seguente illustra l'impostazione della convalida della cifra di controllo:
private async Task<bool> SetCheckDigitValidation(ClaimedBarcodeScanner scanner, uint symbology, bool isEnabled)
{
bool success = false;
BarcodeSymbologyAttributes attributes = await scanner.GetSymbologyAttributesAsync(symbology);
if (attributes.IsCheckDigitValidationSupported)
{
attributes.IsCheckDigitValidationEnabled = isEnabled;
success = await scanner.SetSymbologyAttributesAsync(symbology, attributes);
}
return success;
}
Supporto e feedback
Trovare le risposte alle domande
Hai domande? Chiedici sul forum di domande e risposte di Docs con il tag UWP o su Stack Overflow con il tag pointofservice.
Aiutaci a individuare le tue domande:
- Aggiungere il tag pointofservice alla domanda in Stack Overflow.
- Includi il termine "UWP" nel tuo post nel forum Q&A