Files
geomative/GeomativeStudio/.qoder/repowiki/zh/content/开发者指南/代码结构/Managers模块/Managers模块.md
T
coco df489d5640 a
2026-07-03 16:05:30 +08:00

8.5 KiB

Managers模块

**Referenced Files in This Document** - [DevManager.cpp](file://cpp/Managers/DevManager.cpp) - [ProManager.cpp](file://cpp/Managers/ProManager.cpp) - [SptManager.cpp](file://cpp/Managers/SptManager.cpp) - [TdManager.cpp](file://cpp/Managers/TdManager.cpp) - [IOManager.cpp](file://cpp/Managers/IOManager.cpp) - [ExecManager.cpp](file://cpp/Managers/ExecManager.cpp) - [PasswordMng.cpp](file://cpp/Managers/PasswordMng.cpp) - [TestManager.cpp](file://cpp/Managers/TestManager.cpp)

目录

  1. DevManager职责与实现
  2. ProManager职责与实现
  3. SptManager职责与实现
  4. TdManager职责与实现
  5. IOManager职责与实现
  6. ExecManager职责与实现
  7. PasswordMng职责与实现
  8. TestManager职责与实现
  9. 管理器间协作示例

DevManager职责与实现

DevManager模块负责设备连接管理、状态监控和固件升级。该管理器通过CDevManager类实现,主要功能包括设备的添加、删除、状态更新和在线/离线设备列表的管理。它维护一个设备链表m_devLinkList,用于存储和管理所有设备对象。当设备连接时,DevManager会通过AddDevice方法将设备信息写入数据库,并在内存中创建设备对象。设备的状态(在线、离线)通过m_uState字段进行跟踪,状态更新通过UpdateDevInfo方法实现,该方法会将设备的硬件版本、软件版本、电池电压等信息同步到数据库中。对于固件升级,虽然具体实现未在代码中直接体现,但通过设备通信机制,可以实现固件的远程更新。

Section sources

ProManager职责与实现

ProManager模块负责项目创建、测区管理和任务配置。该管理器通过CProManager类实现,提供了创建、显示和管理项目、测区和任务的接口。CreateProjectInDB方法用于在数据库中创建新项目,包括项目名称、描述、位置等信息,并确保项目名称的唯一性。CreateProjectInDev方法则负责将项目信息同步到设备端,通过生成XML文件并传输到设备的SD卡目录下。对于测区管理,InsertDefaultTzToProject方法会在项目创建时自动添加一个默认测区。任务配置方面,ProManager通过ShowTzListShowProList等方法提供项目和测区的列表显示功能,支持用户进行任务的配置和选择。

Section sources

SptManager职责与实现

SptManager模块负责生成和管理2D/3D/跨孔测量脚本。该管理器通过CSptManager类实现,支持多种测量模式的脚本创建。Create2DSConInDB方法用于在数据库中创建二维测量脚本,包括脚本名称、电极数量、通道数等参数,并将脚本记录写入script2d表。对于跨孔测量,CreateCESConInDB方法实现了1D跨孔脚本的创建,支持自定义的测量参数。SptManager还维护了一个介质链表m_medLinkList,用于存储不同测量模式对应的介质对象,如CMediumACMediumB等,这些介质对象定义了具体的测量几何配置。脚本的生成过程涉及用户界面交互,通过COpCreateSptDlg等对话框收集用户输入,并最终将配置信息持久化到数据库。

Section sources

TdManager职责与实现

TdManager模块负责测试数据的采集、存储和分析。该管理器通过CTdManager类实现,提供了测试数据的列表显示、数据采集和存储功能。ShowTdListByProjectShowTdListByTz方法用于根据项目或测区显示相关的测试数据列表,支持多种测试类型(如2D电阻率、IP等)。测试数据的存储通过CTdManager与数据库的交互实现,将测量结果写入tdrspconipspcon等数据表中。对于数据分析,TdManager提供了数据导出功能,可以将测试数据导出为Access数据库文件,便于后续处理。此外,该管理器还负责管理测试数据的元信息,如测量时间、天气条件、操作人员等。

Section sources

IOManager职责与实现

IOManager模块负责数据导入导出功能,支持Excel、CSV、TXT、URF格式。该管理器通过CIOManager类实现,提供了ExportImport两个主要方法。Export方法允许用户将项目、测区和测试数据导出为Access数据库文件(.accdb),通过CreateExpDatabase方法创建目标数据库,并使用ExportDataToAccdbFile方法将数据写入。Import方法则从Access文件中读取数据,并将其导入到本地数据库中,支持项目、测区、脚本和测试数据的完整导入。虽然代码中主要实现了Access格式的导入导出,但通过扩展OperTxtFileOperUrfFile等工具类,可以支持其他格式如TXT和URF。对于Excel和CSV格式,系统可能通过外部库或工具进行转换。

Section sources

ExecManager职责与实现

ExecManager模块负责任务执行流程的管理。该管理器通过CExecManager类实现,协调测试任务的执行。Exec2DRSPTest方法是执行2D电阻率测量的核心,它首先通过Save2DRSPSetInfo方法保存测试设置,然后将配置文件发送到设备端,最后初始化测量过程。任务执行流程包括:1) 用户在界面设置测量参数;2) ExecManager生成配置文件并发送到设备;3) 设备接收指令并开始测量;4) 测量数据实时回传并存储。InitialMeasure方法负责与设备通信,发送meas_add等命令来启动测量。整个流程通过非模态对话框COpExec2DRSPTestDlg进行监控,确保用户可以实时查看测量状态。

Section sources

PasswordMng职责与实现

PasswordMng模块负责密码管理机制。该管理器通过CPasswordMng类实现,提供密码的创建、修改和删除功能。密码信息存储在数据库的password_info表中,包含设备类型、设备名称和密码字段。OperatePassword方法根据操作类型(创建、修改、删除)生成相应的SQL语句,并执行数据库事务。对于GD-10设备,该管理器还通过串口命令与设备通信,使用check_password命令验证旧密码,并使用set_param("password,...")命令在设备端设置新密码,确保数据库和设备端的密码同步。密码的输入通过对话框界面完成,OnOK方法负责验证用户输入,确保新密码与确认密码一致,并调用VerifyPassword方法检查密码格式(必须由字母和数字组成)。

Section sources

TestManager职责与实现

TestManager模块负责测试任务的调度。该管理器通过CTestManager类实现,目前代码中仅包含构造函数和析构函数的定义,具体实现细节未在提供的文件中体现。根据命名和模块化设计原则,TestManager可能负责管理测试任务队列、调度任务执行顺序、处理任务间的依赖关系以及监控任务执行状态。它可能与其他管理器(如ExecManager、TdManager)协同工作,确保测试任务能够按照预定计划高效执行。

Section sources

管理器间协作示例

各个管理器之间通过紧密协作实现完整的测量工作流。例如,当用户创建一个新项目时,ProManager首先在数据库中创建项目记录,然后触发SptManager生成默认的测量脚本。项目创建完成后,如果设备已连接,DevManager会检测到设备在线状态,并通知ProManager将项目数据同步到设备。ProManager调用CreateProjectInDev方法,生成项目配置文件并通过DevManager的设备对象发送到设备端。当用户开始执行测量任务时,ExecManager从ProManager获取项目和测区信息,从SptManager获取测量脚本,配置测试参数后,通过DevManager与设备通信,启动测量。测量过程中,TdManager负责接收和存储从设备传回的数据。整个流程体现了各管理器职责分明又相互协作的设计理念。