398 lines
16 KiB
Markdown
398 lines
16 KiB
Markdown
# 故障排除
|
||
|
||
<cite>
|
||
**本文档引用的文件**
|
||
- [detect_gd20_log.txt](file://Install/Geomative Studio/LOG/detect_gd20_log.txt)
|
||
- [20211110.txt](file://Install/Geomative Studio/LOG/general/20211110.txt)
|
||
- [upg_geo_filetrans_log.txt](file://LOG/upg_geo_filetrans_log.txt)
|
||
- [config.ini](file://Install/Geomative Studio/config.ini)
|
||
- [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp)
|
||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp)
|
||
- [HttpDownload.cpp](file://cpp/Tools/HttpDownload.cpp)
|
||
- [SComPort.cpp](file://cpp/Tools/SComPort.cpp)
|
||
- [FileOperTools.cpp](file://cpp/Tools/FileOperTools.cpp)
|
||
- [LicenseUpgrade.cpp](file://cpp/Operator/LicenseUpgrade.cpp)
|
||
- [FileTransfer.cpp](file://cpp/Tools/FileTransfer.cpp)
|
||
</cite>
|
||
|
||
## 目录
|
||
1. [引言](#引言)
|
||
2. [常见问题模式分析](#常见问题模式分析)
|
||
3. [设备连接失败](#设备连接失败)
|
||
4. [固件升级错误](#固件升级错误)
|
||
5. [数据传输问题](#数据传输问题)
|
||
6. [配置异常](#配置异常)
|
||
7. [诊断工具使用方法](#诊断工具使用方法)
|
||
8. [日志分析技巧](#日志分析技巧)
|
||
9. [设备检测模块工作机制](#设备检测模块工作机制)
|
||
10. [系统性问题排查流程](#系统性问题排查流程)
|
||
11. [修复建议](#修复建议)
|
||
|
||
## 引言
|
||
本文档旨在为技术支持人员和高级用户提供一个全面的故障排除指南。基于系统日志文件分析,文档化了设备连接失败、固件升级错误、数据传输问题和配置异常等常见问题模式。通过深入分析日志文件和相关代码组件,本文档提供了错误代码的含义、相应的解决方案、诊断工具的使用方法以及日志分析技巧。同时,解释了设备检测模块的工作机制和常见检测失败的原因,为用户提供系统性的问题排查流程和修复建议。
|
||
|
||
## 常见问题模式分析
|
||
通过对系统日志文件的分析,我们识别出以下几种常见问题模式:
|
||
|
||
1. **设备连接失败**:在`detect_gd20_log.txt`日志文件中,多次出现"现在准备查找gd20设备!"的日志记录,但没有后续的连接成功或失败信息,表明设备检测过程可能被中断或未能完成。
|
||
|
||
2. **网络连接问题**:在`upg_geo_filetrans_log.txt`日志文件中,存在"无法解析主机update.geomative.com"的错误信息,这表明系统在尝试连接更新服务器时遇到了DNS解析问题。
|
||
|
||
3. **文件操作异常**:在`20211110.txt`日志文件中,记录了删除通用日志文件的操作,这可能是系统正常清理过程的一部分,但也可能指示文件访问权限问题。
|
||
|
||
4. **配置文件问题**:`config.ini`文件中的配置项显示了系统与远程服务器的连接信息,包括URL、IP地址和端口等,这些配置的正确性直接影响系统的网络功能。
|
||
|
||
**Section sources**
|
||
- [detect_gd20_log.txt](file://Install/Geomative Studio/LOG/detect_gd20_log.txt#L1-L4)
|
||
- [upg_geo_filetrans_log.txt](file://LOG/upg_geo_filetrans_log.txt#L1-L3)
|
||
- [20211110.txt](file://Install/Geomative Studio/LOG/general/20211110.txt#L1-L4)
|
||
- [config.ini](file://Install/Geomative Studio/config.ini#L1-L73)
|
||
|
||
## 设备连接失败
|
||
设备连接失败是用户最常见的问题之一。根据日志分析和代码审查,我们总结了以下可能的原因和解决方案:
|
||
|
||
### 可能原因
|
||
1. **设备未正确连接**:物理连接松动或USB接口问题可能导致设备无法被识别。
|
||
2. **驱动程序问题**:缺少或损坏的驱动程序可能导致设备无法正常工作。
|
||
3. **设备名称不匹配**:代码中定义的设备名称与实际设备名称不一致。
|
||
4. **权限问题**:应用程序可能没有足够的权限访问USB设备。
|
||
|
||
### 解决方案
|
||
1. **检查物理连接**:确保设备与计算机的连接牢固,尝试更换USB线缆或使用不同的USB端口。
|
||
2. **安装/更新驱动程序**:从`Install\GD_10`目录下的`.inf`文件安装正确的驱动程序。
|
||
3. **验证设备名称**:检查`DetcGD10Dev.cpp`文件中的设备名称定义,确保与实际设备匹配。
|
||
4. **以管理员身份运行**:尝试以管理员权限运行应用程序,确保有足够的系统权限。
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[开始设备连接] --> B{设备已连接?}
|
||
B --> |是| C[检查驱动程序]
|
||
B --> |否| D[检查物理连接]
|
||
C --> E{驱动程序正常?}
|
||
E --> |是| F[检测设备名称]
|
||
E --> |否| G[安装/更新驱动程序]
|
||
F --> H{名称匹配?}
|
||
H --> |是| I[建立连接]
|
||
H --> |否| J[修改设备名称配置]
|
||
I --> K[连接成功]
|
||
D --> L[重新连接设备]
|
||
G --> M[重启应用程序]
|
||
J --> N[更新配置文件]
|
||
K --> O[结束]
|
||
M --> C
|
||
N --> F
|
||
L --> B
|
||
```
|
||
|
||
**Diagram sources**
|
||
- [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp#L1-L189)
|
||
|
||
**Section sources**
|
||
- [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp#L1-L189)
|
||
- [detect_gd20_log.txt](file://Install/Geomative Studio/LOG/detect_gd20_log.txt#L1-L4)
|
||
|
||
## 固件升级错误
|
||
固件升级过程中可能出现多种错误,主要涉及网络连接、文件传输和权限问题。
|
||
|
||
### 错误代码与含义
|
||
1. **curl_perform failed**:cURL库执行失败,通常与网络连接问题有关。
|
||
2. **Bettery is low**:设备电量过低,无法进行固件升级。
|
||
3. **Update license failed**:许可证更新失败,可能由于操作系统环境问题。
|
||
|
||
### 解决方案
|
||
1. **检查网络连接**:确保计算机能够访问互联网,特别是能够解析`update.geomative.com`域名。
|
||
2. **充电设备**:在进行固件升级前,确保设备电量充足。
|
||
3. **检查防火墙设置**:确保防火墙没有阻止应用程序的网络访问。
|
||
4. **以管理员身份运行**:某些系统操作需要管理员权限。
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant 用户 as 用户
|
||
participant 应用程序 as 应用程序
|
||
participant 服务器 as 更新服务器
|
||
用户->>应用程序 : 请求固件升级
|
||
应用程序->>应用程序 : 检查设备电量
|
||
应用程序-->>用户 : 电量不足提示
|
||
应用程序->>应用程序 : 建立网络连接
|
||
应用程序->>服务器 : 请求更新文件
|
||
alt 网络连接成功
|
||
服务器-->>应用程序 : 发送更新文件
|
||
应用程序->>应用程序 : 验证文件完整性
|
||
应用程序->>应用程序 : 执行固件升级
|
||
应用程序-->>用户 : 升级成功
|
||
else 网络连接失败
|
||
服务器-->>应用程序 : 连接失败
|
||
应用程序-->>用户 : 网络错误提示
|
||
end
|
||
```
|
||
|
||
**Diagram sources**
|
||
- [LicenseUpgrade.cpp](file://cpp/Operator/LicenseUpgrade.cpp#L1-L497)
|
||
- [HttpDownload.cpp](file://cpp/Tools/HttpDownload.cpp#L1-L1200)
|
||
|
||
**Section sources**
|
||
- [LicenseUpgrade.cpp](file://cpp/Operator/LicenseUpgrade.cpp#L1-L497)
|
||
- [HttpDownload.cpp](file://cpp/Tools/HttpDownload.cpp#L1-L1200)
|
||
- [upg_geo_filetrans_log.txt](file://LOG/upg_geo_filetrans_log.txt#L1-L3)
|
||
|
||
## 数据传输问题
|
||
数据传输问题通常与串口通信、协议实现和数据完整性有关。
|
||
|
||
### 常见问题
|
||
1. **串口通信失败**:在`SComPort.cpp`中实现了串口通信,但可能由于波特率、数据位等参数不匹配导致通信失败。
|
||
2. **数据校验错误**:ZMODEM协议用于文件传输,CRC校验失败可能导致数据传输中断。
|
||
3. **超时问题**:数据接收超时可能导致传输失败。
|
||
|
||
### 解决方案
|
||
1. **检查串口参数**:确保应用程序和设备的串口参数(波特率、数据位、停止位等)一致。
|
||
2. **重试机制**:实现自动重试机制,在传输失败时自动重新发送数据。
|
||
3. **优化超时设置**:根据网络状况调整超时时间,避免因短暂网络波动导致传输失败。
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
A[开始数据传输] --> B[建立串口连接]
|
||
B --> C{连接成功?}
|
||
C --> |是| D[发送数据包]
|
||
C --> |否| E[检查串口参数]
|
||
D --> F[等待响应]
|
||
F --> G{收到响应?}
|
||
G --> |是| H[检查CRC校验]
|
||
G --> |否| I[重试发送]
|
||
H --> J{校验通过?}
|
||
J --> |是| K[传输完成]
|
||
J --> |否| L[请求重传]
|
||
E --> M[修正参数]
|
||
M --> B
|
||
I --> D
|
||
L --> D
|
||
K --> N[结束]
|
||
```
|
||
|
||
**Diagram sources**
|
||
- [SComPort.cpp](file://cpp/Tools/SComPort.cpp#L1-L1199)
|
||
- [Zmodem.cpp](file://cpp/Tools/Zmodem.cpp#L1287-L1320)
|
||
|
||
**Section sources**
|
||
- [SComPort.cpp](file://cpp/Tools/SComPort.cpp#L1-L1199)
|
||
- [FileTransfer.cpp](file://cpp/Tools/FileTransfer.cpp#L1-L47)
|
||
|
||
## 配置异常
|
||
配置异常可能导致系统功能不正常或完全无法工作。
|
||
|
||
### 常见配置问题
|
||
1. **更新服务器URL错误**:`config.ini`文件中的URL配置不正确。
|
||
2. **远程连接参数错误**:IP地址和端口配置错误。
|
||
3. **多通道设置问题**:多通道模式配置不当。
|
||
|
||
### 解决方案
|
||
1. **验证配置文件**:检查`config.ini`文件中的各项配置是否正确。
|
||
2. **使用默认配置**:当配置出现问题时,可以尝试使用默认配置。
|
||
3. **配置备份**:定期备份配置文件,以便在出现问题时快速恢复。
|
||
|
||
```mermaid
|
||
classDiagram
|
||
class ConfigManager {
|
||
+string UpdateUrl
|
||
+string HomePage
|
||
+int RemoteType
|
||
+string IP
|
||
+int Port
|
||
+int VerID
|
||
+int TimeZone
|
||
+bool IsMultiChannel
|
||
+string UserID
|
||
+string UserPwd
|
||
+bool UserSave
|
||
+bool UserAuto
|
||
+int PLC_Set_Interval
|
||
+loadConfig() bool
|
||
+saveConfig() bool
|
||
+validateConfig() bool
|
||
+resetToDefault() void
|
||
}
|
||
class ConfigValidator {
|
||
+validateUrl(string) bool
|
||
+validateIP(string) bool
|
||
+validatePort(int) bool
|
||
+validateCredentials(string, string) bool
|
||
}
|
||
ConfigManager --> ConfigValidator : "uses"
|
||
```
|
||
|
||
**Diagram sources**
|
||
- [config.ini](file://Install/Geomative Studio/config.ini#L1-L73)
|
||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp#L1-L661)
|
||
|
||
**Section sources**
|
||
- [config.ini](file://Install/Geomative Studio/config.ini#L1-L73)
|
||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp#L1-L661)
|
||
|
||
## 诊断工具使用方法
|
||
本节介绍系统内置诊断工具的使用方法。
|
||
|
||
### 设备检测工具
|
||
1. **启动设备检测**:应用程序启动时自动执行设备检测。
|
||
2. **查看检测日志**:检查`detect_gd20_log.txt`文件获取检测过程的详细信息。
|
||
3. **手动触发检测**:可以通过特定命令或界面操作手动触发设备检测。
|
||
|
||
### 网络诊断工具
|
||
1. **连接测试**:使用内置的HTTP下载功能测试与服务器的连接。
|
||
2. **DNS解析测试**:验证域名能否正确解析为IP地址。
|
||
3. **端口连通性测试**:检查指定端口是否开放。
|
||
|
||
### 串口诊断工具
|
||
1. **串口扫描**:列出系统中所有可用的串口设备。
|
||
2. **通信测试**:发送测试数据包验证串口通信是否正常。
|
||
3. **参数配置**:调整波特率、数据位等串口参数。
|
||
|
||
**Section sources**
|
||
- [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp#L1-L189)
|
||
- [HttpDownload.cpp](file://cpp/Tools/HttpDownload.cpp#L1-L1200)
|
||
- [SComPort.cpp](file://cpp/Tools/SComPort.cpp#L1-L1199)
|
||
|
||
## 日志分析技巧
|
||
有效的日志分析是故障排除的关键。以下是一些实用的日志分析技巧:
|
||
|
||
### 日志文件位置
|
||
1. **设备检测日志**:`Install/Geomative Studio/LOG/detect_gd20_log.txt`
|
||
2. **通用日志**:`Install/Geomative Studio/LOG/general/YYYYMMDD.txt`
|
||
3. **文件传输日志**:`LOG/upg_geo_filetrans_log.txt`
|
||
4. **串口通信日志**:`LOG/commLog.txt`
|
||
|
||
### 日志分析步骤
|
||
1. **确定时间范围**:根据问题发生的时间定位相关日志条目。
|
||
2. **查找错误关键字**:搜索"failed"、"error"、"exception"等关键字。
|
||
3. **跟踪操作流程**:按时间顺序分析日志,理解操作的执行流程。
|
||
4. **关联多个日志**:同时分析多个日志文件,获取完整的故障场景。
|
||
|
||
### 常用日志分析命令
|
||
```bash
|
||
# 查找所有包含"failed"的日志条目
|
||
grep -i "failed" *.log
|
||
|
||
# 按时间排序日志条目
|
||
sort -t' ' -k2,2 -k3,3n logfile.txt
|
||
|
||
# 统计错误类型
|
||
grep -i "error" logfile.txt | cut -d']' -f2 | sort | uniq -c
|
||
```
|
||
|
||
**Section sources**
|
||
- [FileOperTools.cpp](file://cpp/Tools/FileOperTools.cpp#L1-L420)
|
||
- [detect_gd20_log.txt](file://Install/Geomative Studio/LOG/detect_gd20_log.txt#L1-L4)
|
||
- [20211110.txt](file://Install/Geomative Studio/LOG/general/20211110.txt#L1-L4)
|
||
- [upg_geo_filetrans_log.txt](file://LOG/upg_geo_filetrans_log.txt#L1-L3)
|
||
|
||
## 设备检测模块工作机制
|
||
设备检测模块是系统的重要组成部分,负责识别和连接外部设备。
|
||
|
||
### 检测流程
|
||
1. **初始化**:创建`CDetcGD10Dev`实例并打开日志文件。
|
||
2. **枚举设备**:遍历系统中的所有可移动驱动器。
|
||
3. **名称匹配**:比较驱动器卷标名称与预定义的设备名称。
|
||
4. **路径验证**:检查特定目录结构是否存在作为备用检测方法。
|
||
5. **结果返回**:返回检测到的设备路径或空字符串。
|
||
|
||
### 关键代码分析
|
||
```mermaid
|
||
flowchart TD
|
||
A[开始设备检测] --> B[初始化日志文件]
|
||
B --> C[获取所有逻辑驱动器]
|
||
C --> D{遍历驱动器}
|
||
D --> E[检查驱动器类型]
|
||
E --> F{是否为可移动驱动器?}
|
||
F --> |是| G[获取卷标名称]
|
||
F --> |否| H[下一个驱动器]
|
||
G --> I{名称匹配GD10/GD20?}
|
||
I --> |是| J[返回驱动器路径]
|
||
I --> |否| K[检查SD/equipment目录]
|
||
K --> L{目录存在?}
|
||
L --> |是| J
|
||
L --> |否| H
|
||
H --> D
|
||
J --> M[检测完成]
|
||
```
|
||
|
||
**Diagram sources**
|
||
- [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp#L1-L189)
|
||
|
||
**Section sources**
|
||
- [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp#L1-L189)
|
||
|
||
## 系统性问题排查流程
|
||
为了高效解决用户问题,我们推荐以下系统性排查流程:
|
||
|
||
### 初步评估
|
||
1. **收集信息**:了解问题的具体表现、发生时间和频率。
|
||
2. **检查环境**:确认操作系统版本、硬件配置和网络环境。
|
||
3. **查看日志**:检查相关日志文件获取初步线索。
|
||
|
||
### 分步排查
|
||
1. **硬件检查**:验证设备物理连接和电源状态。
|
||
2. **软件检查**:确认驱动程序和应用程序版本。
|
||
3. **网络检查**:测试网络连通性和DNS解析。
|
||
4. **配置检查**:验证配置文件的正确性。
|
||
|
||
### 高级诊断
|
||
1. **启用详细日志**:增加日志级别获取更多细节。
|
||
2. **使用诊断工具**:运行系统内置的诊断工具。
|
||
3. **重现问题**:在受控环境中尝试重现问题。
|
||
|
||
### 解决方案实施
|
||
1. **选择方案**:根据诊断结果选择最合适的解决方案。
|
||
2. **实施修复**:执行修复操作并监控结果。
|
||
3. **验证效果**:确认问题已解决且没有引入新问题。
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[用户报告问题] --> B[初步评估]
|
||
B --> C[分步排查]
|
||
C --> D[高级诊断]
|
||
D --> E[解决方案实施]
|
||
E --> F{问题解决?}
|
||
F --> |是| G[关闭问题]
|
||
F --> |否| H[升级支持]
|
||
H --> I[专家分析]
|
||
I --> J[制定新方案]
|
||
J --> E
|
||
G --> K[结束]
|
||
```
|
||
|
||
**Section sources**
|
||
- [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp#L1-L189)
|
||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp#L1-L661)
|
||
- [HttpDownload.cpp](file://cpp/Tools/HttpDownload.cpp#L1-L1200)
|
||
|
||
## 修复建议
|
||
基于对系统架构和常见问题的分析,我们提出以下修复建议:
|
||
|
||
### 预防性措施
|
||
1. **定期更新**:保持应用程序和驱动程序为最新版本。
|
||
2. **配置备份**:定期备份重要配置文件。
|
||
3. **环境检查**:定期检查系统环境是否符合要求。
|
||
|
||
### 常见问题快速修复
|
||
1. **设备无法连接**:
|
||
- 重新插拔设备
|
||
- 重启应用程序
|
||
- 检查驱动程序
|
||
|
||
2. **固件升级失败**:
|
||
- 检查网络连接
|
||
- 确保设备电量充足
|
||
- 以管理员身份运行
|
||
|
||
3. **数据传输中断**:
|
||
- 检查串口连接
|
||
- 验证通信参数
|
||
- 重启传输过程
|
||
|
||
### 长期改进建议
|
||
1. **增强错误处理**:改进代码中的错误处理机制,提供更详细的错误信息。
|
||
2. **完善日志系统**:增加关键操作的日志记录,便于问题追踪。
|
||
3. **用户界面优化**:在用户界面中显示更友好的错误提示和解决方案建议。
|
||
|
||
**Section sources**
|
||
- [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp#L1-L189)
|
||
- [LicenseUpgrade.cpp](file://cpp/Operator/LicenseUpgrade.cpp#L1-L497)
|
||
- [SComPort.cpp](file://cpp/Tools/SComPort.cpp#L1-L1199) |