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,339 @@
# 开发工具与实用程序
<cite>
**本文档引用的文件**
- [SComPort.cpp](file://cpp\Tools\SComPort.cpp)
- [SComPort.h](file://h\SComPort.h)
- [TcpClient.cpp](file://cpp\Tools\TcpClient.cpp)
- [TcpClient.h](file://h\TcpClient.h)
- [Zmodem.cpp](file://cpp\Tools\Zmodem.cpp)
- [Zmodem.h](file://h\Zmodem.h)
- [Crc16.cpp](file://cpp\Tools\Crc16.cpp)
- [Crc16.h](file://h\Crc16.h)
- [Crc32.cpp](file://cpp\Tools\Crc32.cpp)
- [Crc32.h](file://h\Crc32.h)
- [FileOperTools.cpp](file://cpp\Tools\FileOperTools.cpp)
- [FileOperTools.h](file://h\FileOperTools.h)
- [GD10OperCmd.cpp](file://cpp\Tools\GD10OperCmd.cpp)
- [GD10OperCmd.h](file://h\GD10OperCmd.h)
- [NetWorkOper.cpp](file://cpp\Tools\NetWorkOper.cpp)
- [NetWorkOper.h](file://h\NetWorkOper.h)
- [GUCodeCreator.cpp](file://cpp\Tools\GUCodeCreator.cpp)
- [GUCodeCreator.h](file://h\GUCodeCreator.h)
- [excel.cpp](file://cpp\Tools\excel.cpp)
- [excel.h](file://h\excel.h)
- [checkupdate.cpp](file://cpp\Tools\checkupdate.cpp)
- [checkupdate.h](file://h\checkupdate.h)
</cite>
## 目录
1. [通信相关工具](#通信相关工具)
2. [数据处理工具](#数据处理工具)
3. [设备交互工具](#设备交互工具)
4. [辅助工具](#辅助工具)
5. [调用示例与最佳实践](#调用示例与最佳实践)
## 通信相关工具
### SComPort.cpp - 串口通信
`SComPort.cpp` 文件实现了 `CSComPort` 类,用于处理串口通信。该类提供了串口的打开、关闭、数据发送和接收等基本功能。主要功能包括:
- **串口管理**:通过 `OpenComm``CloseComm` 方法管理串口的打开和关闭。
- **数据传输**:提供 `SendDataDirectly``ReceiveDataDirectly` 方法进行数据的直接发送和接收。
- **事件处理**:支持通过 `SetOwnerWnd``SetCommID` 设置所有者窗口和通信ID,以便在串口事件发生时进行通知。
**Section sources**
- [SComPort.cpp](file://cpp\Tools\SComPort.cpp#L1-L1199)
- [SComPort.h](file://h\SComPort.h#L1-L74)
### TcpClient.cpp - TCP网络通信
`TcpClient.cpp` 文件实现了 `CTcpClient` 类,用于处理TCP网络通信。该类提供了TCP连接的初始化、连接、断开连接、数据发送和接收等功能。主要功能包括:
- **连接管理**:通过 `InitailTcp``ConnectToServer` 方法初始化和建立TCP连接。
- **数据传输**:提供 `SendData``RecvData` 方法进行数据的发送和接收。
- **连接状态检查**:通过 `GetConnectStatus` 方法检查连接状态,确保通信的可靠性。
**Section sources**
- [TcpClient.cpp](file://cpp\Tools\TcpClient.cpp#L1-L449)
- [TcpClient.h](file://h\TcpClient.h#L1-L76)
### Zmodem.cpp - Zmodem协议文件传输
`Zmodem.cpp` 文件实现了 `Zmodem` 类,用于实现Zmodem协议的文件传输。该类提供了文件的发送和接收功能,支持断点续传。主要功能包括:
- **文件发送**:通过 `Send` 方法发送文件,支持批量文件传输。
- **文件接收**:通过 `Receive` 方法接收文件,支持断点续传。
- **协议处理**:内部实现了Zmodem协议的各种帧类型处理,如 `ZRQINIT``ZRINIT``ZFILE` 等。
**Section sources**
- [Zmodem.cpp](file://cpp\Tools\Zmodem.cpp#L1-L1940)
- [Zmodem.h](file://h\Zmodem.h#L1-L143)
## 数据处理工具
### Crc16.cpp 和 Crc32.cpp - 数据校验
`Crc16.cpp``Crc32.cpp` 文件分别实现了 `Crc16``Crc32` 类,用于提供数据校验功能。这些类通过计算CRC(循环冗余校验)值来确保数据的完整性。主要功能包括:
- **CRC16**`Crc16` 类提供16位CRC校验,适用于较小的数据块。
- **CRC32**`Crc32` 类提供32位CRC校验,适用于较大的数据块。
**Section sources**
- [Crc16.cpp](file://cpp\Tools\Crc16.cpp#L1-L54)
- [Crc16.h](file://h\Crc16.h#L1-L37)
- [Crc32.cpp](file://cpp\Tools\Crc32.cpp#L1-L51)
- [Crc32.h](file://h\Crc32.h#L1-L37)
### FileOperTools.cpp - 文件操作封装
`FileOperTools.cpp` 文件实现了 `CFileOperTools` 类,提供了一系列文件操作的封装方法。主要功能包括:
- **文件复制**:通过 `CopyFolder` 方法复制整个文件夹。
- **文件删除**:通过 `DeleteFileDirect``DeleteDirectory` 方法删除文件和目录。
- **日志记录**:通过 `WriteComLog` 方法记录通信日志,支持多线程安全。
**Section sources**
- [FileOperTools.cpp](file://cpp\Tools\FileOperTools.cpp#L1-L420)
- [FileOperTools.h](file://h\FileOperTools.h#L1-L37)
## 设备交互工具
### GD10OperCmd.cpp - GD10设备通信指令
`GD10OperCmd.cpp` 文件实现了 `CGD10OperCmd` 类,定义了与GD10设备的通信指令。主要功能包括:
- **工程管理**:通过 `project_add``project_delete` 方法添加和删除工程。
- **测区管理**:通过 `testzone_add``testzone_delete` 方法添加和删除测区。
- **脚本管理**:通过 `script_add``script_delete` 方法添加和删除脚本。
**Section sources**
- [GD10OperCmd.cpp](file://cpp\Tools\GD10OperCmd.cpp#L1-L1213)
- [GD10OperCmd.h](file://h\GD10OperCmd.h#L1-L37)
### NetWorkOper.cpp - 网络操作
`NetWorkOper.cpp` 文件实现了 `CNetWorkOper` 类,处理网络操作。主要功能包括:
- **连接管理**:通过 `StartConnect` 方法建立与服务器的连接。
- **数据传输**:通过 `TransferOper` 方法进行数据的转发。
- **实时数据接收**:通过 `ThreadFunction` 方法在后台线程中接收实时数据。
**Section sources**
- [NetWorkOper.cpp](file://cpp\Tools\NetWorkOper.cpp#L1-L706)
- [NetWorkOper.h](file://h\NetWorkOper.h#L1-L37)
## 辅助工具
### GUCodeCreator.cpp - GU码生成
`GUCodeCreator.cpp` 文件实现了 `CGUCodeCreator` 类,用于生成GU码。主要功能包括:
- **MAC地址获取**:通过 `GetMacAddress` 方法获取本机的MAC地址。
- **时间戳生成**:通过 `GetTotalSecond` 方法获取当前时间的总秒数。
- **GU码生成**:通过 `GenerateGUCode` 方法生成GU码,结合MAC地址和时间戳。
**Section sources**
- [GUCodeCreator.cpp](file://cpp\Tools\GUCodeCreator.cpp#L1-L395)
- [GUCodeCreator.h](file://h\GUCodeCreator.h#L1-L37)
### excel.cpp - Excel文件导出
`excel.cpp` 文件实现了与Excel文件的交互,主要用于数据导出。主要功能包括:
- **Excel操作**:通过 `_Application` 类提供的方法进行Excel文件的创建、打开、保存等操作。
- **数据写入**:通过 `Range``Cells` 方法将数据写入Excel文件。
**Section sources**
- [excel.cpp](file://cpp\Tools\excel.cpp#L1-L7130)
- [excel.h](file://h\excel.h#L1-L37)
### checkupdate.cpp - 版本检查
`checkupdate.cpp` 文件实现了 `Ccheckupdate` 类,用于版本检查和更新。主要功能包括:
- **版本检查**:通过 `checkGeoMaive` 方法检查当前版本是否需要更新。
- **文件下载**:通过 `RequestFileContent` 方法从服务器下载文件内容。
- **更新操作**:通过 `UpdateAppToDev``UpdateGD10Dev` 方法执行更新操作。
**Section sources**
- [checkupdate.cpp](file://cpp\Tools\checkupdate.cpp#L1-L1523)
- [checkupdate.h](file://h\checkupdate.h#L1-L37)
## 调用示例与最佳实践
### 通信相关工具调用示例
#### 串口通信
```cpp
CSComPort comPort;
if (comPort.OpenComm("COM1")) {
char sendData[] = "Hello, World!";
comPort.SendDataDirectly(sendData, strlen(sendData));
char receiveData[1024];
int receiveSize;
if (comPort.ReceiveDataDirectly(receiveData, &receiveSize)) {
// 处理接收到的数据
}
comPort.CloseComm();
}
```
#### TCP网络通信
```cpp
CTcpClient tcpClient;
if (tcpClient.InitailTcp()) {
if (tcpClient.ConnectToServer("192.168.1.1", 8080)) {
char sendData[] = "Hello, Server!";
tcpClient.SendData(sendData, strlen(sendData));
char receiveData[1024];
int actualLen;
if (tcpClient.RecvData(receiveData, 1024, actualLen)) {
// 处理接收到的数据
}
tcpClient.CloseConnect();
}
}
```
#### Zmodem协议文件传输
```cpp
CSComPort comPort;
Zmodem zmodem(&comPort);
if (comPort.OpenComm("COM1")) {
char *files[] = {"file1.txt", "file2.txt", NULL};
if (zmodem.Send(files)) {
// 文件发送成功
}
if (zmodem.Receive("C:\\ReceivedFiles\\")) {
// 文件接收成功
}
comPort.CloseComm();
}
```
### 数据处理工具调用示例
#### CRC16和CRC32校验
```cpp
Crc16 crc16(0);
Crc32 crc32(0xFFFFFFFFL);
char data[] = "Hello, World!";
for (int i = 0; i < strlen(data); i++) {
crc16.update(data[i]);
crc32.update(data[i]);
}
unsigned short crc16Value = crc16.value();
unsigned long crc32Value = crc32.value();
```
#### 文件操作
```cpp
CFileOperTools fileTools;
if (fileTools.CopyFolder("C:\\SourceFolder", "D:\\DestinationFolder")) {
// 文件夹复制成功
}
if (fileTools.DeleteDirectory("D:\\OldFolder")) {
// 文件夹删除成功
}
CString logMessage = "This is a log message.";
fileTools.WriteComLog(logMessage);
```
### 设备交互工具调用示例
#### GD10设备通信
```cpp
CGD10OperCmd gd10Cmd;
if (gd10Cmd.project_add("00:11:22:33:44:55", "MyProject")) {
// 工程添加成功
}
if (gd10Cmd.testzone_add("MyProject", "MyTestZone", "Type1")) {
// 测区添加成功
}
if (gd10Cmd.script_add("VES123", "Script1", "0")) {
// 脚本添加成功
}
```
#### 网络操作
```cpp
CNetWorkOper netOper;
if (netOper.Initialize()) {
if (netOper.StartConnect("192.168.1.1", 8080)) {
if (netOper.StartWork()) {
// 网络操作开始
}
}
}
```
### 辅助工具调用示例
#### GU码生成
```cpp
CGUCodeCreator guCodeCreator;
CString guCode = guCodeCreator.GenerateGUCode();
```
#### Excel文件导出
```cpp
_Application excelApp;
excelApp.CreateDispatch("Excel.Application");
excelApp.SetVisible(TRUE);
_Workbook workbook = excelApp.GetWorkbooks().Add();
_Worksheet worksheet = workbook.GetWorksheets().GetItem(1);
Range range = worksheet.GetRange("A1");
range.SetValue2("Hello, Excel!");
workbook.SaveAs("C:\\ExportedFile.xlsx");
workbook.Close();
excelApp.Quit();
```
#### 版本检查
```cpp
Ccheckupdate checkUpdate;
if (checkUpdate.checkGeoMaive()) {
// 需要更新
if (checkUpdate.DownLoadFileList()) {
if (checkUpdate.UpdateGD10Dev()) {
// 更新成功
}
}
}
```
**Section sources**
- [SComPort.cpp](file://cpp\Tools\SComPort.cpp#L1-L1199)
- [TcpClient.cpp](file://cpp\Tools\TcpClient.cpp#L1-L449)
- [Zmodem.cpp](file://cpp\Tools\Zmodem.cpp#L1-L1940)
- [Crc16.cpp](file://cpp\Tools\Crc16.cpp#L1-L54)
- [Crc32.cpp](file://cpp\Tools\Crc32.cpp#L1-L51)
- [FileOperTools.cpp](file://cpp\Tools\FileOperTools.cpp#L1-L420)
- [GD10OperCmd.cpp](file://cpp\Tools\GD10OperCmd.cpp#L1-L1213)
- [NetWorkOper.cpp](file://cpp\Tools\NetWorkOper.cpp#L1-L706)
- [GUCodeCreator.cpp](file://cpp\Tools\GUCodeCreator.cpp#L1-L395)
- [excel.cpp](file://cpp\Tools\excel.cpp#L1-L7130)
- [checkupdate.cpp](file://cpp\Tools\checkupdate.cpp#L1-L1523)