# readcard-c 面向旧版 Windows 的原生 C++/Win32 本地读卡与医保电子凭证程序。程序必须构建为 **Win32/x86**,因为 `CardReaderDLL.dll` 与 `NationECCode.dll` 均为 32 位 DLL。 ## Windows 兼容性 项目使用 Win32 API 和静态链接 MSVC 运行时。建议用 Visual Studio 2017 的 `v141` 工具集构建,目标为 Windows 7 SP1 及以上;实际下限还取决于读卡器、扫码墩驱动及医保厂商 DLL 的支持范围。 ```powershell cmake -S . -B build -A Win32 -T v141 cmake --build build --config Release ``` 也可双击 `一键打包.bat`。若直接运行 `build.ps1`,请在 PowerShell 中执行 `./build.ps1`,而不是在资源管理器中双击 `.ps1` 文件。 将以下内容一起发布: ```text HainingCardReader.exe package/DWCardReaderDLL/ package/EMICDLL/ ``` ## GUI 与后续接口 当前首版已实现 Win32 GUI、两套 DLL 的加载、医保扫码墩输入到 `NationEcTrans` 的调用、电子凭证解析展示,以及逐步骤日志。医保电子凭证按钮会把焦点交给隐藏的扫码输入框;扫码墩输入完成并发送回车后,程序通过 `NationEcTrans` 调用医保 DLL,并显示姓名、证件号、`ecToken`。 旧项目的本地 HTTP 接口(`/health`、`/api/card/read-nopin`、`/api/card/read`、`/api/hmac-sm3`、`/api/emic/scan`)应作为下一阶段迁移到本项目;在未完成前,PC 前端仍应继续调用旧的 `readcard-go` 服务。 ## 逐步骤日志 医保、读卡和日志默认配置已编译进 EXE,发布目录不需要 `config.json`。如需为个别部署环境覆盖默认值,可以在 EXE 同级目录手动放置 `config.json`,程序会优先读取它。 `operation_trace_enabled` 控制流程日志,默认 `true`。`operation_trace_include_sensitive` 控制是否记录姓名、身份证号、卡号、医保码和 `ecToken`,默认 `false`;关闭后日志保留流程步骤,但结果内容显示为 `[hidden]`。仅在临时排障并取得相应授权时,才可通过 EXE 同目录的外部 `config.json` 显式设为 `true`。日志写入 `logs/operation-YYYYMMDD.log`。