IronBarCode no pudo reconocer el código de barras MSI
Problema
Al crear un código de barras MSI utilizando la biblioteca IronBarcode , hay casos en los que el método BarcodeReader.Read no puede leer el código de barras MSI generado, lo que genera un escaneo vacío y el valor esperado del código de barras.
Solución
Para garantizar que BarcodeReader.Read pueda leer el código de barras MSI, debemos proporcionar el parámetro opcional secundario BarcodeReaderOptions para el método Read. Dentro de BarcodeReaderOptions, especificamos explícitamente el tipo de código de barras que estamos intentando leer asignando el valor ExpectedBarcodeTypes. De esta manera, el método Read reconocería el código de barras MSI generado desde IronBarcode así como cualquier código de barras MSI externo.
A continuación se muestra un ejemplo rápido de cómo aplicar BarcodeReaderOptions a BarcodeReader.Read.
Ejemplo 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
En el ejemplo, primero instanciamos una nueva variable BarcodeReaderOptions y luego asignamos ExpectedBarcodeTypes con la enumeración BarcodeEncoding.MSI, indicando a IronBarcode que espere el código de barras MSI en su lugar. Luego, imprimimos el valor del código de barras, que sería 12345, en un bucle for mientras barcodeResults devuelve una matriz de BarcodeResults y recorremos cada resultado en busca del valor de texto.

