# iec_method.cpp 功能拆分 + 文件服务 — ✅ 完成 > **日期**: 2026-06-30 | **编译**: ✅ 通过 > **删除**: iec_method.cpp (1014行) | **新增**: 11 个功能子文件 --- ## 最终文件结构 ``` src/system/libiec/ ├── inc/ │ ├── iec.h # CS10x 封装 (44行) │ ├── iec_method.h # 全部类型定义 + 全部回调声明 (230行) │ ├── iec_cfg_parse.h # XML配置解析接口 │ └── iec_point.h # 信号点表入口 └── src/ ├── iec.cpp # 初始化/参数配置/回调注册/线程驱动 (552行) ├── iec_cfg_parse.cpp # XML解析 (136行) ├── iec_point.cpp # datacenter链接+队列注册 (246行) ├── iec_common.cpp # ★ 全局队列+辅助函数 (80行) ├── iec_time.cpp # ★ 对时(GetTimeItfs/SetTimeItfs) (38行) ├── iec_yc.cpp # ★ 遥测+扰动遥测 (78行) ├── iec_yx.cpp # ★ 遥信 (43行) ├── iec_soe.cpp # ★ SOE (72行) ├── iec_dd.cpp # ★ 电度+时标电度 (95行) ├── iec_fault.cpp # ★ 故障事件 (75行) ├── iec_yk.cpp # ★ 遥控 (31行) ├── iec_param.cpp # ★ 参数/定值 (97行) └── iec_file.cpp # ★ 文件服务 (176行) ``` ## 文件服务实现 参照 DCU_HOST `FileParamItfs.c`,适配 RTU Linux: | 回调 | CBB类型 | 功能 | |------|---------|------| | `Fm_GetDirFile` | `CS10x_GetProDirFile` | POSIX opendir/readdir 返回文件信息 | | `Fm_SearchDirFileNum` | `CS10x_GetNumDirFile` | 统计目录下文件数 | | `Fm_ReadFile` | `CS10x_ReadFile` | 按偏移读文件片段 (fseek+fread) | | `Cs10xWriteItfs` | `CS10x_Write` | 按偏移写文件片段 (fseek+fwrite) | | `Cs10xWriteFileCheckItfs` | `CS10x_WriteFileCheck` | 创建待写入文件 | | `Cs10xWriteFinishItfs` | `CS10x_WriteFinish` | MD5校验+关闭文件 | 文件根目录: `./test/file/` | 注册: `CS10x_S_FileReadOprtHandler` / `CS10x_S_FileWriteOprtHandler` --- ## 拆分方案 ``` src/system/libiec/ ├── inc/ │ ├── iec_common.h ← 新增: 公共声明(全局队列 + GetInforOut/StampToCp56/local_sem_init) │ └── iec_method.h ← 现有: 所有类型定义 + 全部回调声明(含新增文件服务) └── src/ ├── iec_common.cpp ← 新增: 全局队列定义 + 公共辅助函数 ├── iec_time.cpp ← 新增: GetTimeItfs, SetTimeItfs, reset COI ├── iec_yc.cpp ← 新增: GetYc*, GetDiturbYc*, UserWriteDisturbYc ├── iec_yx.cpp ← 新增: GetYxCountByGroup, GetYxStatusByGroup ├── iec_soe.cpp ← 新增: UserWriteSoeEvent, GetSOE*, UpdateSoePtrOut ├── iec_dd.cpp ← 新增: GetDd*, GetTimeDdu*, UserWriteDisturbDd ├── iec_fault.cpp ← 新增: UserWriteFaultEvent, GetFaultEvent* ├── iec_yk.cpp ← 新增: Cs10xYkVerifyItfs, SetYkInfor ├── iec_param.cpp ← 新增: GbParam* 全部参数回调 ├── iec_file.cpp ← ★ 新增: 文件服务全功能(读/写/目录) └── iec_method.cpp ← 删除 ``` ## 文件服务实现 参照 DCU_HOST `FileParamItfs.c` 模式,适配 RTU Linux 环境: | 回调 | 签名 | 实现 | |------|------|------| | `Fm_GetDirFile` | `CS10x_GetProDirFile` | 遍历目录返回文件信息 | | `Fm_SearchDirFileNum` | `CS10x_GetNumDirFile` | 统计目录文件数 | | `Fm_ReadFile` | `CS10x_ReadFile` | 按偏移读取文件片段 | | `Cs10xWriteItfs` | `CS10x_Write` | 按偏移写入文件片段 | | `Cs10xWriteFileCheckItfs` | `CS10x_WriteFileCheck` | 查询/创建待写入文件 | | `Cs10xWriteFinishItfs` | `CS10x_WriteFinish` | MD5校验+文件最终化 | 注册: `CS10x_S_FileReadOprtHandler` / `CS10x_S_FileWriteOprtHandler`