11 KiB
开发工具与实用程序
**本文档引用的文件** - [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)目录
通信相关工具
SComPort.cpp - 串口通信
SComPort.cpp 文件实现了 CSComPort 类,用于处理串口通信。该类提供了串口的打开、关闭、数据发送和接收等基本功能。主要功能包括:
- 串口管理:通过
OpenComm和CloseComm方法管理串口的打开和关闭。 - 数据传输:提供
SendDataDirectly和ReceiveDataDirectly方法进行数据的直接发送和接收。 - 事件处理:支持通过
SetOwnerWnd和SetCommID设置所有者窗口和通信ID,以便在串口事件发生时进行通知。
Section sources
- SComPort.cpp
- SComPort.h
TcpClient.cpp - TCP网络通信
TcpClient.cpp 文件实现了 CTcpClient 类,用于处理TCP网络通信。该类提供了TCP连接的初始化、连接、断开连接、数据发送和接收等功能。主要功能包括:
- 连接管理:通过
InitailTcp和ConnectToServer方法初始化和建立TCP连接。 - 数据传输:提供
SendData和RecvData方法进行数据的发送和接收。 - 连接状态检查:通过
GetConnectStatus方法检查连接状态,确保通信的可靠性。
Section sources
- TcpClient.cpp
- TcpClient.h
Zmodem.cpp - Zmodem协议文件传输
Zmodem.cpp 文件实现了 Zmodem 类,用于实现Zmodem协议的文件传输。该类提供了文件的发送和接收功能,支持断点续传。主要功能包括:
- 文件发送:通过
Send方法发送文件,支持批量文件传输。 - 文件接收:通过
Receive方法接收文件,支持断点续传。 - 协议处理:内部实现了Zmodem协议的各种帧类型处理,如
ZRQINIT、ZRINIT、ZFILE等。
Section sources
- Zmodem.cpp
- Zmodem.h
数据处理工具
Crc16.cpp 和 Crc32.cpp - 数据校验
Crc16.cpp 和 Crc32.cpp 文件分别实现了 Crc16 和 Crc32 类,用于提供数据校验功能。这些类通过计算CRC(循环冗余校验)值来确保数据的完整性。主要功能包括:
- CRC16:
Crc16类提供16位CRC校验,适用于较小的数据块。 - CRC32:
Crc32类提供32位CRC校验,适用于较大的数据块。
Section sources
- Crc16.cpp
- Crc16.h
- Crc32.cpp
- Crc32.h
FileOperTools.cpp - 文件操作封装
FileOperTools.cpp 文件实现了 CFileOperTools 类,提供了一系列文件操作的封装方法。主要功能包括:
- 文件复制:通过
CopyFolder方法复制整个文件夹。 - 文件删除:通过
DeleteFileDirect和DeleteDirectory方法删除文件和目录。 - 日志记录:通过
WriteComLog方法记录通信日志,支持多线程安全。
Section sources
- FileOperTools.cpp
- FileOperTools.h
设备交互工具
GD10OperCmd.cpp - GD10设备通信指令
GD10OperCmd.cpp 文件实现了 CGD10OperCmd 类,定义了与GD10设备的通信指令。主要功能包括:
- 工程管理:通过
project_add和project_delete方法添加和删除工程。 - 测区管理:通过
testzone_add和testzone_delete方法添加和删除测区。 - 脚本管理:通过
script_add和script_delete方法添加和删除脚本。
Section sources
- GD10OperCmd.cpp
- GD10OperCmd.h
NetWorkOper.cpp - 网络操作
NetWorkOper.cpp 文件实现了 CNetWorkOper 类,处理网络操作。主要功能包括:
- 连接管理:通过
StartConnect方法建立与服务器的连接。 - 数据传输:通过
TransferOper方法进行数据的转发。 - 实时数据接收:通过
ThreadFunction方法在后台线程中接收实时数据。
Section sources
- NetWorkOper.cpp
- NetWorkOper.h
辅助工具
GUCodeCreator.cpp - GU码生成
GUCodeCreator.cpp 文件实现了 CGUCodeCreator 类,用于生成GU码。主要功能包括:
- MAC地址获取:通过
GetMacAddress方法获取本机的MAC地址。 - 时间戳生成:通过
GetTotalSecond方法获取当前时间的总秒数。 - GU码生成:通过
GenerateGUCode方法生成GU码,结合MAC地址和时间戳。
Section sources
- GUCodeCreator.cpp
- GUCodeCreator.h
excel.cpp - Excel文件导出
excel.cpp 文件实现了与Excel文件的交互,主要用于数据导出。主要功能包括:
- Excel操作:通过
_Application类提供的方法进行Excel文件的创建、打开、保存等操作。 - 数据写入:通过
Range和Cells方法将数据写入Excel文件。
Section sources
- excel.cpp
- excel.h
checkupdate.cpp - 版本检查
checkupdate.cpp 文件实现了 Ccheckupdate 类,用于版本检查和更新。主要功能包括:
- 版本检查:通过
checkGeoMaive方法检查当前版本是否需要更新。 - 文件下载:通过
RequestFileContent方法从服务器下载文件内容。 - 更新操作:通过
UpdateAppToDev和UpdateGD10Dev方法执行更新操作。
Section sources
- checkupdate.cpp
- checkupdate.h
调用示例与最佳实践
通信相关工具调用示例
串口通信
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网络通信
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协议文件传输
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校验
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();
文件操作
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设备通信
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")) {
// 脚本添加成功
}
网络操作
CNetWorkOper netOper;
if (netOper.Initialize()) {
if (netOper.StartConnect("192.168.1.1", 8080)) {
if (netOper.StartWork()) {
// 网络操作开始
}
}
}
辅助工具调用示例
GU码生成
CGUCodeCreator guCodeCreator;
CString guCode = guCodeCreator.GenerateGUCode();
Excel文件导出
_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();
版本检查
Ccheckupdate checkUpdate;
if (checkUpdate.checkGeoMaive()) {
// 需要更新
if (checkUpdate.DownLoadFileList()) {
if (checkUpdate.UpdateGD10Dev()) {
// 更新成功
}
}
}
Section sources
- SComPort.cpp
- TcpClient.cpp
- Zmodem.cpp
- Crc16.cpp
- Crc32.cpp
- FileOperTools.cpp
- GD10OperCmd.cpp
- NetWorkOper.cpp
- GUCodeCreator.cpp
- excel.cpp
- checkupdate.cpp