Files
geomative/GeomativeStudio/.qoder/repowiki/zh/content/核心功能/项目管理/测区管理/测区数据同步.md
T
coco df489d5640 a
2026-07-03 16:05:30 +08:00

9.0 KiB

测区数据同步

**本文档引用的文件** - [ProManager.cpp](file://cpp/Managers/ProManager.cpp) - [SynOperator.cpp](file://cpp/Operator/SynOperator.cpp) - [UpdateDataBase.cpp](file://cpp/Operator/UpdateDataBase.cpp) - [FileTransfer.cpp](file://cpp/Tools/FileTransfer.cpp) - [Crc16.cpp](file://cpp/Tools/Crc16.cpp) - [Crc32.cpp](file://cpp/Tools/Crc32.cpp) - [DetcGD10Dev.cpp](file://cpp/Operator/DetcGD10Dev.cpp) - [OnLineSynTdDlg.cpp](file://cpp/Views/OnLineSynTdDlg.cpp) - [OnLineSynDevDlg.cpp](file://cpp/Views/OnLineSynDevDlg.cpp) - [OpSynDlg.cpp](file://cpp/Views/OpSynDlg.cpp) - [TaskDataOper.cpp](file://cpp/Operator/TaskDataOper.cpp) - [DataOperator.cpp](file://cpp/Operator/DataOperator.cpp)

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构概述
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

引言

本文档全面构建了测区数据同步机制的技术文档,重点描述了CProManager如何协调FileTransfer和UpdateDataBase组件实现测区数据在本地应用与GD10设备间的双向同步。详细说明了同步协议的实现细节,包括数据包格式、传输校验机制(如CRC16/CRC32)和断点续传逻辑。解释了同步过程中对testzone.xml文件的读取、解析和更新流程,以及如何确保设备端与PC端测区数据的一致性。分析了同步失败的异常处理策略,如网络中断、设备无响应等情况下的重试机制和错误码定义。提供了性能优化建议,包括大数据量测区的分批传输策略和同步进度的UI反馈实现。文档包含实际同步日志的分析示例,帮助开发者诊断常见同步问题。

项目结构

项目结构显示了测区数据同步相关的文件和目录,包括CACHE、DB、Install、LOG、Release、cpp、h、res、tools等目录。关键文件包括ProManager.cpp、SynOperator.cpp、UpdateDataBase.cpp、FileTransfer.cpp等,这些文件实现了测区数据同步的核心功能。

graph TD
A[GeomativeStudio] --> B[CACHE]
A --> C[DB]
A --> D[Install]
A --> E[LOG]
A --> F[Release]
A --> G[cpp]
A --> H[h]
A --> I[res]
A --> J[tools]
G --> K[Managers]
G --> L[Operator]
G --> M[Tools]
G --> N[Views]
K --> O[ProManager.cpp]
L --> P[SynOperator.cpp]
L --> Q[UpdateDataBase.cpp]
M --> R[FileTransfer.cpp]
M --> S[Crc16.cpp]
M --> T[Crc32.cpp]
N --> U[OnLineSynTdDlg.cpp]
N --> V[OnLineSynDevDlg.cpp]
N --> W[OpSynDlg.cpp]

Diagram sources

Section sources

核心组件

核心组件包括CProManager、CSynOperator、CUpdateDataBase、FileTransfer、Crc16、Crc32等类,这些类实现了测区数据同步的核心功能。CProManager负责管理工程和测区,CSynOperator负责同步操作,CUpdateDataBase负责数据库更新,FileTransfer负责文件传输,Crc16和Crc32负责数据校验。

Section sources

架构概述

测区数据同步机制的架构包括本地应用、GD10设备、网络通信、文件传输、数据校验等组件。CProManager协调FileTransfer和UpdateDataBase组件,实现测区数据在本地应用与GD10设备间的双向同步。

graph TD
A[本地应用] --> B[CProManager]
B --> C[FileTransfer]
B --> D[UpdateDataBase]
C --> E[GD10设备]
D --> F[数据库]
E --> G[网络通信]
C --> H[Crc16]
C --> I[Crc32]

Diagram sources

详细组件分析

CProManager分析

CProManager类负责管理工程和测区,包括创建工程、创建测区、同步数据等操作。它通过调用FileTransfer和UpdateDataBase组件实现测区数据的同步。

classDiagram
class CProManager {
+ShowTzList()
+GetDMS()
+ShowProList()
+CreateProjectInDB()
+InsertDefaultTzToProject()
+CreateProjectInDev()
+CreateDefaultTzInDev()
+CreateTzInDev()
}

Diagram sources

CSynOperator分析

CSynOperator类负责同步操作,包括同步测区数据、同步任务数据等。它通过调用CProManager和FileTransfer组件实现数据同步。

classDiagram
class CSynOperator {
+Syn()
+InitialSynDlg()
}

Diagram sources

CUpdateDataBase分析

CUpdateDataBase类负责数据库更新,包括更新数据库版本、更新数据库结构等。它通过解析XML文件实现数据库的更新。

classDiagram
class CUpdateDataBase {
+QueryPreVersion()
+CheckNecessaryVersion()
+WriteVersionToDB()
+GetDBUpdatesInfo()
+ParserUpdateDBXml()
+AddDBTable()
+DeleteDBTable()
+AddTableCol()
+ModifyTableCol()
+ModifyDBTable()
}

Diagram sources

FileTransfer分析

FileTransfer类负责文件传输,包括发送文件、接收文件等。它通过调用底层通信接口实现文件的传输。

classDiagram
class FileTransfer {
+error()
+status()
}

Diagram sources

Crc16和Crc32分析

Crc16和Crc32类负责数据校验,包括计算CRC16和CRC32校验码。它们通过查表法实现高效的校验码计算。

classDiagram
class Crc16 {
+table[256]
+initialized
+Crc16()
}
class Crc32 {
+table[256]
+initialized
+Crc32()
}

Diagram sources

Section sources

依赖分析

测区数据同步机制的依赖包括本地应用、GD10设备、网络通信、文件传输、数据校验等。CProManager依赖于FileTransfer和UpdateDataBase组件,FileTransfer依赖于Crc16和Crc32组件。

graph TD
A[CProManager] --> B[FileTransfer]
A --> C[UpdateDataBase]
B --> D[Crc16]
B --> E[Crc32]

Diagram sources

性能考虑

为了提高测区数据同步的性能,可以采用分批传输策略,将大数据量的测区数据分成多个小批次进行传输。同时,可以通过UI反馈显示同步进度,提高用户体验。

故障排除指南

同步失败的常见原因包括网络中断、设备无响应、数据校验失败等。可以通过重试机制和错误码定义来处理这些异常情况。例如,当网络中断时,可以等待网络恢复后重新尝试同步;当设备无响应时,可以检查设备连接状态并重新连接。

Section sources

结论

本文档详细描述了测区数据同步机制的实现细节,包括核心组件、架构概述、详细组件分析、依赖分析、性能考虑和故障排除指南。通过本文档,开发者可以更好地理解和实现测区数据同步功能。