IronBarCode Não Pôde Reconhecer o Código de Barras MSI
Problema
Ao criar um código de barras MSI usando a biblioteca IronBarCode, existem casos em que o método BarcodeReader.Read não consegue ler o código de barras MSI gerado, resultando em uma varredura vazia e no valor esperado do código de barras.
Solução
Para garantir que o BarcodeReader.Read possa ler o código de barras MSI, devemos fornecer o parâmetro opcional secundário BarcodeReaderOptions para o método Read. Dentro do BarcodeReaderOptions, especificamos explicitamente o tipo de código de barras que estamos tentando ler, atribuindo o valor ExpectedBarcodeTypes. Dessa forma, o método Read reconheceria o código de barras MSI gerado a partir do IronBarCode, bem como quaisquer códigos de barras MSI externos.
Abaixo está um exemplo rápido de como aplicar BarcodeReaderOptions a BarcodeReader.Read.
Exemplo de código
// Creating MSI Barcode with the value "12345"
var myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.MSI);
// Save barcode as image
myBarcode.SaveAsImage("msi.png");
// Reading MSI
var barcodeReaderOptions = new BarcodeReaderOptions
{
// Assigning BarcodeEncoding.MSI to ExpectBarcodeType to ensure that IronBarcode expects MSI type barcodes specifically
ExpectBarcodeTypes = BarcodeEncoding.MSI,
};
// Read barcode with additional barcodeReaderOptions from above
var barcodeResults = BarcodeReader.Read("msi.png", barcodeReaderOptions);
// Using a for loop and print out the result
foreach (BarcodeResult result in barcodeResults)
{
Console.WriteLine(result.Text);
// Output: 12345
}
// Creating MSI Barcode with the value "12345"
var myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.MSI);
// Save barcode as image
myBarcode.SaveAsImage("msi.png");
// Reading MSI
var barcodeReaderOptions = new BarcodeReaderOptions
{
// Assigning BarcodeEncoding.MSI to ExpectBarcodeType to ensure that IronBarcode expects MSI type barcodes specifically
ExpectBarcodeTypes = BarcodeEncoding.MSI,
};
// Read barcode with additional barcodeReaderOptions from above
var barcodeResults = BarcodeReader.Read("msi.png", barcodeReaderOptions);
// Using a for loop and print out the result
foreach (BarcodeResult result in barcodeResults)
{
Console.WriteLine(result.Text);
// Output: 12345
}
' Creating MSI Barcode with the value "12345"
Dim myBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.MSI)
' Save barcode as image
myBarcode.SaveAsImage("msi.png")
' Reading MSI
Dim barcodeReaderOptions As New BarcodeReaderOptions With {.ExpectBarcodeTypes = BarcodeEncoding.MSI}
' Read barcode with additional barcodeReaderOptions from above
Dim barcodeResults = BarcodeReader.Read("msi.png", barcodeReaderOptions)
' Using a for loop and print out the result
For Each result As BarcodeResult In barcodeResults
Console.WriteLine(result.Text)
' Output: 12345
Next result
No exemplo, primeiro instanciamos uma nova variável BarcodeReaderOptions e depois atribuímos ExpectedBarcodeTypes com o enum BarcodeEncoding.MSI, instruindo o IronBarcode a esperar o código de barras MSI em vez disso. Depois, imprimimos o valor do código de barras, que seria 12345, em um loop for, enquanto o barcodeResults retorna um array de BarcodeResults e percorremos cada resultado para o valor de texto.

