识别设备
从扫描器(解码器)角度理解 Code39 的 6 个核心参数
Admin2026年9月26日
Code39 是可变长离散码,自带字符自校验,但校验位(Check Digit)是可选 Mod43,下面全部是扫描器解码侧的开关 / 配置,不是条码打印侧设置。
1. Set Lengths for Code 39|Code39 码长设置
扫描器用来过滤不符合指定字符长度的 Code39 条码,有两个参数:Length1(最小长度)、Length2(最大长度)。
- 原理:扫描器解码成功后,先统计有效数据字符数量,不在 [L1, L2] 区间直接丢弃,不上传。
- 用途:防误扫(比如近距离误读到小片段、标签上多余短 Code39)。
- 注意:
- 长度不含起始 / 终止星号*;
- 如果条码带 Mod43 校验位,长度计数包含校验字符;
- 默认一般 1~55,即任意长度都可读。
- 示例:设置 L1=8,L2=12 → 只读取 8~12 位字符的 Code39,其他全部拒绝。
2. Code 39 Check Digit Verification|Code39 校验位校验
是否启用 Mod43 校验算法校验(Code39 校验位是可选,非强制)。
- 关闭(默认):扫描器不做 Mod43 计算,只要条码的条空结构合法就认为可读。
- 开启:扫描器自动做 Mod43 求和校验;校验失败直接拒绝该条码,不会上传数据。
⚠️ 只在你的条码打印时已经附加 Mod43 校验字符时才能打开;如果条码不带校验位,打开这个选项会导致所有 Code39 扫不出来。 公式:所有数据字符求和 mod43,余数对应校验字符。
3. Transmit Code 39 Check Digit|上传 Code39 校验位
控制校验字符是否随条码数据一起传给上位机,依赖上面校验开关。
- 关闭(默认):校验位只做内部校验,不输出到电脑 / PLC。
- 开启:校验通过后,把校验字符追加在数据末尾一起上传。
业务场景区分:
- 仅校验不发送:Verify=ON,Transmit=OFF(最常用)
- 校验并且发送:Verify=ON,Transmit=ON
- 不校验、也不发送:Verify=OFF,Transmit=OFF(普通不带校验位的 Code39)
4. Code 39 Full ASCII Conversion|Code39 全 ASCII 转换(扩展 Code39)
标准 Code39 原生仅支持 43 个字符(大写字母、数字、少量符号);Full ASCII 是扫描器端的字符翻译功能,用两个标准 Code39 字符组合,表达全部 128 位 ASCII(含小写、控制字符)。
- 关闭:扫描器原样输出读到的原始 Code39 字符,例如条码里+A,上传就是+A。
- 开启:扫描器识别移位组合并自动翻译:+A → 小写a;$B → STX 控制字符。
关键点:条码打印端必须按 FullASCII 规则编码,扫描器必须同时打开该开关,两边配套;如果条码不是 FullASCII 格式,开启会乱码。
5. Code 39 Security Level|Code39 安全等级(解码冗余度)
也叫重复读校验(Redundancy),用来提升抗噪,防止条码脏污、反光造成误读(假阳性解码)。
- 本质:扫描器需要连续 N 次读出完全相同的条码数据,才判定解码成功并上传。
- Level0:读取 1 次即输出(速度最快,容错差,易误读)
- Level1:连续 2 次相同才输出(工业默认)
- Level2:连续 3 次
- Level3:更多次校验,最稳,但扫码延迟变大
选型:高速流水线选低等级;脏标签、低对比度、近距离多条码场景选高等级。
6. Code 39 Reduced Quiet Zone|Code39 缩减静区
标准 Code39 规范要求条码左右两侧保留10X 静区(空白区),X 是窄条宽度;静区不足会导致扫描器找不到起始 / 终止符,扫码失败。
- 关闭(默认):扫描器严格要求满足标准静区宽度。
- 开启:扫描器放宽静区要求,允许更小的左右空白,适合标签排版拥挤、条码贴得靠近边框的场景。
风险:开启后更容易误识别旁边其他线条、印刷噪点,只在布局受限的场景启用。