最近做资产标签整理,需要批量生成一批条形码和二维码。同事照旧发来了一个在线生成器链接,我盯着输入框想了想:WiFi 二维码里写着共享密码、商品条码对应库存数据、设备标签上还有内网编号,这些内容贴到陌生网站上,生成完有没有留底,谁也说不好。最后还是在手机本地解决的,工具是一款纯血鸿蒙上的条码工具箱——「码匣」,二维码与条形码的生成、批量、扫描、记录全流程都在本机完成,不联网、不上传,目前免费。下面按模块记录实测过程,顺便梳理几类条码制式的编码约束。

功能全貌:四个模块一条流水线

码匣首页是四张功能卡片:二维码生成(生成/批量生成/扫描/记录)、条形码扫码(单次/连续/扫码记录)、条形码生成(单条/批量/生成记录)以及通用的「扫一扫」入口,底部 Tab 在首页、配置、我的之间切换。

码匣首页四模块

实际工作流基本是一条直线:在配置页定好默认参数,单条或批量生成,保存到手机,需要核对时用扫一扫回收结果,历史记录统一归档。

二维码生成:纠错级别、静默区与输出尺寸

二维码不是简单的黑白矩阵,配置页里三个参数直接对应标准里的概念。纠错级别默认 3(M),对应 QR 规范的 L/M/Q/H 四档,背后是 Reed-Solomon 纠错:等级越高,码面被污损后仍可正确识读的面积比例越大(M 约 15%、H 约 30%),代价是码点更密。打印资产标签我一般选 M,贴在可能磨损的设备外壳上才提到 Q。

边距模块数就是静默区(quiet zone),默认 2 个模块。扫码器需要靠这圈白边定位码的边界,留白不够时廉价扫码枪会频繁识别失败。默认输出尺寸 512px,足够屏幕展示和普通打印。

二维码与条形码默认配置

参数模型在端侧大致就是一个配置接口,调整后写入本地,生成页直接读取:

interface QrOptions {
  errorLevel: 0 | 1 | 2 | 3  // L M Q H
  margin: number             // 静默区模块数
  size: number               // 输出边长 px
  content: string            // 文本/WiFi/URL 等
}

内容类型上,文本、WiFi、联系方式、URL 走同一套编码管线;WiFi 码本质是约定格式的字符串(WIFI:T:WPA;S:SSID;P:密码;;),本地拼接后直接绘制,不经过任何网络请求,这也是这类工具可以放心离线使用的前提。

条形码:七类制式的编码约束与校验位

码匣的条形码生成统一支持 7 种格式:Code128、Code39、EAN-13、EAN-8、UPC-A、ITF、Codabar。制式不是随便选的,每种都有字符集和位数约束,批量页把约束直接写在了按钮上。

  • Code128:数字加字母,覆盖 ASCII 常用字符,末尾带模 103 校验符;
  • Code39:工业场景常用,字符集自带自校验特性;
  • EAN-13/EAN-8/UPC-A:零售商品码,12 位、7 位、11 位数据位加 1 位校验码,App 自动补算;
  • ITF(交叉 25 码):只编数字且必须偶数位,常用于物流箱码;
  • Codabar:数字加少量符号,首尾用 A 到 D 包络字符,图书馆、血袋标签常见。

条形码批量生成七类制式

EAN-13 的校验位是经典的模 10 加权,端侧实现就几行代码,UPC-A 只是权重起始位置不同:

function ean13Check(digits: string): number {
  // digits 为前 12 位
  let sum = 0
  for (let i = 0; i < 12; i++) {
    const n = digits.charCodeAt(i) - 48
    sum += i % 2 === 0 ? n : n * 3  // 奇数位乘1 偶数位乘3
  }
  return (10 - (sum % 10)) % 10
}

批量生成:每行一条,失败行单独标注

批量页一次粘贴多行内容,每行一条,统一选制式后「刷新生成」。实测 7 条样本混合了字母编号(ITEM-0001)、13 位商品码和短数字,选 Code128 后一次生成,按钮直接显示「保存到手机 (7)」。有个细节体验不错:某一行不满足制式约束时,比如给 EAN-13 塞了字母,失败原因会直接标在对应的预览卡上,而不是整批报错回滚,修正单条后刷新即可。

扫码识别与历史归档

「扫一扫」是通用入口,条形码和二维码无需切换页面自动识别;条形码扫码另有单次和连续两种模式,连续模式适合盘点时连续扫入。识读走系统原生识别能力,暗光和贴在曲面外壳上的标签响应都比较稳,结果直接带出码类型和原文。生成记录和扫码记录各自独立,扫码结果支持收藏和「再次生成」,配置中心可以一键恢复默认参数。

码匣功能说明

小结

整轮实测下来,码匣把一件看似简单的事做完整了:二维码侧有纠错分级和静默区控制,条形码侧七类制式齐全且校验位自动补,批量生成对失败行有明确反馈,扫码与历史形成闭环。关键是所有内容——WiFi 密码、库存编号、资产标签——都只在手机本地编码,不经过任何服务器,也不申请联网权限,应用目前免费。临时整理标签、仓储盘点、小店自制价签都够用。

仅个人实测,功能收费以实际为准。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐