# 应用配置详解 **本文档引用的文件** - [config.ini](file://config.ini) - [Install/Geomative Studio/config.ini](file://Install/Geomative Studio/config.ini) - [Release/config.ini](file://Release/config.ini) - [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp) - [cpp/Views/DailLogin.cpp](file://cpp/Views/DailLogin.cpp) ## 目录 1. [简介](#简介) 2. [配置文件结构](#配置文件结构) 3. [核心配置节分析](#核心配置节分析) 4. [多环境配置示例](#多环境配置示例) 5. [配置加载优先级](#配置加载优先级) 6. [配置维护最佳实践](#配置维护最佳实践) 7. [结论](#结论) ## 简介 GeomativeStudio是一款专业的地球物理数据处理软件,其行为和功能通过`config.ini`配置文件进行控制。本文档深入解析该配置文件的结构与各项参数的具体含义,涵盖用户界面、数据传输、设备连接、用户认证及跨孔测量等关键配置。通过分析代码实现,我们将揭示配置参数如何影响系统行为,并提供实际应用场景下的配置建议。 ## 配置文件结构 GeomativeStudio的`config.ini`文件采用标准的INI文件格式,由多个节(section)组成,每个节包含若干键值对(key-value pairs)。配置文件定义了软件的用户界面语言、数据传输设置、导出格式、远程设备连接信息、用户认证凭据以及跨孔测量参数等核心功能。 ```mermaid flowchart TD A[config.ini] --> B[UI] A --> C[TRANSFER_INFO] A --> D[EXPORT_DATA] A --> E[ONLINE_DEVICE] A --> F[USER_INFO] A --> G[CROSS_HOLE_CFG] B --> B1[Language] C --> C1[Url] C --> C2[HomePage] D --> D1[2dDataExpStyle] E --> E1[RemoteType] E --> E2[IP] E --> E3[Port] F --> F1[UserID] F --> F2[UserPwd] G --> G1[Number] G --> G2[CFG_1...CFG_N] ``` **Diagram sources** - [config.ini](file://config.ini) ## 核心配置节分析 ### [UI] 节:界面语言控制 `[UI]`节中的`Language`参数控制软件界面的显示语言。 - **Language=1**:表示界面语言为中文 - **Language=2**:表示界面语言为英文 该参数在软件启动时被读取,并通过`WM_CHANGE_LANGUAGE`消息通知主窗口切换语言。代码实现中,系统会根据当前线程的区域设置(LCID)和配置值共同决定最终的语言显示。 ```cpp int iLanguage = GetPrivateProfileInt(_T("UI"), _T("Language"), 0, _T("./config.ini")); if (LANG_ZHCN == iLanguage && (LANG_CHINESE_SIMPLIFIED == PRIMARYLANGID(LANGIDFROMLCID(lcidNew)))) { WritePrivateProfileString(_T("UI"), _T("Language"), _T("1"), _T("./config.ini")); m_pMainWnd->SendMessage(WM_CHANGE_LANGUAGE, (WPARAM)LANG_ZHCN, 0); } else { WritePrivateProfileString(_T("UI"), _T("Language"), _T("2"), _T("./config.ini")); m_pMainWnd->SendMessage(WM_CHANGE_LANGUAGE, (WPARAM)LANG_ENUS, 0); } ``` **Section sources** - [config.ini](file://config.ini#L1-L3) - [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L446-L458) ### [TRANSFER_INFO] 节:数据传输与系统更新 `[TRANSFER_INFO]`节定义了软件的数据传输和系统更新相关URL。 - **Url**:系统更新服务器地址,用于检查和下载软件更新 - **HomePage**:公司主页URL,可能用于用户引导或信息展示 这些参数在`GetCfgUrl()`函数中被读取,如果获取失败,系统会弹出错误提示。该配置支持软件的在线升级功能,确保用户能够及时获取最新版本。 ```cpp ::GetPrivateProfileString(_T("TRANSFER_INFO"), _T("Url"),_T("NULL"), chUrl, 150,_T("./config.ini")); ::GetPrivateProfileString(_T("TRANSFER_INFO"), _T("HomePage"),_T("NULL"), chHomePage, 150,_T("./config.ini")); ``` **Section sources** - [config.ini](file://config.ini#L4-L7) - [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L1116-L1135) ### [EXPORT_DATA] 节:导出数据格式 `[EXPORT_DATA]`节中的`2dDataExpStyle`参数控制二维数据的导出格式。 - **2dDataExpStyle=0**:表示一种特定的二维数据导出样式 该参数在软件初始化时被读取,影响数据导出模块的行为。不同的值可能对应不同的文件格式、坐标系统或数据组织方式。 ```cpp m_i2dDataExpStyle = GetPrivateProfileInt(_T("EXPORT_DATA"), _T("2dDataExpStyle"), 0, _T("./config.ini")); ``` **Section sources** - [config.ini](file://config.ini#L8-L10) - [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L624) ### [ONLINE_DEVICE] 节:远程设备连接 `[ONLINE_DEVICE]`节配置了与远程设备的网络连接参数。 - **RemoteType**:传输模式,如USB、云端或WiFi - **IP**:远程服务器或设备的IP地址 - **Port**:通信端口号 在软件启动时,如果选择云端或WiFi模式,系统会读取这些参数并尝试建立网络连接。如果IP或端口配置错误,会弹出相应的错误提示。 ```cpp char chIP[30]="NULL"; GetPrivateProfileString(_T("ONLINE_DEVICE"),_T("IP"), "NULL",chIP, sizeof(chIP),_T("./config.ini")); WORD wPort = GetPrivateProfileInt(_T("ONLINE_DEVICE"), _T("Port"), 0, _T("./config.ini")); ``` **Section sources** - [config.ini](file://config.ini#L11-L15) - [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L492-L502) ### [USER_INFO] 节:用户认证机制 `[USER_INFO]`节包含用户认证相关的信息。 - **UserID**:用户的唯一标识符 - **UserPwd**:用户密码,存储在单独的`[USER_Pwd]`节中 - **UserSave**:是否保存用户凭据 - **UserAuto**:是否自动登录 用户在登录界面输入凭据后,如果选择保存,系统会将用户名和密码写回配置文件。认证机制通过`DailLogin`对话框实现,确保只有授权用户才能访问系统。 ```cpp WritePrivateProfileString(_T("USER_INFO"), _T("UserID"), csID, _T("./config.ini")); WritePrivateProfileString(_T("USER_Pwd"), _T("UserPwd"), csPwd, _T("./config.ini")); ``` **Section sources** - [config.ini](file://config.ini#L25-L38) - [cpp/Views/DailLogin.cpp](file://cpp/Views/DailLogin.cpp#L137-L140) ### [CROSS_HOLE_CFG] 节:跨孔测量参数 `[CROSS_HOLE_CFG]`节定义了跨孔测量的相关物理参数。 - **Number**:配置组的数量 - **CFG_1...CFG_N**:每个配置组的具体参数 - **Name**:配置名称 - **FirstPoleDep**:第一电极深度(单位:米) - **HoleSpace**:孔间距(单位:米) 这些参数通过`GeCrossHoleCfg()`函数解析,用于地质勘探中的跨孔电阻率成像。系统会根据配置数量循环读取每个`CFG_X`节的参数,并存储在内存映射中供后续处理使用。 ```cpp int iNumber = ::GetPrivateProfileInt(_T("CROSS_HOLE_CFG"), _T("Number"),255,_T("./config.ini")); for (int i = 1; i <= iNumber; i++) { if (!ParserSigCrossHole(i)) { bRes = false; break; } } ``` **Section sources** - [config.ini](file://config.ini#L39-L73) - [cpp/Main/GeoMative.cpp](file://cpp/Main/GeoMative.cpp#L1182-L1221) ## 多环境配置示例 ### 开发环境配置 ```ini [UI] Language=1 [TRANSFER_INFO] Url=http://dev.update.geomative.com/Upgrade/software/V2.0 HomePage=http://dev.geomative.com/ [ONLINE_DEVICE] RemoteType=2 IP=192.168.1.100 Port=8769 ``` ### 测试环境配置 ```ini [UI] Language=2 [TRANSFER_INFO] Url=http://test.update.geomative.com/Upgrade/software/V2.0 HomePage=http://test.geomative.com/ [ONLINE_DEVICE] RemoteType=2 IP=10.0.0.50 Port=8769 ``` ### 生产环境配置 ```ini [UI] Language=1 [TRANSFER_INFO] Url=http://update.geomative.com/Upgrade/software/V2.0 HomePage=http://www.geomative.com/ [ONLINE_DEVICE] RemoteType=2 IP=120.31.131.181 Port=8769 ``` ## 配置加载优先级 GeomativeStudio遵循特定的配置文件加载优先级: 1. **根目录优先**:位于软件根目录的`config.ini`具有最高优先级 2. **安装目录次之**:`Install/Geomative Studio/`目录下的配置文件作为备选 3. **运行时动态更新**:某些配置(如用户凭据)可在运行时修改并立即生效 这种设计允许用户在不同环境中灵活切换配置,同时确保关键设置不会被意外覆盖。例如,`Release/config.ini`中的`Language=2`会覆盖安装目录中相同文件的设置。 ## 配置维护最佳实践 ### 参数修改后的生效机制 - **重启生效**:大多数配置需要重启软件才能生效 - **即时生效**:用户界面语言等少数配置可在运行时动态切换 - **验证机制**:关键参数(如IP地址)在读取后会进行有效性验证 ### 常见配置错误排查方法 1. **连接失败**:检查`ONLINE_DEVICE`节的IP和Port是否正确 2. **语言不切换**:确认`UI`节的`Language`值是否为1或2 3. **更新失败**:验证`TRANSFER_INFO`中的URL是否可访问 4. **认证失败**:检查`USER_INFO`和`USER_Pwd`节的凭据是否正确 5. **跨孔数据异常**:核对`CROSS_HOLE_CFG`中各孔的间距和深度设置 建议在修改配置前备份原文件,并在修改后通过日志文件(位于`LOG/`目录)验证配置是否正确加载。 **Section sources** - [config.ini](file://config.ini) - [Release/config.ini](file://Release/config.ini) - [Install/Geomative Studio/config.ini](file://Install/Geomative Studio/config.ini) ## 结论 GeomativeStudio的`config.ini`文件是控制系统行为的核心组件。通过深入分析其结构和参数含义,我们可以更好地理解软件的工作机制,并根据实际需求进行定制化配置。遵循最佳实践进行配置维护,可以确保系统的稳定运行和高效管理。