This commit is contained in:
coco
2026-07-03 16:05:30 +08:00
commit df489d5640
1101 changed files with 779140 additions and 0 deletions
@@ -0,0 +1,254 @@
# 应用配置详解
<cite>
**本文档引用的文件**
- [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)
</cite>
## 目录
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`文件是控制系统行为的核心组件。通过深入分析其结构和参数含义,我们可以更好地理解软件的工作机制,并根据实际需求进行定制化配置。遵循最佳实践进行配置维护,可以确保系统的稳定运行和高效管理。