readcard-c/README.md
2026-10-22 15:33:18 +08:00

2.1 KiB
Raw Permalink Blame History

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 的支持范围。

cmake -S . -B build -A Win32 -T v141
cmake --build build --config Release

也可双击 一键打包.bat。若直接运行 build.ps1,请在 PowerShell 中执行 ./build.ps1,而不是在资源管理器中双击 .ps1 文件。

将以下内容一起发布:

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。