IronBarcode konnte MSI-Barcode nicht erkennen
Problem
Beim Erstellen eines MSI-Barcodes mit der IronBarcode-Bibliothek gibt es Fälle, in denen die BarcodeReader.Read-Methode den generierten MSI-Barcode nicht lesen kann, was zu einem leeren Scan und dem erwarteten Wert aus dem Barcode führt.
Lösung
Um sicherzustellen, dass die BarcodeReader.Read den MSI-Barcode lesen kann, müssen wir die sekundäre optionale BarcodeReaderOptions-Parameter für die Read-Methode bereitstellen. Innerhalb der BarcodeReaderOptions geben wir explizit den Barcode-Typ an, den wir versuchen zu lesen, indem wir den Wert ExpectedBarcodeTypes zuweisen. Auf diese Weise würde die Read-Methode den von IronBarcode generierten MSI-Barcode sowie alle externen MSI-Barcodes erkennen.
Unten ist ein schnelles Beispiel, wie man BarcodeReaderOptions auf BarcodeReader.Read anwendet.
Codebeispiel
// 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
Im Beispiel instanziieren wir zuerst eine neue BarcodeReaderOptions-Variable und weisen dann ExpectedBarcodeTypes mit dem BarcodeEncoding.MSI-Enum zu, wodurch IronBarcode angewiesen wird, stattdessen den MSI-Barcode zu erwarten. Anschließend drucken wir den Wert des Barcodes aus, der 12345 wäre, in einer For-Schleife, da die barcodeResults ein Array von BarcodeResults zurückgibt und jede Ergebniswert für den Textwert durchläuft.

