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)目录
- DevManager职责与实现
- ProManager职责与实现
- SptManager职责与实现
- TdManager职责与实现
- IOManager职责与实现
- ExecManager职责与实现
- PasswordMng职责与实现
- TestManager职责与实现
- 管理器间协作示例
DevManager职责与实现
DevManager模块负责设备连接管理、状态监控和固件升级。该管理器通过CDevManager类实现,主要功能包括设备的添加、删除、状态更新和在线/离线设备列表的管理。它维护一个设备链表m_devLinkList,用于存储和管理所有设备对象。当设备连接时,DevManager会通过AddDevice方法将设备信息写入数据库,并在内存中创建设备对象。设备的状态(在线、离线)通过m_uState字段进行跟踪,状态更新通过UpdateDevInfo方法实现,该方法会将设备的硬件版本、软件版本、电池电压等信息同步到数据库中。对于固件升级,虽然具体实现未在代码中直接体现,但通过设备通信机制,可以实现固件的远程更新。
Section sources
ProManager职责与实现
ProManager模块负责项目创建、测区管理和任务配置。该管理器通过CProManager类实现,提供了创建、显示和管理项目、测区和任务的接口。CreateProjectInDB方法用于在数据库中创建新项目,包括项目名称、描述、位置等信息,并确保项目名称的唯一性。CreateProjectInDev方法则负责将项目信息同步到设备端,通过生成XML文件并传输到设备的SD卡目录下。对于测区管理,InsertDefaultTzToProject方法会在项目创建时自动添加一个默认测区。任务配置方面,ProManager通过ShowTzList和ShowProList等方法提供项目和测区的列表显示功能,支持用户进行任务的配置和选择。
Section sources
SptManager职责与实现
SptManager模块负责生成和管理2D/3D/跨孔测量脚本。该管理器通过CSptManager类实现,支持多种测量模式的脚本创建。Create2DSConInDB方法用于在数据库中创建二维测量脚本,包括脚本名称、电极数量、通道数等参数,并将脚本记录写入script2d表。对于跨孔测量,CreateCESConInDB方法实现了1D跨孔脚本的创建,支持自定义的测量参数。SptManager还维护了一个介质链表m_medLinkList,用于存储不同测量模式对应的介质对象,如CMediumA、CMediumB等,这些介质对象定义了具体的测量几何配置。脚本的生成过程涉及用户界面交互,通过COpCreateSptDlg等对话框收集用户输入,并最终将配置信息持久化到数据库。
Section sources
TdManager职责与实现
TdManager模块负责测试数据的采集、存储和分析。该管理器通过CTdManager类实现,提供了测试数据的列表显示、数据采集和存储功能。ShowTdListByProject和ShowTdListByTz方法用于根据项目或测区显示相关的测试数据列表,支持多种测试类型(如2D电阻率、IP等)。测试数据的存储通过CTdManager与数据库的交互实现,将测量结果写入td、rspcon、ipspcon等数据表中。对于数据分析,TdManager提供了数据导出功能,可以将测试数据导出为Access数据库文件,便于后续处理。此外,该管理器还负责管理测试数据的元信息,如测量时间、天气条件、操作人员等。
Section sources
IOManager职责与实现
IOManager模块负责数据导入导出功能,支持Excel、CSV、TXT、URF格式。该管理器通过CIOManager类实现,提供了Export和Import两个主要方法。Export方法允许用户将项目、测区和测试数据导出为Access数据库文件(.accdb),通过CreateExpDatabase方法创建目标数据库,并使用ExportDataToAccdbFile方法将数据写入。Import方法则从Access文件中读取数据,并将其导入到本地数据库中,支持项目、测区、脚本和测试数据的完整导入。虽然代码中主要实现了Access格式的导入导出,但通过扩展OperTxtFile、OperUrfFile等工具类,可以支持其他格式如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负责接收和存储从设备传回的数据。整个流程体现了各管理器职责分明又相互协作的设计理念。