ASM 耗材芯片测试包 · 操作手册

面向:现场操作人员 · 版本 2026-09-29(Win7 兼容版)· 适用设备:喷码控制系统(MainForm.exe 3.x)

先看这一句

这个包的目的只有一件事:在墨盒不贴芯片的情况下,让软件认为耗材在位,从而判断「不贴芯片能不能用」, 并验证手里那组抓包数据是否有效。
做法是:在电脑上假装成「读头」,替芯片应答软件。全程不改卡、不改配置、不写注册表。
本版已内置虚拟串口驱动,解压即用,不需要再上网找驱动。
本版已针对 Win7 重做测试端:请用 1_测试端_Win7版\启动.cmd, 不需要浏览器(浏览器版仅支持 Win10 / Win11)。
目录
  1. 30 秒看懂:三条路线选一条
  2. 准备工作:装驱动 + 建一对虚拟串口
  3. 先跑这两个:环境自检 + 一键建端口
  4. 路线 A:Win7 版测试端(推荐)
  5. 路线 B:浏览器测试端(仅 Win10 / Win11)
  6. 路线 C:脚本版虚拟读头(备用)
  7. 本次实验:无芯片三步对照(含记录表)
  8. 结果判读
  9. 读不到 / 报错 的排查顺序
  10. 安全须知(必读)
  11. 附录 A:包内文件清单
  12. 附录 B:协议速查
  13. 附录 C:驱动来源与验签记录
  14. 附录 D:参考资料怎么读

1. 30 秒看懂:三条路线选一条

路线用什么适合什么情况需要什么
A Win7 首选 1_测试端_Win7版\启动.cmd 现场是 Win7;或不想折腾浏览器 Windows 自带组件,不需要安装任何东西
B 1_测试端\测试端.html
(或用在线直链)
现场是 Win10 / Win11 且浏览器较新,想要图形界面 Chrome / Edge 86+。Win7 用不了
C 3_备用_脚本版读头\ 里的 ChipSim 想用命令行长时间挂着;或只做纯嗅探 Windows 自带脚本环境 + 虚拟串口对
D 只跑 ChipReader(4_读卡工具\) 不是做替代,只是想看真读头到底回什么、留一份原始字节 真实读头接着
不管走哪条,都先做第 2 章(装驱动 + 建虚拟串口对)
软件对串口是独占的,同一时刻只能有一个程序开它。所以必须造一对「两头互通」的虚拟串口: 一头给软件,一头给本包的工具。

2. 准备工作:装驱动 + 建一对虚拟串口

第 1 步 · 装驱动(已内置,直接用)

用管理员身份运行这个文件:

2_虚拟串口驱动\com0com-3.0.0.0-Win-x64_Setup-Signed.exe

它会装好驱动和两个配套工具:setupc.exe(命令行)、setupg.exe(图形界面)。 装完在「设备管理器」里应能看到 com0com - serial port emulators。

这个驱动已经验过签,可以放心装
想自己复核,可以右键该文件 →「属性」→「数字签名」页看签名者。
如果上面这个安装程序跑不起来(装到一半失败 / 报驱动签名错误)
用备用的手动安装包:2_虚拟串口驱动\com0com-3.0.0.0-Win-x86_x64_ManualInstall-Signed.zip
解压后里面有 amd64\ 和 i386\ 两套完整文件(含 com0com.sys、 com0com.cat、各 .inf、以及 setupc.exe / setupg.exe), 按包内 ReadMe.txt 手动安装。这套文件也逐个验过签,同样有效。

第 2 步 · 建两对虚拟串口

方法零:双击脚本自动建(推荐)
驱动装好后,直接双击 2_虚拟串口驱动\一键建虚拟串口.cmd: 它会先列出已有配对,再问你要建哪两对(默认 COM2↔COM12、COM3↔COM13), 然后调用 setupc 建好并复验。必须用管理员身份运行。 下面的方法一是它的手动替代。
详细说明见 2.5 节。

目标:造出 COM2 ↔ COM12、COM3 ↔ COM13。 软件填 COM2 / COM3,本包工具开 COM12 / COM13。 (端口号只是举例,只要「成对」且空闲就行。)

方法一:图形界面(推荐,简单)

  1. 进入 com0com 安装目录(一般是 C:\Program Files (x86)\com0com)
  2. 双击 setupg.exe
  3. 点「Add Pair」,建两对
  4. 把两对的两端分别改名成 COM2/COM12 和 COM3/COM13 (在端口上右键 → Change → 勾选 PortName 填新名字)

方法二:命令行(管理员)

cd "C:\Program Files (x86)\com0com"
setupc install PortName=COM2 PortName=COM12 EmuBR=yes
setupc install PortName=COM3 PortName=COM13 EmuBR=yes
setupc list
com0com 命令行的一个坑
setupc.exe 必须在它自己的安装目录里运行(它要去找同目录的 com0com.inf)。 在别的目录下运行会找不到 inf,然后弹出一个模态对话框——无人值守时会卡在那里。

第 3 步 · 核实配对

双击本包里的 3_备用_脚本版读头\CheckPairs.cmd,应看到:

CNCA0 PortName=COM2  <-->  CNCB0 PortName=COM12
CNCA1 PortName=COM3  <-->  CNCB1 PortName=COM13
如果软件要用的端口号被真实读头占着
换成别的空闲号(例如 COM5 ↔ COM15),然后改软件的「串口设置」指过去。 改完必须重启软件(软件自己会提示「更改了串口设置,请重新启动软件生效!」)。
如果你不想装虚拟串口驱动(替代办法)
用两个 USB 转 TTL 串口模块,把 A 的 TX 接 B 的 RX、B 的 TX 接 A 的 RX,地线对接。 系统里会出现两个真实串口,一个给软件、一个给本包工具。不装任何驱动,最接近真实场景。

2.5 先跑这两个:环境自检 + 一键建端口

如果你看到「端口 "COM12" 不存在」,原因就是这个
虚拟串口对还没建。测试端默认监听 COM12 / COM13,机器上没有这两个口, 自然打不开 —— 这跟软件、跟抓包数据都没关系,纯粹是前置步骤没做。 按下面①②③走一遍即可。

① 环境自检(先跑,把现状看清楚)

双击 1_测试端_Win7版\检查环境.cmd,或在测试端菜单里选 [7] 环境自检。 它会检查五项,并把结果整份写成报告文件:

检查项看什么
系统版本与位数决定装 x64 驱动还是 i386 驱动
本机串口列表机器上有哪几个口、虚拟对到底建了没有
端口占用探测哪些口打不开 —— 很可能就是喷码机软件正在用的那两个
com0com 驱动装没装、有没有建配对、安装目录在哪
软件进程MainForm / RFReader 是不是在运行

报告存在同目录,文件名以 环境自检报告_ 开头。 把它整份发回来,就能直接接着判断。

② 一键建虚拟串口

确认驱动装好后,双击 2_虚拟串口驱动\一键建虚拟串口.cmd(管理员身份)。 它会先列出已有配对,再问你端口名,默认建 COM2 ↔ COM12 与 COM3 ↔ COM13, 建完自动再列一次复验。看到 COM12 和 COM13 出现在串口列表里就算成功。

更省事的做法:把虚拟口起成「软件正在用的名字」
环境自检第 3 项会告诉你哪两个口打不开 —— 那通常就是软件 RFID 正在用的口。 如果直接把那两个号给虚拟对用,软件的「串口设置」一个字都不用改。 前提是那两个号得先空出来(拔掉实物读头,或在设备管理器里停用它)。

③ 回到测试端

再打开 启动.cmd,选 [3] 嗅探 试一下:弹出来的串口列表里应该能看到 COM12 / COM13,后面标着「空闲」。按编号选就行,不用再手打端口号。 可以填多个(例:2,3);输入 A = 全部端口; 直接回车 = 取消退出(不会误开真实端口)。

这次的改动(相对上一版)

3. 路线 A:Win7 版测试端(推荐,菜单式)

为什么 Win7 一定要用这一个
浏览器版依赖 Web Serial,对浏览器版本要求高,Win7 上基本用不了 (Win7 最高只能装到较老版本的 Chrome,且官方已不再维护)。 本目录下的 Win7 版测试端只用 Windows 自带的 .NET 串口, 不依赖浏览器、不联网,Win7 / Win10 / Win11 都能跑。

文件在哪

文件作用
1_测试端_Win7版\启动.cmd双击这个。菜单式入口,所有功能从菜单里选。
1_测试端_Win7版\TestEnd.ps1脚本版引擎(Win7 自带的脚本宿主 2.0 版本即可运行)
1_测试端_Win7版\TestEnd.cs
1_测试端_Win7版\启动_CSharp版.cmd
备用方案:脚本宿主被组策略禁用时用它,会用系统自带的编译程序现场编译一个独立小程序
1_测试端_Win7版\使用说明_Win7.txt同一份说明的纯文本版,可打印

怎么用(跟着菜单走就行)

  1. 双击 启动.cmd。菜单顶部会先列出本机串口,先确认端口号对不对。
  2. 选 [1] 自检:不开串口,先确认程序本身没问题。正常显示「通过 6 项,失败 0 项」。
  3. 选 [2] 实验指引:把三步对照实验和结果判读打出来,可以对照着做。
  4. 选 [3] 嗅探:只听不应答。先确认「端口对通了」—— 能看到软件发的命令就说明通了。
  5. 选 [4] 虚拟读头 全0(对照组)。运行后重启喷码机软件,看界面提示。
  6. 选 [5] 虚拟读头 全非零(实验组,本次实验用这个)。运行后再重启喷码机软件,看提示。
  7. 选 [7] 查看上次的运行日志:把日志整份留档。
三个必知的操作要点

在 Win7 上双击没反应 / 一闪而过

  1. 确认是解压之后再运行的,不要直接在压缩包里双击。
  2. 若提示找不到脚本宿主,改用 [8] 用 C# 版运行 (或直接双击 启动_CSharp版.cmd)。它会找系统自带的编译程序现场编译; Win7 一般自带 .NET Framework 3.5,里面就有。
  3. 两个都不行,多半是系统组件缺失或被安全软件拦截 —— 把屏幕内容截图留档。
本版已做的实测(可复核)

3.5 路线 B:浏览器测试端(仅 Win10 / Win11)

Win7 上不要用这一节
浏览器只在「安全上下文」下允许访问串口,而且需要 Chrome / Edge 86 以上。 Win7 装不到这么新的浏览器,打开只会看到一段文字、串口列表是空的、按钮点不动。 Win7 请用上一节的 1_测试端_Win7版\启动.cmd。

怎么打开

  1. 方式一(最省事):用 Chrome 或 Edge 打开在线直链:
    https://asm-chiptest.app.workbuddy.host/
  2. 方式二(离线):双击 1_测试端\测试端.html。
    注意:浏览器只在「安全上下文」下允许访问串口。用在线直链(https)没问题; 如果双击本地文件打开(地址栏是 file://)且页面提示不支持,就用在线直链。

四个页签分别干什么

页签干什么什么时候用
嗅探(只听)一个字都不回,只显示软件发了什么命令、发到哪个地址 第一次上手先用它,确认「端口对通了」
虚拟读头(应答)收到命令就应答,编码区可自己填 本次实验的主场
手动发命令自己组一条命令发出去;也能粘一整串十六进制做反向解析 想单独验证某个命令或分析一段记录时
结果判定选两个现象,自动给结论 + 判读表 + 三步实验 做完实验要出结论时

操作步骤

  1. 点 「选择串口…」,在弹出的列表里选配对里留给工具的那一端(例:COM12)
  2. 点 「打开」。状态变成「已连接 · 9600 8N1」就成功
  3. 切到 「虚拟读头」页签(只有这个页签会应答,其它页签只听不说)
  4. 档位保持 auto;编码区先点 「全 0(对照组)」
  5. 把喷码机软件重启,观察界面提示
  6. 关掉串口 → 点 「全非零(推荐)」 → 重新「打开」→ 再重启软件,再观察一次
  7. 把两次现象记到第 5 章的表里,然后切到 「结果判定」页签选一下,会直接出结论
两个关键按钮,别点错
两次只差这一个变量,所以结论最干净。

日志可以随时「导出日志」,导成 txt 留档。

4. 路线 B:脚本版虚拟读头(备用)

目录:3_备用_脚本版读头\。能力与路线 A 的「虚拟读头」等价,用命令行方式跑。

启动

  1. 双击 ChipSim.cmd
  2. 直接回车 = 用默认(监听 COM12、COM13,auto 档)
  3. 打开喷码机软件,确认「串口设置」= COM2 / COM3,重启软件

本次实验要用的命令(带全非零编码区)

ChipSim.cmd -Port COM12,COM13 -Profile auto -Code "04 24 0D 1C 04 24 0D 1C 04 24 0D 1C 04 24 0D" -Seconds 0

-Code 后面是 15 个字节的十六进制(卡号重复 3 遍再加 3 个字节)。 -Seconds 0 是一直跑,不会自己退出。

只当嗅探器用

ChipSim.cmd -Port COM12 -DumpOnly

记录会写到 ChipSim_日期时间\sim.log,可以整份留档。

档位一览

档位 / 参数行为
auto(启动器默认)已知的 4 组命令按实测复刻,其余命令一律回状态 100
measured严格复刻真机:只答地址 0/1 的 3C/3D,其余完全沉默
chip任何命令都回,编码区填卡号 04 24 0D 1C
always100 / empty / silent调档位时用来排除问题
CheckPairs.cmd一键列出虚拟串口配对关系 + 本机已注册串口

5. 本次实验:无芯片三步对照

前提
设备已连接,两个墨盒都没贴芯片。全程不改软件配置、不贴芯片。

第 1 步 · 基线:什么都不开

直接开机,看软件界面提示什么。什么都别改。

第 2 步 · 对照组:编码区全 0

打开工具(auto 档 + 编码区全 0)→ 确认串口已开 → 重启软件 → 看提示。

第 3 步 · 实验组:编码区全非零

关掉串口 → 点「全非零(推荐)」 → 重新打开 → 再重启软件 → 看提示。

为什么这三步能出结论
第 2 步和第 3 步只差「编码区」一个变量。如果第 2 步报「空」、第 3 步不报, 那就证明:软件是靠「读到的编码非零」放行的 —— 抓包数据有效,而且不贴芯片也能用。

记录表(可打印)

项目填写
日期 / 记录人
机器序列号 / 生产线号
软件安装目录
软件「串口设置」里的端口号
虚拟串口配对(例 COM2↔COM12)
墨水型号 / 稀释剂型号
第 1 步 基线现象报「无法通讯」 / 报「空」 / 正常不报错 / 其它:
第 2 步 全 0 编码区现象报「无法通讯」 / 报「空」 / 正常不报错 / 其它:
第 3 步 全非零编码区现象报「无法通讯」 / 报「空」 / 正常不报错 / 其它:
工具窗口里看到的命令
导出的日志文件名
结论

6. 结果判读

你看到的说明什么下一步
不开工具就正常(两个墨盒没芯片也不报错,能喷印) 这台机器的耗材识别没有被启用(或已被关掉)。 结论已出:不需要芯片。手里那组抓包数据与这台机器无关。
不开工具报无法通讯 → 开了还报无法通讯 链路没通:端口没配成一对,或软件没重启。 回去查第 2 章:软件端口号是否等于配对的一端;改完是否重启了软件。
不开工具报无法通讯 → 开了改报空 第一道关卡(通讯)通了,卡在第二道(编码校验)。 把编码区改成全非零再试一次,这是关键变量。
第 2 步报空,第 3 步(全非零)不报 理想结果软件靠「编码非零」放行。 抓包数据判定为有效;虚拟读头可以长期替代芯片使用。
第 3 步(全非零)仍然报空 还有一层条件没满足(软件里还有两个前置标志由读卡程序侧设置, 本包工具只回应答帧、管不到)。 把导出的日志整份留档(含工具窗口内容),需要继续分析这一层。
一句话备用结论
只要第 2 步报「空」而第 3 步不报,你就可以确定:软件判断耗材靠的是「读到的编码非零」, 不是芯片里存的什么数据。这意味着不贴芯片也能用,并且不需要向厂家买卡。

7. 读不到 / 报错 的排查顺序

  1. 提示「打开失败:路径中具有非法字符。」 → 这是上一版启动器的缺陷 (%~dp0 的结尾反斜杠紧贴引号,\" 被当作转义引号, 日志目录末尾多出一个双引号)。本版已修:启动器去掉结尾反斜杠、 程序侧自动归一化、日志写入全程保护。详见 2.5 节。
  2. 提示「端口 \"COM12\" 不存在」 → 虚拟串口对没建。 先跑 检查环境.cmd 看诊断,再双击 2_虚拟串口驱动\一键建虚拟串口.cmd。 详见 2.5 节。这条跟软件、跟抓包数据无关。
  3. 工具窗口里一条命令都没收到 → 问题在「软件用的端口号 ≠ 虚拟对的那一端」。 核对软件的「串口设置」,改完重启软件。不要怀疑工具。
  4. 提示「打开失败」 → 该端口被占用。可能是:真实读头占着、喷码机软件没关、 上一次的工具没退出。
  5. 提示「写入超时」 → 说明对端没有程序在读。检查工具是否真的打开在 「配对里留给它的那一端」上。用 CheckPairs.cmd 看配对关系。
  6. 收到命令但不报「无法通讯」、直接报「空」 → 通讯是通的,卡在编码校验, 按第 5 章第 3 步把编码区改成全非零。
  7. 改完设置没变化 → 软件没有重启。软件是启动时读一次串口配置,之后不重读。
虚拟串口行为的一个已知特性(能帮你定位问题)
所以「一开始就持续超时」= 对端没人在监听那个口。

8. 安全须知(必读)

本包不包含那台设备的软件本体,也不要用带毒的那一份
原始设备目录里的主程序 MainForm.exe 已确认被 XRed 蠕虫注入过 (特征串:XRed、Synaptics)。不要运行它、不要把它拷到干净机器或生产机上。 所有「打开软件观察现象」的操作,都请在那台已经装有软件的机器上做。
本包工具的行为边界

附录 A:包内文件清单

路径是什么本次要不要用
操作手册.html你正在看的这份★ 先读
一页速查.txt压缩到一页的现场速查,可打印★ 现场带着
1_测试端_Win7版\启动.cmdWin7 版测试端(菜单式,推荐)★ 路线 A
1_测试端_Win7版\TestEnd.ps1 / TestEnd.csWin7 版引擎(脚本版 + C# 备用版)★
1_测试端_Win7版\使用说明_Win7.txtWin7 版使用说明(可打印)★
1_测试端\测试端.html浏览器版测试端(仅 Win10 / Win11)路线 B
1_测试端\打开说明.txt浏览器版的打开方式与浏览器要求路线 B
2_虚拟串口驱动\com0com-3.0.0.0-Win-x64_Setup-Signed.exe 虚拟串口驱动安装程序(已内置,已验签)★ 必做前置
2_虚拟串口驱动\com0com-3.0.0.0-Win-x86_x64_ManualInstall-Signed.zip 手动安装备用包(含 amd64/i386 全量文件 + setupc/setupg)装不上时用
1_测试端_Win7版\检查环境.cmd一键环境自检(端口/驱动/占用),结果写成报告文件★ 出问题先跑这个
2_虚拟串口驱动\一键建虚拟串口.cmd一键建虚拟串口对(默认 COM2↔COM12、COM3↔COM13,可自定义)★ 必做前置
2_虚拟串口驱动\Install_Com0com.cmd 原脚本:走 SourceForge 官方 zip 那条路(本包已内置驱动,一般用不到)备用
3_备用_脚本版读头\ChipSim.cmd / .ps1脚本版虚拟读头路线 B
3_备用_脚本版读头\CheckPairs.cmd查看虚拟串口配对★ 排障常用
4_读卡工具\ReadChip.cmd / ReadChip_CSharp.cmd读真实芯片的号码 / 验证串口通信路线 C
4_读卡工具\Diag_Serial.cmd串口诊断排障
5_参考资料\墨水空与溶剂空报警逻辑逆向.html软件为什么报「空」的完整分析想搞懂原理时读
5_参考资料\交接文档.md整个项目的历史与结论汇总交接/存档用
5_参考资料\驱动来源与验签记录.txt驱动的下载来源、大小、SHA-256、签名信息复核用

附录 B:协议速查

方向格式说明
软件 → 读头01 08 A3 <地址> <命令> 01 00 <校验> 8 字节。地址 30=墨水、31=溶剂
读头 → 软件01 16 A3 <地址> 00 <状态> <编码区 15 字节> <校验> 22 字节。状态 64(=100) / 00
校验末字节 = ~(本帧前面所有字节逐字节异或) & 0xFF 已逐样本核对
串口参数9600 / 8 数据位 / 无校验 / 1 停止位固定

软件开机后实际会发的命令(实测抓到):

01 08 A3 30 3C 01 00 58    地址0 + 0x3C   开机问一次
01 08 A3 31 3D 01 00 58    地址1 + 0x3D   开机问一次
01 08 A3 30 01 01 00 65    地址0 + 0x01   之后每秒轮询(心跳)
01 08 A3 31 01 01 00 64    地址1 + 0x01   之后每秒轮询(心跳)
为什么「编码区必须非零」
软件收到读卡结果后,会先检查几个 8 字节块是不是非零;全 0 就当成「没读到东西」, 把耗材余量账本清 0,界面立刻报「墨水空 / 溶剂空」。 这就是「通讯通了反而报空」的原因 —— 通讯过关了,卡在编码校验。

附录 C:驱动来源与验签记录

项目内容
软件名com0com(Null-modem emulator,GPL 开源虚拟串口驱动)
版本3.0.0.0(x64 中文说明:32+64 位签名版)
本包内的文件com0com-3.0.0.0-Win-x64_Setup-Signed.exe(261,544 字节)
来源GitHub 上的 com0com 二进制归档仓库 BrickBot/Archive 的 com0com release (该 release 明确说明这些安装包来自 SourceForge 的 signed-drivers 项目)
与官方对照官方 SourceForge 3.0.0.0 zip 里的 Setup_com0com_v3.0.0.0_W7_x64_signed.exe 为 261,544 字节, 与本包内文件大小逐字节一致;签名者与指纹也一致 → 即同一个文件
签名状态Valid(有效)
签署者CN=CyberCircuits, O=CyberCircuits, C=NZ
签发者COMODO RSA Code Signing CA(含 COMODO 时间戳)
证书指纹24D85DC7025D8BBE83778C6BFF78E715F4E59CD0
SHA-25626486b28604b49a9008c54feb11b9ece0008a8287ee5caf0bcf2a62f4317128f
手动包内文件amd64 下的 com0com.sys、 setupc.exe、setupg.exe、 setup.dll 均为 Valid,签署者同为 CyberCircuits
提醒:网上有仿冒 / 转载站
只从 com0com 官方项目页或本手册列出的归档来源拿文件,拿到后核对上面的大小与 SHA-256。 本包内的两份驱动都已按上表核对过,可直接使用。

附录 D:参考资料怎么读

你想知道看哪份看哪节
为什么软件会报「墨水空 / 溶剂空」 5_参考资料\墨水空与溶剂空报警逻辑逆向.html 「0. 白话版:三个最常见的问题」
每个字节代表什么白话版第 2 问(含两帧逐字节表)
能不能自己买卡做卡白话版第 3 问
整套工具的设计思路、为什么用虚拟读头 5_参考资料\交接文档.md 第 2 章「系统架构」、第 7 章「工具清单」
项目还没解决的问题有哪些 5_参考资料\交接文档.md 第 9 章「待办 / 未解决」

本手册与包内工具均为现场测试用途。
协议常量与包内既有的脚本版虚拟读头(ChipSim)实现完全一致,两者可交叉验证。
全程不修改设备、不修改任何配置文件。