Read Code 39 BarCode in C# Quickly and Easily 在 C# 中快速轻松地读取代码 39 BarCode。

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronBarcode 通过使用 BarcodeReaderOptions 类并指定 BarcodeEncoding.Code39 以及在需要时启用 UseCode39ExtendedMode 以获得完整的 ASCII 字符支持,简化了在 C# 中读取标准和扩展 Code 39 条形码的过程。

Code 39 是一种通用的条形码格式,广泛应用于库存、物流和工业领域。 Code 39 BarCode 的长度可以变化,因此可以灵活地用于不同的使用情况。

原始标准代码 39 对大写字母(A-Z)、数字(0-9)和几个特殊字符(空格、-、$、+、% 和 .)进行编码。 这对基本 ID 非常有效,但现代应用程序通常需要对所有 128 个 ASCII 字符进行编码。 Code 39 扩展规范满足了这一需求。

本指南演示了如何使用 IronBarcode 阅读标准和扩展的 Code 39 变体。 无论您是要构建库存管理系统、跟踪货运还是处理工业条码,IronBarcode 都能提供可靠的 Code 39 读取功能。 如需全面了解条形码读取功能,请查看我们的全面条形码快速入门指南


快速入门:在 C# 中读取 Code 39 BarCode

使用 IronBarcode 的BarcodeReader ,只需一行代码即可从图像中解码 Code 39 条形码。 立即开始——指定编码类型,传入图像,然后读取结果。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronBarcode

    PM > Install-Package BarCode

  2. 复制并运行这段代码。

    IronBarCode.BarcodeReader.Read("code39.png", new IronBarCode.BarcodeReaderOptions { ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.Code39 }).First().ToString();
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronBarcode,免费试用!
    arrow pointer

如何读取标准代码 39 BarCode?

使用 IronBarcode 阅读 Code 39 条形码非常简单。 首先,初始化一个新的 BarcodeReaderOptions 并指定条码类型为 BarcodeEncoding.Code39 。 这样可以准确地告诉阅读器要查找的条形码格式,从而优化阅读器。

接下来,使用 Read 方法读取条形码,将条形码图像和选项作为参数传递。 然后遍历结果集合,并将每个 BarCode 的字符串值打印到控制台。 如需了解更多高级配置,请浏览我们关于条码阅读器设置的详细指南。

标准 Code 39 BarCode 看起来像什么?

此图像包含标准 Code 39 条形码。 请注意下面的条形码是如何以条形和人类可读文本的形式显示其编码值的。 这种双重表示法是工业和物流应用中典型的代码 39 BarCode。

Code 39 条码编码'ABC-1234',带有可视条形码,下方为人类可读文本

读取标准代码 39 需要哪些代码?

:path=/static-assets/barcode/content-code-examples/how-to/read-code39-barcode.cs
using IronBarCode;
using System;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Tell the reader to only look for Code 39.
    ExpectBarcodeTypes = BarcodeEncoding.Code39
};

// Read barcode(s) from the image file using the specified options
var results = BarcodeReader.Read("code39.png", options);

// Loop through each BarcodeResult found in the image
foreach (var result in results)
{
    // Print the decoded string value of the standard Code 39 barcode
    Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System

Dim options As New BarcodeReaderOptions() With {
    .ExpectBarcodeTypes = BarcodeEncoding.Code39
}

' Read barcode(s) from the image file using the specified options
Dim results = BarcodeReader.Read("code39.png", options)

' Loop through each BarcodeResult found in the image
For Each result In results
    ' Print the decoded string value of the standard Code 39 barcode
    Console.WriteLine(result.ToString())
Next
$vbLabelText   $csharpLabel

指定预期的 BarCode 类型可显著提高读取性能。 IronBarcode 不会浪费时间寻找其他条码格式,这尤其有利于批量处理大型图像集。 通过我们的读取速度选项指南了解更多有关优化条形码读取性能的信息。

我应该期待什么样的产出?

Visual Studio 控制台显示 Code 39 条形码读取输出,解码值为 ABC-1234,退出代码为 0。

控制台输出显示了从我们的 Code 39 BarCode 中成功解码的值 "ABC-1234"。 退出代码 0 表示执行成功,无错误。 在生产应用程序中,针对可能无法识别 BarCode 的情况实施适当的错误处理。 如果遇到问题,请查看我们的无法识别条形码的故障排除指南


如何读取扩展 Code 39 BarCode?

读取扩展 Code 39 BarCode 的过程与标准 Code 39 类似。主要区别在于将 UseCode39ExtendedMode 属性设置为 true。

此设置可指示 IronBarcode 解释特殊字符对(如 +T、%O),并将其解码为等效的全 ASCII 字符(如 t、!) 扩展代码 39 使用双字符序列来表示标准字符集之外的字符。 这使得 BarCode 稍长,但可以对小写字母、附加标点符号和控制字符进行编码。

何时应使用扩展代码 39?

当您的应用程序需要编码时,扩展代码 39 是理想的选择:

  • 混合大小写文本(大写字母和小写字母)
  • 特殊字符如 @、#、&、!、?
  • 数据传输控制字符
  • 完全支持 ASCII 字符集

常见的应用包括医疗保健系统、文档跟踪和需要丰富数据编码的高级库存管理。

扩展 Code 39 BarCode 看起来像什么?

此图像包含扩展的 Code 39 条形码。 值Test-Data!包含小写字符和感叹号,这些字符仅在完整的 ASCII 字符集中可用,并且需要扩展模式。

扩展码39条形码显示编码数据,解码后的输出结果为

扩展代码 39 需要哪些代码?

:path=/static-assets/barcode/content-code-examples/how-to/read-extended-code39-barcode.cs
using IronBarCode;
using System;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Enable extended Code 39 mode
    UseCode39ExtendedMode = true,

    // Specify that we are expecting Code 39 barcodes
    ExpectBarcodeTypes = BarcodeEncoding.Code39
};

// Read barcode(s) from the extended code 39 image
var results = BarcodeReader.Read("code39extended.png", options);

// Loop through each BarcodeResult found in the image
foreach (var result in results)
{
    // Print the fully decoded ASCII string (e.g., "Test-Data!")
    Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System

Dim options As New BarcodeReaderOptions() With {
    .UseCode39ExtendedMode = True,
    .ExpectBarcodeTypes = BarcodeEncoding.Code39
}

' Read barcode(s) from the extended code 39 image
Dim results = BarcodeReader.Read("code39extended.png", options)

' Loop through each BarcodeResult found in the image
For Each result In results
    ' Print the fully decoded ASCII string (e.g., "Test-Data!")
    Console.WriteLine(result.ToString())
Next
$vbLabelText   $csharpLabel

我应该期待扩展模式提供哪些输出?

控制台输出显示来自扩展代码 39 条形码读取应用程序的

[{t:( 控制台输出可能无法正确显示所有 ASCII 字符。 在这种情况下,请将输出重定向到 .txt 文件以验证提取结果。

高级代码 39 阅读技巧

处理多个条形码

IronBarcode 可自动检测和读取单个图像中的多个 Code 39 条形码。 Read 方法返回一个结果集合,允许您单独处理每个条形码。 对于处理成张条形码或复杂文档的应用程序,请参阅我们的读取多个条形码指南。

处理劣质图片

Code 39 BarCode 有时会在不太理想的条件下出现--褪色打印、倾斜角度或低分辨率扫描。 IronBarcode 包括功能强大的 图像校正过滤器,可显著提高阅读准确性:

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.Code39,
    UseCode39ExtendedMode = true,

    // Apply image correction filters
    ImageFilters = new ImageFilterCollection() {
        new SharpenFilter(),
        new ContrastFilter(),
        new BrightnessFilter()
    }
};
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = BarcodeEncoding.Code39,
    UseCode39ExtendedMode = true,

    // Apply image correction filters
    ImageFilters = new ImageFilterCollection() {
        new SharpenFilter(),
        new ContrastFilter(),
        new BrightnessFilter()
    }
};
Dim options As New BarcodeReaderOptions() With {
    .ExpectBarcodeTypes = BarcodeEncoding.Code39,
    .UseCode39ExtendedMode = True,
    .ImageFilters = New ImageFilterCollection() From {
        New SharpenFilter(),
        New ContrastFilter(),
        New BrightnessFilter()
    }
}
$vbLabelText   $csharpLabel

性能优化

对于大批量条形码读取应用,可以考虑这些优化策略:

1.指定准确的条形码类型 - 始终设置 ExpectBarcodeTypes 以避免不必要的扫描 2.使用适当的阅读速度--根据您的需求平衡速度和准确性 3.并行处理图像 - 利用多线程进行批处理 4.预处理图像 - 仅在必要时进行修正以保持性能

摘要

IronBarcode 简化了 C# 中的 Code 39 条码读取,无论是使用标准格式还是扩展格式。 关键步骤如下

有了这些基础知识,您就可以将 Code 39 条码读取功能集成到您的 .NET 应用程序中了。 有关完整的 API 文档和其他条形码格式,请访问我们的 全面的 API 参考。 有关代码 39 的具体实践示例,请查看我们的 专用代码 39 教程

常见问题解答

什么是 Code 39,它有哪些常见用途?

Code 39 是一种通用的条形码格式,广泛应用于库存、物流和工业应用中。它的长度可以变化,因此可以灵活地用于不同的使用情况。标准 Code 39 可编码大写字母 (A-Z)、数字 (0-9) 和几个特殊字符,而 Code 39 扩展版可编码全部 128 个 ASCII 字符。IronBarcode 为读取标准和扩展 Code 39 提供了可靠的功能。

如何在 C# 中读取标准 Code 39 BarCode?

要使用 IronBarcode 读取 Code 39 条码,首先初始化一个新的 BarcodeReaderOptions 并指定条码类型为 BarcodeEncoding.Code39。然后使用读取方法,将条码图像和选项作为参数传递。最后,遍历结果集合以访问每个条码的字符串值。

标准代码 39 可以编码哪些字符?

标准代码 39 对大写字母 (A-Z)、数字 (0-9) 和几个特殊字符进行编码,包括空格、连字符 (-)、美元符号 ($)、Plus 符号 (+)、百分号 (%) 和句号 (.)。要编码全部 128 个 ASCII 字符,您需要使用 Code 39 扩展模式,IronBarcode 通过 UseCode39ExtendedMode 选项支持该模式。

标准 Code 39 和扩展 Code 39 有什么区别?

标准代码 39 仅限于大写字母、数字和一些特殊字符,这对于基本的 ID 非常有效。Code 39 扩展版满足了现代应用程序对全部 128 个 ASCII 字符进行编码的需求。IronBarcode 通过在 BarcodeReaderOptions 类中启用 UseCode39ExtendedMode 来支持全部 ASCII 字符,从而简化了这两种变体的读取。

Code 39 BarCode 可以包含人类可读文本吗?

是的,Code 39 条形码通常既以条形码的形式显示其编码值,也以条形码下方的人类可读文本形式显示其编码值。这种双重表示法在工业和物流应用中很常见,使操作员更容易验证条码内容。IronBarcode 可以读取条码数据,而无需考虑是否存在人类可读文本。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 2,070,733 | 版本: 2026.2 刚刚发布