﻿ASM 耗材芯片测试端（Win7 / 通用版）—— 使用说明
================================================================

【为什么有这一版】
  浏览器版依赖 Web Serial，对浏览器版本要求高，Win7 上基本用不了
  （Win7 最高只能装到较老版本的 Chrome，且官方已不维护）。
  所以 Win7 现场请用本版：只用 Windows 自带的 .NET 串口，
  不依赖浏览器、不联网，Win7 / Win10 / Win11 都能跑。

【文件说明】
  启动.cmd            双击这个。菜单式入口，所有功能从菜单选。
  TestEnd.ps1         脚本版引擎（Win7 自带的脚本宿主 2.0 版本即可运行）
  TestEnd.cs          备用引擎源码
  启动_CSharp版.cmd   备用启动器：脚本宿主被组策略禁用时用它，
                      会用系统自带的 C# 编译器现场编译一个独立小程序
  检查环境.cmd        一键环境自检（不用进菜单）。★ 出问题先双击这个
  本说明.txt          你正在看的这份

【最要紧的一条：一开本工具，软件就报「串口通讯失败」】

  这说明本工具把软件要用的串口**占住了**。喷码机软件只在启动时打开一次
  串口，被占住就打不开 -> 先报串口通讯失败 -> 两路 RFID 跟着失败。
  跟协议、跟抓包数据都无关。

  立刻恢复：关掉本工具，重启喷码机软件。

  正确规则：本工具要选「虚拟串口对里留给工具的那一端」。
    例：建了 COM2 <-> COM12 这一对，软件用 COM2，本工具就选 COM12。

  最稳的顺序（这样根本选不错）：
    1) 先开喷码机软件（它会把它的两个口占住）
    2) 再开本工具 -> 选端口时软件那两个口会显示"被占用"，只能选剩下的
    3) 直接看软件现象（软件每秒轮询，一般不用重启）

  本工具每次运行都会先把上面这段规则打出来，并会检查软件是否在运行。


【另一条：报"端口 COM12 不存在"怎么办】
  这说明"虚拟串口对"还没建 —— 本程序默认监听 COM12 / COM13，
  机器上没有这两个口，自然打不开。跟软件、跟抓包数据都没关系。

  处理顺序：
    1) 先双击本目录的  检查环境.cmd  （或菜单 [7]）
       它会列出：系统几位、本机有哪几个口、哪些口被占用、
       com0com 驱动装没装、有没有建配对，并写成一份报告文件。
    2) 若没装驱动：管理员身份运行 ..\2_虚拟串口驱动\ 里的安装程序
       （64 位用 com0com-3.0.0.0-Win-x64_Setup-Signed.exe；
         32 位用 com0com-3.0.0.0-Win-x86_x64_ManualInstall-Signed.zip）
    3) 再双击 ..\2_虚拟串口驱动\一键建虚拟串口.cmd （管理员身份）
       默认建 COM2<->COM12、COM3<->COM13，建完会自动复验。
    4) 回到本目录双击 启动.cmd，选 [3] 嗅探试一下。

  省事技巧：环境自检第 3 项里"打不开"的那两个口，通常就是喷码机软件
  RFID 正在用的号。直接把那两个号给虚拟对用，软件「串口设置」都不用改。

【怎么用（菜单式）】
  1) 双击 启动.cmd
     菜单顶部会先列出"本机串口"，先确认端口号对不对。

  2) 选 [1] 自检
     不开串口，先确认程序本身没问题。
     正常应显示：通过 6 项，失败 0 项

  3) 选 [2] 实验指引
     把三步对照实验和结果判读打出来，可对照着做。

  4) 选 [3] 嗅探（只听不应答）
     先确认"端口对通了"：能看到软件发的命令，就说明链路是通的。
     一条都没收到 -> 是端口号没配对，或软件没重启，不是本程序的问题。

  5) 选 [4] 虚拟读头 全0（对照组）
     运行后【重启喷码机软件】，看界面提示。预期：报"墨水空/溶剂空"。

  6) 选 [5] 虚拟读头 全非零（实验组）★本次实验用这个
     运行后【再重启喷码机软件】，看界面提示。预期：两个"空"都不再出现。

  7) 选 [7] 环境自检
     一键出诊断报告（端口 / 驱动 / 占用 / 进程），报告文件在同目录。
     出任何"打不开端口"的问题都先跑这个。

  8) 选 [8] 查看上次的运行日志
     把日志整份留档。

  9) 选 [9] 用 C# 版运行
     脚本宿主被组策略禁用时用这个。

【三个必知的操作要点】
  * 选中 [3][4][5] 后，会列出本机所有串口让你**按编号选**，
    每个口后面会标"空闲"还是"被占用"。
    选虚拟串口对里留给工具的那一端（例：COM12）—— 选它的编号即可，
    不用手打端口号。可以填多个（例：2,3）。
    输入 A = 全部端口；直接回车 = 取消退出（不会误开真实端口）。
    输错了会重问。
  * 运行中按 Ctrl+C 结束。若系统问"是否终止批处理"，
    选 N 可以回到菜单（选 Y 会把整个菜单关掉）。
  * 每改一次设置，都要重启喷码机软件再看提示 ——
    软件只在启动时读一次串口配置。

【结果怎么读】
  第2步报"空"、第3步不报  -> 抓包数据有效！软件靠"编码非零"放行，
                            不贴芯片也能用，不用向厂家买卡。
  第3步仍然报"空"          -> 还有一层前置条件，把日志整份留档继续分析。
  不开工具就正常            -> 这台机器的耗材识别没启用，不需要芯片。
  开了还报"无法通讯"        -> 端口没配成一对，或软件没重启。

【Win7 上双击没反应 / 一闪而过怎么办】
  1) 确认是解压之后再运行的，不要在压缩包里直接双击。
  2) 若提示找不到脚本宿主，改用 [9] 用 C# 版运行
     （或直接双击 启动_CSharp版.cmd）。它会找系统自带的 C# 编译器现场编译。
     Win7 一般自带 .NET Framework 3.5，里面就有编译器。
  3) 两个都不行，多半是系统组件缺失或被安全软件拦截，请把屏幕内容截图留档。

【本版修的一个坑（C# 版）】
  上一版 C# 版会报「打开失败：路径中具有非法字符。」并且程序崩溃。
  原因是启动器传 -LogDir 时，%~dp0 的结尾反斜杠紧贴引号，那个 \" 被当成
  转义引号，日志目录末尾多出一个双引号。本版已在三层上修好（启动器、程序侧
  归一化、日志写入全程保护 + 全局兜底）。脚本版本来就没有这个问题。

【安全边界】
  只做"应答"和"查看"：不写卡、不改卡、不改任何配置文件、不写注册表、不联网。
  运行日志只写在本程序所在目录下的 TestEnd_日期时间\run.log。
  环境自检只"打开端口一下马上关"用于判断占用，不会改任何设置；
  它生成的《环境自检报告_*.txt》也写在本程序所在目录下。

================================================================
