﻿============================================================
  ASM 耗材芯片测试包 —— 一页速查（现场打印用）
  版本 2026-09-29b（Win7 兼容版 · 含环境自检）
============================================================

【目标】墨盒不贴芯片，让软件认为耗材在位，判断"不贴芯片能不能用"，
        并验证手里那组抓包数据是否有效。

【一句话原理】在电脑上假装成"读头"，替芯片应答软件。
              全程不改卡、不改配置、不写注册表。

【本包已内置虚拟串口驱动，解压即用，不用上网找】
【本包已针对 Win7 重做测试端，不需要浏览器】


============================================================
 本版修了什么（2026-09-29c）
============================================================
 如果你在 C# 版里看到过这两样：打印「打开失败：路径中具有非法字符。」
（而且每个端口都报同一句）、最后还弹「TestEnd.exe 已停止工作」——
 那不是端口的问题，是启动器传日志目录时结尾多带了一个双引号：
   %~dp0 自带结尾反斜杠，写成 -LogDir "%HERE%" 时那个 \" 被当成转义引号，
   程序收到的路径末尾就多出一个 " ，写日志的 Path.Combine 一次次抛异常。
 已修（三层）：
   1) 启动器去掉结尾反斜杠再传；
   2) 程序侧仍会自动去掉引号并重建目录（双保险）；
   3) 写日志整个包在 try 里，失败只提示一次，绝不拖垮程序；并加了全局兜底，
      再出未预料异常也会打印原因 + 写「崩溃记录.txt」，不再无声崩溃。
 另外：脚本版（菜单 [4]/[5]）本来就没有这个问题。


============================================================
 第 0 步：出错了先跑这个（最重要的新增）
============================================================

 双击：1_测试端_Win7版\检查环境.cmd  （想让它认出软件的口，就先把软件开起来）

 它会查七项，并把结果整份写成《环境自检报告_日期时间.txt》：
   1) 系统版本与位数  —— 决定装 x64 还是 i386 驱动
   2) 本机串口列表    —— 机器上到底有哪几个口
   3) 端口探测        —— 每个口是空闲、被占用、还是设备不在（分得很清）
   4) com0com 驱动    —— 装没装、有没有建配对
   5) 期望端口检查    —— 本工具要用的两个口在不在、空不空闲
   6) 软件进程        —— MainForm / RFReader 在不在跑
   7) 软件在用的串口  —— 软件开着时，"打不开"的那几个就是它占的

 报告就在同目录里，把它整份发回来即可。


============================================================
 症状对照：一开测试端，软件就报「串口通讯失败」
============================================================
 现象：启动测试端之后，软件报「串口通讯失败」，两个耗材都跟着报
       「RFID 通讯失败」；不启动测试端，软件能正常进入，只显示两个耗材"空"。

 原因：测试端把软件要用的那两个口**占住了**。喷码机软件只在启动时打开
       一次串口，被占住就打不开 -> 先报串口通讯失败 -> 两路 RFID 跟着失败。
       这跟协议、跟抓包数据都无关，也不是驱动或芯片坏了。

 恢复（立刻可做）：关掉测试端，重启喷码机软件，就恢复正常。

 选端口规则（本版工具每次运行都会把这段打出来）：
   测试端要选的是「虚拟串口对里留给工具的那一端」。
   例：建了 COM2 <-> COM12 这一对，软件用 COM2，测试端就选 COM12。
   千万不要选软件「串口设置」里那两个号。

 推荐顺序（照这个做，选错根本不可能）：
   1) 先把喷码机软件开起来（它会把它的两个口占住）
   2) 再开测试端 -> 选端口时，软件那两个口会显示"被占用 / 打不开"，
      于是你只能选剩下的（就是工具端）
   3) 直接观察软件现象（软件是每秒轮询读卡的，一般不用重启）
   ※ 只有当你改过软件「串口设置」时，才需要重启软件。

 分清是哪种原因（关掉测试端、重启软件，看现象）：
   现象恢复正常  => 就是"工具抢了口"，按上面的顺序做即可。
   仍然通讯失败  => 是虚拟串口对把软件的端口名字占掉了：需要把那一对拆掉，
                    或把软件「串口设置」改回它原来的号。

 辅助判断：菜单 [7] 环境自检的 [7] 段会直接告诉你
   「软件现在占着哪几个口」——只要自检时软件是开着的。


============================================================
 报错对照表
============================================================

 提示「端口 "COM12" 不存在」
   -> 虚拟串口对还没建。做第 1 步的第 1、2 小步。
      这跟软件、跟抓包数据都无关。

 提示「打开失败：路径中具有非法字符。」
   -> 这是上一版启动器的缺陷（日志目录多带了一个双引号），本版已修。

 启动测试端后，软件报「串口通讯失败」+ 两个「RFID 通讯失败」
   -> 你把软件「串口设置」里用的口抢了。关掉测试端、重启软件即恢复；
      正确做法见上面的「症状对照」章。

 环境自检 [7] 段说「软件没在运行，无法推断它用哪几个口」
   -> 正常提示。把软件开起来再跑一次自检，那时"打不开"的那几个就是它的口。

 提示「打开失败：拒绝访问 / 已被占用」
   -> 端口存在但被别的东西占着：喷码机软件没关 / 真实读头占着 /
      上一次的工具没退出。

 工具一条命令都没收到（嗅探时）
   -> 软件用的端口号 != 虚拟对的那一端，或软件没重启。

 不报"无法通讯"、直接报"空"
   -> 通讯通了，卡在编码校验。用菜单 [5]（编码区全非零）。

 改完设置没变化
   -> 软件没重启。软件只在启动时读一次串口配置。


============================================================
 第 1 步：装驱动 + 建一对虚拟串口（只做一次）
============================================================

 1) 管理员身份运行（本包已内置，已验签）：
      2_虚拟串口驱动\com0com-3.0.0.0-Win-x64_Setup-Signed.exe
      签署者 CyberCircuits，状态 Valid，大小 261,544 字节
    32 位系统装不上就用备用包：
      2_虚拟串口驱动\com0com-3.0.0.0-Win-x86_x64_ManualInstall-Signed.zip
      解压后走 i386 那一套，按里面的 ReadMe.txt 手动装

 2) 建两对端口（管理员身份双击，会问你要端口名）：
      2_虚拟串口驱动\一键建虚拟串口.cmd
    默认建：软件端 COM2 <--> 工具端 COM12
            软件端 COM3 <--> 工具端 COM13
    建完它会自动再列一次，看到 COM12 / COM13 就算成功。

    ※ 更省事的做法：先看环境自检第 3 项里"打不开"的那两个口，
      它们通常就是软件 RFID 正在用的号。直接把那两个号给虚拟对用，
      软件「串口设置」一个字都不用改（前提：那个号得先空出来）。

 3) 核实：双击 3_备用_脚本版读头\CheckPairs.cmd
      应看到 COM2 <---> COM12 与 COM3 <---> COM13

  ※ 端口号可以换，只要"成对"且空闲。改完软件必须重启！
  ※ 不想装驱动也行：两个 USB 转 TTL 模块交叉对接（TX接RX、RX接TX、GND接GND）


============================================================
 第 2 步：打开测试端（Win7 用这个，不需要浏览器）
============================================================

 双击：1_测试端_Win7版\启动.cmd

  菜单顶部会先列出本机串口，然后按编号选：
    [1] 自检            不开串口，确认程序没问题（应"通过 6 项，失败 0 项"）
    [2] 实验指引        三步实验 + 结果判读
    [3] 嗅探            只听不应答，先确认"端口对通了"
    [4] 虚拟读头 全0     对照组
    [5] 虚拟读头 全非零  实验组   ★本次实验用这个
    [6] 列出本机串口
    [7] 环境自检        一键诊断报告   ★ 出问题先跑这个
    [8] 查看上次的运行日志
    [9] 用 C# 版运行    脚本宿主被禁用时用这个

  ※ [3][4][5] 会列出串口让你**按编号选**（会标"空闲/被占用"），
    不用手打端口号。可以填多个（例：2,3）。
      输入 A = 全部端口    **直接回车 = 取消退出**（不会误开真实端口）
    运行中按 Ctrl+C 结束；若问"是否终止批处理"，选 N 回菜单。
  ※ [7] 环境自检第 [5] 段会直接检查「本工具要用的两个口在不在、空不空闲」，
    这才是判断"该不该报端口不存在"的可靠依据。
  ※ Win7 上若提示找不到脚本宿主，改用菜单 [9] 的 C# 版。


============================================================
 第 3 步：做三步对照实验
============================================================

  第 1 步 · 基线（什么都不开）
    直接开机，看软件提示什么，记下来。

  第 2 步 · 对照组  菜单 [4]，编码区全 0
    运行后【重启喷码机软件】，看提示。预期：报"墨水空/溶剂空"。

  第 3 步 · 实验组  菜单 [5]，编码区全非零
    运行后【再重启喷码机软件】，看提示。预期：两个"空"都不再出现。

  ※ 第 2 步和第 3 步只差"编码区"一个变量，所以结论最干净。


============================================================
 第 4 步：读结论
============================================================
  第2步报"空"、第3步不报  => 抓包数据有效！软件靠"编码非零"放行，
                              不贴芯片也能用，不用向厂家买卡。
  第3步仍然报"空"          => 还有一层前置条件（由读卡程序侧设置），
                              把日志整份留档，需要继续分析。
  不开工具就正常            => 这台机器的耗材识别没启用，不需要芯片；
                              手里那组数据与这台机器无关。
  开了还报"无法通讯"        => 端口没配成一对，或软件没重启。


============================================================
 其它可用工具
============================================================
  浏览器版测试端（仅 Win10/Win11，Win7 用不了）
    双击 1_测试端\测试端.html   或 https://asm-chiptest.app.workbuddy.host/

  脚本版虚拟读头（命令行方式）
    ChipSim.cmd
    本次实验专用（编码区 15 字节全非零）：
    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
    只嗅探：ChipSim.cmd -Port COM12 -DumpOnly

  读真实芯片 / 验通信
    ReadChip.cmd   或   ReadChip_CSharp.cmd
    串口诊断：Diag_Serial.cmd


============================================================
 安全须知
============================================================
  * 本包不含设备软件本体。原始目录里的 MainForm.exe 已被 XRed 蠕虫注入过
    （特征串 XRed / Synaptics）—— 不要运行，不要拷到干净机器或生产机。
    所有"打开软件观察"的操作，都在那台已装软件的机器上做。
  * 本包工具只做"应答"和"查看"：不写卡、不改卡、不改配置文件、不写注册表。
    环境自检只"打开端口一下马上关"，不改任何设置。
  * 内置的 com0com 驱动已验签（签署者 CyberCircuits，状态 Valid）。
    大小 261,544 字节，SHA-256 = 26486b28604b49a9008c54feb11b9ece0008a8287ee5caf0bcf2a62f4317128f
  * 安装虚拟串口驱动属系统级改动，建议先在非生产环境试。

============================================================
 详见同目录 操作手册.html
============================================================
