2026-10-19 18:08:35 +08:00
|
|
|
|
# readcard-c
|
|
|
|
|
|
|
|
|
|
|
|
面向旧版 Windows 的原生 C++/Win32 本地读卡与医保电子凭证程序。程序必须构建为 **Win32/x86**,因为 `CardReaderDLL.dll` 与 `NationECCode.dll` 均为 32 位 DLL。
|
|
|
|
|
|
|
|
|
|
|
|
## Windows 兼容性
|
|
|
|
|
|
|
2026-10-22 15:33:18 +08:00
|
|
|
|
项目使用 Win32 API 和静态链接 MSVC 运行时。建议用 Visual Studio 2017 的 `v141` 工具集构建,目标为 Windows 7 SP1 及以上;实际下限还取决于读卡器、扫码墩驱动及医保厂商 DLL 的支持范围。
|
2026-10-19 18:08:35 +08:00
|
|
|
|
|
|
|
|
|
|
```powershell
|
2026-10-22 15:33:18 +08:00
|
|
|
|
cmake -S . -B build -A Win32 -T v141
|
2026-10-19 18:08:35 +08:00
|
|
|
|
cmake --build build --config Release
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
也可双击 `一键打包.bat`。若直接运行 `build.ps1`,请在 PowerShell 中执行 `./build.ps1`,而不是在资源管理器中双击 `.ps1` 文件。
|
|
|
|
|
|
|
|
|
|
|
|
将以下内容一起发布:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
2026-10-22 15:33:18 +08:00
|
|
|
|
HainingCardReader.exe
|
2026-10-19 18:08:35 +08:00
|
|
|
|
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` 服务。
|
|
|
|
|
|
|
|
|
|
|
|
## 逐步骤日志
|
|
|
|
|
|
|
2026-10-22 15:33:18 +08:00
|
|
|
|
医保、读卡和日志默认配置已编译进 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`。
|