玩转Brady(Honeywell)扫描枪-TTF方案-"数据规则游戏"

4 mins.4.8k

扫码枪的条码解析规则,能不能像手机 App 一样”随时更新”?

答案是:能。客户不再需要厂家改固件、跑现场、反复调试——扫一个条码,新规则立刻生效。


场景对话:客户的”自由表达式”需求

客户技术负责人: 今天客户有个需求。扫描枪要支持自由定义各种正则表达式,来适配不同的条码数据处理;要具备表达式扩展性,可以自由添加、删除。

集成商老李: 这个怎么办?Honeywell EZConfig 配置扫描枪太复杂了,我也不可能坐在客户那里给他做各种配置。而且 EZConfig 那个”格式化配置”,根本没有客户要的”正则表达式”那么强大。

老李同事: 等等,正则表达式是什么?

老李: 一句话——就是一段”匹配规则”,告诉扫码枪”什么样的数据算合格””要提取哪一段内容”。比如 ^[A-Z]{3}[0-9]{10} 就是”3个大写字母+10位数字”。

老李同事: 对了,我记得哈皮实验室有篇文章写的是 TTF 扫码枪”大脑”,扫码枪可以编程!找他们试试?

老李: 对!光哥,帮个忙,客户这个需求(……)可以做吗?之前看到你有一篇文章写的是 TTF 扫码枪大脑(《扫码枪装上”大脑”——Brady TotalFreedom 2.0/3.0 插件开发》),请哈皮帮个忙。

光哥: 好,简单,哈皮干活了。

……5 分钟后,一套完整方案出炉。


方案概览:给扫码枪装一个”规则大脑”

核心思路: 在 Honeywell TotalFreedom 2.0 (TTF2.0) 平台上,用自研的轻量正则引擎 + 规则管理器,让扫码枪的条码解析规则完全可配置——客户扫一个”规则条码”,就能添加/删除/查看解析规则,无需重新编译固件、无需厂家到场。

能力 说明
🧩 自由表达式 客户可随时添加/修改/删除解析规则
自研正则引擎 独立开发的轻量正则算法库,零依赖
📁 规则持久化 规则存于扫描枪文件系统,断电不丢失
🔄 规则热加载 扫描规则条码后立即生效,无需重启
🔒 License 授权 一枪一码,CRC32 加密校验

技术架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌─────────────────────────────────────────────────┐
│ Honeywell 扫描枪固件 │
│ ┌───────────────────────────────────────────┐ │
│ │ RegexPlugin (TTF2.0 Format) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌───────────┐ │ │
│ │ │ I/O 模块 │→│ 解析引擎 │→│ 输出模块 │ │ │
│ │ └─────────┘ └─────────┘ └───────────┘ │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ 自研正则库 (regex-lite) │ │ │
│ │ │ 零依赖 / 无 malloc / ~2KB │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ 规则管理器 (rule_manager) │ │ │
│ │ │ 文件驱动 / 64条×128字符 / 热加载 │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────┘ │
│ regexRules 规则文件 (持久化存储) │
└─────────────────────────────────────────────────┘

匹配策略:

  1. 按规则顺序依次匹配,命中一条即停止,输出结果
  2. 全部不匹配 → 透传原始数据(不干扰其他条码)

典型需求一:多格式条码提取

客户条码可能有多种格式,每种格式要提取不同的字段。

示例 1:管道分隔格式

1
2
3
输入: 5|\MH-636898762559574717|O|DEL/YKB|D|D|03|R|S|F|D2
规则: ^5\|\M([A-Z0-9-]*)\|.*
输出: H-636898762559574717

示例 2:前缀+固定长度

1
2
3
输入: 2E1234567890OATQ/RJADE03RSF44
规则: ^2([A-Z][A-Z0-9-]{10}).*
输出: E1234567890

示例 3:双数字前缀

1
2
3
输入: 201234567890OATQ/RJADE03RSF44
规则: ^20([A-Z0-9-]{10}).*
输出: 1234567890

典型需求二:多字段提取与重组

有些条码包含多个业务字段,需要一次性提取并拼接

示例 4:三字段提取(多捕获组)

1
2
3
4
输入: 6|MH-636898762559574717|EFMPC0754351961|3SF575183621FK|
规则: ^6\|M([A-Z0-9-]*)\|E([A-Z0-9-]*)\|3([A-Z0-9-]*)\|
输出: H-636898762559574717FMPC0754351961SF575183621FK
(组1+组2+组3 按顺序拼接)

示例 5:字段重排(跳过中间内容)

1
2
3
4
输入: ABCDEFG12345678ABCDEFG
规则: ^[A-Z]{6}([A-Z])([0-9]{3})[0-9]{2}([0-9]{3})([A-Z]{3})[A-Z]{4}$
输出: G123678ABC
(组1=G + 组2=123 + 组3=678 + 组4=ABC)

💡 支持最多 7 个捕获组,可拼接、可重排、可跳过——比 EZConfig 的固定格式化灵活得多。


客户最关心的:规则怎么”自由添加删除”?

控制条码

条码内容 操作 说明
RULA:H:<hex> ➕ 添加规则 Hex 编码防特殊字符丢失
RULD:<索引> 🗑️ 删除规则 按行号删除(1-based)
RULX 💥 全部清空 清空所有规则
RULL 📋 列出规则 输出当前规则列表

添加规则示例

1
2
规则: ^6\|M([A-Z0-9-]*)\|E([A-Z0-9-]*)\|3([A-Z0-9-]*)\|
条码: RULA:H:5E365C7C4D285B412D5A302D392D5D2A295C7C45285B412D5A302D392D5D2A295C7C33285B412D5A302D392D5D2A295C7C

客户把这条码(或 QR)打印出来,扫描一下 → 蜂鸣 OK → 规则生效。全程不需要厂家到场,不需要重新编译固件。


表达式编写教程(给客户的速查表)

基本语法

语法 含义 示例
^ 字符串开头 ^ABC 必须以 ABC 开头
$ 字符串结尾 XYZ$ 必须以 XYZ 结尾
. 任意单个字符 a.c 匹配 a+任意+c
[abc] 集合内任一字符 [ABC] 匹配 A/B/C 之一
[a-z] 范围 [0-9] 匹配任意数字
[^abc] 否定集合 [^0-9] 匹配非数字
(...) 捕获组(提取) (\d{3}) 提取3位数字
\d \w \s 数字/单词/空白 \d+ 连续数字
| \. \\ 转义特殊字符 | 匹配管道符

量词

语法 含义 示例
* 0 或多次 A* 任意个 A
+ 1 或多次 A+ 至少 1 个 A
? 0 或 1 次 A? 可选 A
{n} 精确 n 次 [0-9]{10} 恰好 10 位数字
{n,} 至少 n 次 [0-9]{2,} 至少 2 位
{n,m} n 到 m 次 [0-9]{2,4} 2 到 4 位

输出规则(重点)

规则写法 输出行为
无捕获组 输出整段匹配内容
1 个捕获组 (x) 输出组1内容
多个捕获组 (x)(y)(z) 按顺序拼接所有组输出

✨ 字符替换与更多花样玩法

不只是提取!表达式还能做字符替换和更多数据整形。

替换示例

1
2
3
规则: ^ABC([0-9]+)DEF$   →   替换为: 编号-\1
输入: ABC123DEF
输出: 编号-123
  • 支持组引用\1 \2 引用捕获组内容
  • 支持固定文本:如 编号- 前缀、-OK 后缀
  • 支持重排\2-\1 把两组顺序对调

未来更多玩法

玩法 说明 状态
🔄 字符替换 提取后按模板重组 支持中
🔢 计算 数字加减、校验位计算(Luhn/CRC) 可定制
🧹 数据清洗 去空格、去特殊字符、统一大小写 可定制
🎯 条件分支 按条码内容走不同输出逻辑 可定制
🔗 联动 蜂鸣/LED/GPIO 按结果触发 可定制

💡 核心:可以根据客户要求定制逻辑。 提取、替换、计算、清洗——扫描枪的条码处理能力,由客户的需求决定,而不是由 EZConfig 的配置项决定。


⚠️ 注意事项

# 注意事项 说明
1 管道符必须转义 | 而不是 |(管道符是特殊字符)
2 反斜杠双写 数据中的 \ 在规则中写 \\
3 捕获组数量限制 最多 7 个捕获组
4 规则长度限制 单条 ≤ 128 字符,最多 64 条
5 匹配即停止 命中第一条规则后不再匹配后续
6 不匹配则透传 无规则命中时输出原始数据
7 纯 ASCII 不支持中文/Unicode(条码场景均为 ASCII)
8 不支持交替 A|B 不支持,需拆成两条规则
9 规则顺序 先匹配的规则优先,新规则追加在末尾
10 修改需重载 添加/删除后立即生效(自动重载)

方案价值

对比项 传统 EZConfig 本方案
表达式能力 固定格式化,弱 完整正则,强
规则更新 重新配置/刷固件 扫条码即生效
现场支持 需要人跑现场 远程发条码即可
多格式适配 配置项有限 无限规则,按需添加
开发门槛 无编程,但能力弱 我方提供工具,客户零门槛

想试试?

你只需要准备:

  1. Honeywell TotalFreedom 支持的扫描枪(Xenon 1900/1902、Granit 等)
  2. 你的条码数据样例 + 期望输出
  3. 告诉哈皮你想实现什么

剩下的交给哈皮实验室。

💬 如需 TTF 插件开发技术支持、技术合作,请通过哈皮实验室官网联系我们。


哈皮实验室 · 让设备调试简单到离谱
🌐 www.happylab.me

Previous

  • Brady专区

      Brady(Honeywell) 扫描枪OCR-Scanner-OCR-V2正式发布-让扫描枪眼睛看懂世界

      扫描枪在产线上勤勤恳恳干了几十年,练就一身”哔一下就知道”的本领。但你要让它看看工件上的刻字?它只能一脸茫然:这题超纲了。 哈皮实验室正式发布 Scanner-...

    • Next

    • 方案

        AI-ADB-Web — 浏览器里的 Android 设备控制台

        一根 USB 线,浏览器接管一切。 告别驱动、告别命令行、告别环境配置。 👉 点击进入 AI-ADB-Web 在线工具 打开即用,无需注册,无需登录。 TIP ...

      • avatar

        HappyLab

        HAPPY LAB · Tools · Solutions · Lookup

        • 23

          Articles

        • 5

          Categories

        • 122

          Tags

        • Home
        • Tools
        • Resources
        • Pricing
        • Order
        • About
        • Contact