请输入
菜单

FIX 共享内存使用说明 V2

作者: JT下载

20260416 更新

FIX 设备配套的客户端开发资源。


共享内存通信 (fixSharedMemory_dll/)

FIX 通过共享内存向外部程序提供任务提交与结果获取接口。纯 C API,无编译器版本限制。

文件清单

文件 说明
fixSharedMemory_api.h 客户唯一需要的头文件 (15 个函数)
fixSharedMemoryDll.dll 动态链接库
fixSharedMemoryDll.lib 导入库
fixSharedMemory_dll_README.md DLL 详细开发文档
example.cpp 使用示例
main.cpp 示例代码 (来自 test_fixSharedMemoryDll)
test_fixSharedMemoryDll.exe 预编译测试程序

快速开始

  1. fixSharedMemory_api.hfixSharedMemoryDll.lib 加入项目
  2. 运行时将 fixSharedMemoryDll.dll 部署到 exe 同目录
  3. 详细 API 说明见 fixSharedMemory_dll_README.md

三种工作流程

外部程序通过共享内存向 FIX 发送数据,FIX 处理完毕后返回一次结果。每次请求有且仅有一次响应。

流程一:仅重建(投影数据,不带教学文件)

适用场景:只需要将投影数据重建为体数据,不需要执行检测。

阶段 说明
1. 接收数据 FIX 从共享内存接收投影图像序列及重建参数
2. 加载重建参数 解析重建配置(几何参数、探测器参数、体数据尺寸等)
3. GPU 重建 在 GPU 上执行 CT 重建,将投影数据转换为三维体数据
4. 体数据加载 将重建结果加载到 3D 查看器中显示
5. 返回结果 返回 JSON,results 为空数组,teachingFile 为空字符串

流程二:重建 + 教学文件(投影数据 + 教学文件)

适用场景:发送投影数据,自动完成重建和检测的完整流程。

阶段 说明
1. 接收数据 FIX 从共享内存接收投影图像序列、重建参数及教学文件名称
2. 加载教学文件 加载指定的教学文件,恢复所有检测参数、ROI 区域和重建配置
3. GPU 重建 使用教学文件中的重建参数,在 GPU 上执行 CT 重建
4. 体数据加载 将重建得到的三维体数据加载到 3D 模块中
5. 自动检测 根据教学文件中配置的 ROI 和检测参数,自动执行检测
6. 返回结果 返回 JSON,results 包含每个 ROI 的测量数据和判定结果

流程三:体数据 + 教学文件(已重建的体数据 + 教学文件)

适用场景:体数据已在外部完成重建,只需要 FIX 执行检测。

阶段 说明
1. 接收数据 FIX 从共享内存接收已重建好的三维体数据及教学文件名称
2. 加载教学文件 加载指定的教学文件,恢复所有检测参数和 ROI 区域
3. 数据加载 将体数据加载到检测链中(无需重建,跳过 GPU 重建阶段)
4. 自动检测 根据教学文件中配置的 ROI 和检测参数,自动执行检测
5. 返回结果 返回 JSON,格式同流程二

返回格式

所有流程统一返回 JSON 格式:

json 复制代码
{
  "_metadata": {
    "application": "FIX Inspection",
    "version": "1.0",
    "createdAt": "2026-04-10T10:12:49",
    "dataName": "PCB_Projection",
    "teachingFile": "PCB1",
    "elapsedMs": 2970,
    "status": "OK"
  },
  "results": [ ... ]
}

字段说明

字段 类型 说明
_metadata.status string "OK" 成功,"FAILED" 失败
_metadata.elapsedMs number 处理总耗时(毫秒)
_metadata.teachingFile string 使用的教学文件名,仅重建时为空字符串
_metadata.dataName string 数据名称
results array 检测结果数组,仅重建时为空数组

三种流程的返回差异

流程 teachingFile results
仅重建(无教学文件) "" [](空数组)
重建 + 教学文件 "PCB1" 检测结果(ROI 测量数据、判定结果等)
体数据 + 教学文件 "PCB1" 检测结果(同上)
处理失败 视情况 [](空数组),status"FAILED"

返回示例

仅重建(无检测):

json 复制代码
{
  "_metadata": { "status": "OK", "teachingFile": "", "elapsedMs": 1850, ... },
  "results": []
}

重建 + 检测:

json 复制代码
{
  "_metadata": { "status": "OK", "teachingFile": "PCB1", "elapsedMs": 2970, ... },
  "results": [
    { "roiId": 1, "roiName": "C1", "stubLength_um": 150.3, "judgment": "PASS" },
    { "roiId": 2, "roiName": "C1", "stubLength_um": 148.7, "judgment": "PASS" }
  ]
}

注意results 中的具体字段取决于检测项目类型,不同项目的字段可能不同。


configJson 控制参数

客户端通过 --recon-config pcb.json 传入 configJson,其中 _metadata 包含行为控制参数,优先于共享内存数据包字段和 FIX 界面设置。

json 复制代码
{
  "_metadata": {
    "teachingFile": "PCB1",
    "loadToViewer": false
  },
  "geometry": { ... },
  ...
}

teachingFile — 教学文件指定

行为
"PCB1" 加载教学文件 PCB1,执行重建+检测完整流程
"" 或省略 仅执行重建,不加载教学文件

优先级:共享内存数据包的 teachingFile 字段优先;如果为空,则从 configJson 补充。推荐统一在 configJson 中设置。

loadToViewer — 显示渲染控制

行为
false 跳过 3D 查看器显示,省约 700ms
true 或省略 正常显示(默认行为)

客户端推荐用法

bash 复制代码
# 重建 + 检测,不显示渲染(最快)
test_fixSharedMemoryDll.exe -d "数据目录" -n PCB_Projection -p \
  --recon-config pcb.json
# pcb.json 中: "teachingFile": "PCB1", "loadToViewer": false

# 仅重建,无检测
# pcb.json 中: 不设 teachingFile 或设为 ""

通信原则

  • 一收一回:每次请求,FIX 处理完毕后统一返回一次结果
  • 双通道:发送通道(客户端 -> FIX)和响应通道(FIX -> 客户端)独立工作
  • 超时机制:客户端可设置等待超时时间,超时后自动断开
  • 异步自动过期:异步请求如果 5 分钟内未收到响应,DLL 自动标记为超时并触发 completion callback
  • 线程安全:所有 DLL API(包括 fsChannelGetLastError)可在任意线程安全调用;回调函数在 DLL 内部线程触发,注意同步

本文件随 FIX 安装包分发。后续 SDK 扩展将在此追加说明。

上一个
fixSharedMemoryDll — API 参考
下一个
DDS 预热操作说明
最近修改: 2026-04-16Powered by