9.3 KiB
应用配置详解
**本文档引用的文件** - [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)目录
简介
GeomativeStudio是一款专业的地球物理数据处理软件,其行为和功能通过config.ini配置文件进行控制。本文档深入解析该配置文件的结构与各项参数的具体含义,涵盖用户界面、数据传输、设备连接、用户认证及跨孔测量等关键配置。通过分析代码实现,我们将揭示配置参数如何影响系统行为,并提供实际应用场景下的配置建议。
配置文件结构
GeomativeStudio的config.ini文件采用标准的INI文件格式,由多个节(section)组成,每个节包含若干键值对(key-value pairs)。配置文件定义了软件的用户界面语言、数据传输设置、导出格式、远程设备连接信息、用户认证凭据以及跨孔测量参数等核心功能。
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
核心配置节分析
[UI] 节:界面语言控制
[UI]节中的Language参数控制软件界面的显示语言。
- Language=1:表示界面语言为中文
- Language=2:表示界面语言为英文
该参数在软件启动时被读取,并通过WM_CHANGE_LANGUAGE消息通知主窗口切换语言。代码实现中,系统会根据当前线程的区域设置(LCID)和配置值共同决定最终的语言显示。
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
[TRANSFER_INFO] 节:数据传输与系统更新
[TRANSFER_INFO]节定义了软件的数据传输和系统更新相关URL。
- Url:系统更新服务器地址,用于检查和下载软件更新
- HomePage:公司主页URL,可能用于用户引导或信息展示
这些参数在GetCfgUrl()函数中被读取,如果获取失败,系统会弹出错误提示。该配置支持软件的在线升级功能,确保用户能够及时获取最新版本。
::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
[EXPORT_DATA] 节:导出数据格式
[EXPORT_DATA]节中的2dDataExpStyle参数控制二维数据的导出格式。
- 2dDataExpStyle=0:表示一种特定的二维数据导出样式
该参数在软件初始化时被读取,影响数据导出模块的行为。不同的值可能对应不同的文件格式、坐标系统或数据组织方式。
m_i2dDataExpStyle = GetPrivateProfileInt(_T("EXPORT_DATA"), _T("2dDataExpStyle"), 0, _T("./config.ini"));
Section sources
[ONLINE_DEVICE] 节:远程设备连接
[ONLINE_DEVICE]节配置了与远程设备的网络连接参数。
- RemoteType:传输模式,如USB、云端或WiFi
- IP:远程服务器或设备的IP地址
- Port:通信端口号
在软件启动时,如果选择云端或WiFi模式,系统会读取这些参数并尝试建立网络连接。如果IP或端口配置错误,会弹出相应的错误提示。
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
[USER_INFO] 节:用户认证机制
[USER_INFO]节包含用户认证相关的信息。
- UserID:用户的唯一标识符
- UserPwd:用户密码,存储在单独的
[USER_Pwd]节中 - UserSave:是否保存用户凭据
- UserAuto:是否自动登录
用户在登录界面输入凭据后,如果选择保存,系统会将用户名和密码写回配置文件。认证机制通过DailLogin对话框实现,确保只有授权用户才能访问系统。
WritePrivateProfileString(_T("USER_INFO"), _T("UserID"), csID, _T("./config.ini"));
WritePrivateProfileString(_T("USER_Pwd"), _T("UserPwd"), csPwd, _T("./config.ini"));
Section sources
[CROSS_HOLE_CFG] 节:跨孔测量参数
[CROSS_HOLE_CFG]节定义了跨孔测量的相关物理参数。
- Number:配置组的数量
- CFG_1...CFG_N:每个配置组的具体参数
- Name:配置名称
- FirstPoleDep:第一电极深度(单位:米)
- HoleSpace:孔间距(单位:米)
这些参数通过GeCrossHoleCfg()函数解析,用于地质勘探中的跨孔电阻率成像。系统会根据配置数量循环读取每个CFG_X节的参数,并存储在内存映射中供后续处理使用。
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
多环境配置示例
开发环境配置
[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
测试环境配置
[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
生产环境配置
[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遵循特定的配置文件加载优先级:
- 根目录优先:位于软件根目录的
config.ini具有最高优先级 - 安装目录次之:
Install/Geomative Studio/目录下的配置文件作为备选 - 运行时动态更新:某些配置(如用户凭据)可在运行时修改并立即生效
这种设计允许用户在不同环境中灵活切换配置,同时确保关键设置不会被意外覆盖。例如,Release/config.ini中的Language=2会覆盖安装目录中相同文件的设置。
配置维护最佳实践
参数修改后的生效机制
- 重启生效:大多数配置需要重启软件才能生效
- 即时生效:用户界面语言等少数配置可在运行时动态切换
- 验证机制:关键参数(如IP地址)在读取后会进行有效性验证
常见配置错误排查方法
- 连接失败:检查
ONLINE_DEVICE节的IP和Port是否正确 - 语言不切换:确认
UI节的Language值是否为1或2 - 更新失败:验证
TRANSFER_INFO中的URL是否可访问 - 认证失败:检查
USER_INFO和USER_Pwd节的凭据是否正确 - 跨孔数据异常:核对
CROSS_HOLE_CFG中各孔的间距和深度设置
建议在修改配置前备份原文件,并在修改后通过日志文件(位于LOG/目录)验证配置是否正确加载。
Section sources
- config.ini
- Release/config.ini
- [Install/Geomative Studio/config.ini](file://Install/Geomative Studio/config.ini)
结论
GeomativeStudio的config.ini文件是控制系统行为的核心组件。通过深入分析其结构和参数含义,我们可以更好地理解软件的工作机制,并根据实际需求进行定制化配置。遵循最佳实践进行配置维护,可以确保系统的稳定运行和高效管理。