From: SnickerSun Date: Fri, 15 Mar 2024 02:46:54 +0000 (+0800) Subject: 创建QT5项目,添加diag.dll库,替换原来的libwireless.dll X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=eb086cfe87bafef89360a506b8a7f330143015fc;p=mirrors%2Ffactory_tool.git 创建QT5项目,添加diag.dll库,替换原来的libwireless.dll --- diff --git a/Library_global.h b/Library_global.h new file mode 100644 index 0000000..b110ebe --- /dev/null +++ b/Library_global.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved. + */ +#ifndef LIBRARY_GLOBAL_H +#define LIBRARY_GLOBAL_H + +#if defined(_MSC_VER) || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) || defined(WIN32) || \ + defined(_WIN32) || defined(__WIN32__) || defined(__NT__) + +#define Q_DECL_EXPORT __declspec(dllexport) +#define Q_DECL_IMPORT __declspec(dllimport) +#else +#define Q_DECL_EXPORT __attribute__((visibility("default"))) +#define Q_DECL_IMPORT __attribute__((visibility("default"))) +#endif + +#if defined(LIBRARY_LIBRARY) +#define LIBRARY_EXPORT Q_DECL_EXPORT +#else +#define LIBRARY_EXPORT Q_DECL_IMPORT +#endif + +namespace uapi { +struct FileInfo { + unsigned short sn; + unsigned char name_len; + unsigned char is_dir; + unsigned int file_size; + char name[0xFF]; +}; + +struct FileListResult { + unsigned int lsInfoNumber; + FileInfo lsInfo[0]; +}; + +struct FileTransmitDataCount { + unsigned int total_size; + unsigned int transmited_size; +}; + +struct TransmitResult { + bool finishResult; +}; + +struct AtReceiveData { + unsigned int dataLength; + unsigned char *data; +}; + +struct SerialPortReceiveData { + unsigned int dataLength; + unsigned char *data; +}; +enum InfoType { + INFO_SERIALPORT, // 单板段数据 + INFO_FILE_TRANSMIT_RESULT, + INFO_FILE_LIST_RESULT, + INFO_AT_RECEIVE, +}; +enum ConnectMode { + MODE_SERIALPORT, + MODE_BLUETOOTH +}; +enum ErrorCode{ + ERROR_FAIL = -1, + ERROR_SUCC = 0x0, +}; +} + +#endif // LIBRARY_GLOBAL_H diff --git a/factory_tool.pro b/factory_tool.pro new file mode 100644 index 0000000..a3cfb75 --- /dev/null +++ b/factory_tool.pro @@ -0,0 +1,51 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2024-03-04T16:59:50 +# +#------------------------------------------------- + +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = factory_tool +TEMPLATE = app + + +SOURCES += main.cpp\ + mainwindow.cpp \ + at_data.cpp \ + custom.cpp \ + mythread.cpp \ + result_thread.cpp \ + wrtm_class.cpp + +HEADERS += mainwindow.h \ + Library_global.h \ + at_data.h \ + common.h \ + custom.h \ + info.h \ + interface.h \ + mythread.h \ + result_thread.h \ + header.h + +FORMS += mainwindow.ui + +DISTFILES += \ + readme.txt \ + untitled_zh_CN.ts + +INCLUDEPATH += $$PWD/. +DEPENDPATH += $$PWD/. + + +LIBS += -L$$PWD/lib/ +LIBS += libsecurec.a +LIBS += -ldiag +LIBS += -lAdvapi32 + + +INCLUDEPATH += $$PWD/lib +DEPENDPATH += $$PWD/lib diff --git a/header.h b/header.h new file mode 100644 index 0000000..1e240a8 --- /dev/null +++ b/header.h @@ -0,0 +1,49 @@ +#ifndef HEADER_H +#define HEADER_H +#include + +//#ifdef __cplusplus +//extern "C" { +//#endif +/*-----------------------业务处理-------------------------------*/ +typedef enum { + FAIL = 0x0, + SUCC = 0x1, +} uapi_errcode; + +typedef struct { + uint32_t total_size; // 当前传输文件总大小 + uint32_t transmited_size; // 当前文件已传输大小 +} uapi_transmit_progress; + +typedef struct { + uint16_t sn; // 序号 + uint8_t name_len; // 文件(夹)名长度 + uint8_t is_dir; // 是否是文件夹 + uint32_t file_size; // 文件大小 + uint8_t name[0xFF]; // 文件(夹)名 +} uapi_ls_info_t; + +typedef uint32_t (*uart_rx_function)(void *buf, uint32_t len); // uart RX 回调函数 +typedef uint32_t (*at_result_callback)(void *buf, uint32_t len); // AT 命令返回值回调函数,入参buf包括 mould_id + cmd_id + payload +typedef uint32_t (*transmit_ls_result)(uint32_t size, uapi_ls_info_t *buff); // transmit get list回调函数,入参 size 为文件(夹)的数量,buff 为文件(夹)的信息 +typedef uint32_t (*transmit_result_hook)(bool is_finished, uintptr_t usr_data); // 传输结果回调函数,is_finished 为传输结束标志,usr_data 预留接口,目前为NULL + +uapi_errcode uapi_uart_open(const char *com, uint32_t baud); // 打开uart口, com 格式为 "\\\\.\\COM47", baud 为波特率 +uapi_errcode uapi_uart_tx_data(void *buf, uint32_t buf_len); // uart TX 发送数据buf +uapi_errcode uapi_uart_set_rts_dtr(int rts_flag, int dtr_flag); // uart 设置rts和dtr开关 +uapi_errcode uapi_uart_callback_register(uart_rx_function callback); // uart 注册回调函数 +uapi_errcode uapi_uart_close(void); // 关闭uart口 + +uapi_errcode uapi_at_send(uint8_t module_id, uint8_t cmd_id, uint8_t *pkt, uint32_t pkt_size, at_result_callback callback); // at命令发送接口,module_id及cmd_id请参考《Sparta 产线 测试指南》10.2ç«  +uapi_errcode uapi_file_download(char* board_file_path, char* local_file_path, transmit_result_hook handler); // 文件下载接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件夹),传输结果回调函数 +uapi_errcode uapi_file_upload(char* board_file_path,char* local_file_path, transmit_result_hook handler); // 文件上传接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件后缀),传输结果回调函数 +uapi_errcode uapi_ls_send(char *path, uint32_t path_len, transmit_ls_result callback); // 查询文件列表接口,参数为板端文件路径(详细到文件夹),路径长度,get list回调函数 +uapi_errcode uapi_file_delete(char *board_file_path, uint32_t board_file_path_len); // 删除指定文件接口,参数为板端文件地址(详细到文件后缀),文件路径长度 +uapi_errcode uapi_file_transmit_stop(void); // 停止文件下载接口 +uapi_errcode uapi_transmit_process(uapi_transmit_progress *data); // 获取文件传输进度,入参 data 更新为正在传输的文件的总大小和已传输大小 + +//#ifdef __cplusplus +//} +//#endif +#endif diff --git a/info.h b/info.h new file mode 100644 index 0000000..d1152e3 --- /dev/null +++ b/info.h @@ -0,0 +1,14 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved. + */ +#ifndef INFO_H +#define INFO_H + +namespace uapi { +class Info { +public: + virtual ~Info() {}; + virtual void onReadEvent(int eventType, void *data) = 0; +}; +} +#endif // INFO_H diff --git a/interface.h b/interface.h new file mode 100644 index 0000000..404bc43 --- /dev/null +++ b/interface.h @@ -0,0 +1,31 @@ +#ifndef INTERFACE_H +#define INTERFACE_H +#include "info.h" +#include "Library_global.h" + +class Application; + +class LIBRARY_EXPORT Interface +{ +public: + Interface(); + ~Interface(); + int SerialPortInit(int byteSize, int parity, int stopBits); + int SerialPortSetRtsDtr(bool rtsFlag, bool DtrFlag); + int SerialPortOpen(const char *portName,int baud); + int SerialPortClose(void); + int SerialPortWrite(const unsigned char *data,unsigned int len); + int FileDownload(const char *boardFilePath, const char *localFilePath); + int FileGetList(const char *boardPath, unsigned int boardPathLen); + int FileUpload(const char *boardFilePath, char *localFilePath); // boardFilePath包含文件名+后缀 + int FileDelete(const char *boardFilePath, unsigned int boardFilePathLen); + int FileTransmitStop(void); + int FileTransmitProgress(uapi::FileTransmitDataCount *data); // 获取文件总大小和已传输大小到data中 + int AtMessageSend(unsigned char moduleId, unsigned char cmdId, const unsigned char *data, unsigned int dataLen); + int InfoEventConnect(uapi::Info *event); // 连接读取事件,返回event type和data + int SetCurrentMode(uapi::ConnectMode mode); // 设置当前连接类型(单板段or整机段) +private: + Application *applicationHandle; +}; + +#endif // INTERFACE_H diff --git a/lib/advapi32.dll b/lib/advapi32.dll new file mode 100644 index 0000000..e3234fc Binary files /dev/null and b/lib/advapi32.dll differ diff --git a/lib/diag.dll b/lib/diag.dll new file mode 100644 index 0000000..94d923f Binary files /dev/null and b/lib/diag.dll differ diff --git a/lib/diag.lib b/lib/diag.lib new file mode 100644 index 0000000..ea31049 Binary files /dev/null and b/lib/diag.lib differ diff --git a/lib/libsecurec.a b/lib/libsecurec.a new file mode 100644 index 0000000..94ff990 Binary files /dev/null and b/lib/libsecurec.a differ diff --git a/mainwindow.cpp b/mainwindow.cpp index 960ba57..3b0cacc 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -220,7 +220,7 @@ void MainWindow::uart_open(QString com,QString com_baud) } } else { // ui_display("open uart fail.\r\n",false,false); - QMessageBox::warning(this, tr("串口"), tr("打开串口失败!"), QMessageBox::Ok); + QMessageBox::warning(this, tr("SerialPort"), tr("Open SerialPort failed"), QMessageBox::Ok); ui->pbtn_open_uart->setChecked(false); } } @@ -349,7 +349,7 @@ QString MainWindow::uart_get_comm_or_port(int nIndex, bool bValue) QString strCommRet = QObject::tr(""); HKEY hKey; if (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_READ, &hKey) != 0) { - QMessageBox::warning(this, tr("注册表"), tr("无法打开注册表!"), QMessageBox::Ok); + QMessageBox::warning(this, tr("Register"), tr("can't open register"),QMessageBox::Ok); return QObject::tr(""); // 无法打开注册表 } QString strKeyMsg; // 键名 @@ -359,6 +359,8 @@ QString MainWindow::uart_get_comm_or_port(int nIndex, bool bValue) ulong nKeySize = sizeof(portName); ulong nValueSize = sizeof(commName); ulong nType; + memset(commName,0,sizeof(commName)); + memset(portName,0,sizeof(portName)); if (::RegEnumValue(hKey, nIndex, portName, &nKeySize, 0, &nType, (BYTE *)commName, &nValueSize) == 0) { // 列举键名 // 读取键名 for (uint i = 0; i < nKeySize; i++) { @@ -560,7 +562,7 @@ void MainWindow::transmit_fromboard_download() } qDebug()<cbox_fromborad_filelist->currentData().toInt(); if(ui->cbox_fromborad_filelist->currentData().toInt()==0){ - QMessageBox::warning(this, tr("Board File Name"), tr("文件大小为0!"), QMessageBox::Ok); + QMessageBox::warning(this, tr("Board File Name"), tr("filesize 0"), QMessageBox::Ok); return; } if(!str_file_path.endsWith("/")){ @@ -635,7 +637,7 @@ void MainWindow::transmit_toboard_upload() QString board_file_path = ui->ledit_toboard_boardpath->text(); QString local_file_path = ui->ledit_toboard_filepath->text(); if (board_file_path.isEmpty() || local_file_path.isEmpty()) { - QMessageBox::warning(this, tr("File Path"), tr("文件路径为空!"), QMessageBox::Ok); + QMessageBox::warning(this, tr("File Path"), tr("File Path Empty!"), QMessageBox::Ok); return; } char *buf_board_file_path = (char *)board_file_path.toStdString().c_str(); diff --git a/result_thread.cpp b/result_thread.cpp index 30a8ca3..57db951 100644 --- a/result_thread.cpp +++ b/result_thread.cpp @@ -58,7 +58,7 @@ uint32_t uart_callback(void *buf, uint32_t buf_len) return 0; } -uint32_t ls_callback(uint32_t size, void *buff) +uint32_t ls_callback(uint32_t size, uapi_ls_info_t *buff) { g_result_info.transmit_ls_buff = (uapi_ls_info_t *)malloc(size * sizeof(uapi_ls_info_t)+1); memcpy_s(g_result_info.transmit_ls_buff, size * sizeof(uapi_ls_info_t), (uapi_ls_info_t *)buff, size * sizeof(uapi_ls_info_t)); diff --git a/result_thread.h b/result_thread.h index 5a1671d..acb41a5 100644 --- a/result_thread.h +++ b/result_thread.h @@ -51,7 +51,7 @@ private: }; uint32_t uart_callback(void *buf, uint32_t buf_len); -uint32_t ls_callback(uint32_t size, void *buff); +uint32_t ls_callback(uint32_t size, uapi_ls_info_t *buff); uint32_t transmit_callback(bool is_finished, uintptr_t usr_data); uint32_t at_callback(void *buf, uint32_t len); void transmit_get_data_count(uint32_t *total_size, uint32_t *current_size); diff --git a/src/header.h b/src/header.h deleted file mode 100644 index f49da08..0000000 --- a/src/header.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef HEADER_H -#define HEADER_H -#include - -#ifdef __cplusplus -extern "C" { -#endif -/*-----------------------业务处理-------------------------------*/ -typedef struct { - uint32_t total_size; - uint32_t transmited_size; -} uapi_transmit_progress; - -typedef enum { - FAIL = 0x0, - SUCC = 0x1, -} uapi_errcode; - -typedef struct { - uint16_t sn; - uint8_t name_len; - uint8_t is_dir; - uint32_t file_size; - uint8_t name[0xFF]; -} uapi_ls_info_t; - - - -typedef uint32_t (*uart_rx_function)(void *buf, uint32_t len); -typedef uint32_t (*at_result_callback)(void *buf, uint32_t len); -typedef uint32_t (*transmit_ls_result)(uint32_t size,void *buff); -typedef uint32_t (*transmit_result_hook)(bool is_finished, uintptr_t usr_data); - - -uapi_errcode uapi_at_send(uint8_t module_id, uint8_t cmd_id, uint8_t *pkt, uint32_t pkt_size,at_result_callback callback); -uapi_errcode uapi_file_download(char* board_file_path,char* local_file_path,transmit_result_hook handler); -uapi_errcode uapi_file_upload(char* board_file_path,char* local_file_path,transmit_result_hook handler); -uapi_errcode uapi_ls_send(char *path, uint32_t path_len,transmit_ls_result callback); // ls -uapi_errcode uapi_file_delete(char *board_file_path, uint32_t board_file_path_len); -uapi_errcode uapi_file_transmit_stop(void); -uapi_errcode uapi_transmit_process(uapi_transmit_progress *data); -/*----------------------------------------------------------*/ -uapi_errcode uapi_uart_open(const char *com, uint32_t baud); -uapi_errcode uapi_uart_tx_data(void *buf, uint32_t buf_len); -uapi_errcode uapi_uart_callback_register(uart_rx_function callback); -uapi_errcode uapi_uart_close(void); -uapi_errcode uapi_uart_set_rts_dtr(int rts_flag, int dtr_flag); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/uapi_main.h b/uapi_main.h new file mode 100644 index 0000000..fc584ac --- /dev/null +++ b/uapi_main.h @@ -0,0 +1,40 @@ +#ifndef UAPI_MAIN_H +#define UAPI_MAIN_H + +typedef enum { + FAIL = 0x0, + SUCC = 0x1, +} uapi_errcode; + +typedef struct { + uint32_t total_size; // 当前传输文件总大小 + uint32_t transmited_size; // 当前文件已传输大小 +} uapi_transmit_progress; + +typedef struct { + uint16_t sn; // 序号 + uint8_t name_len; // 文件(夹)名长度 + uint8_t is_dir; // 是否是文件夹 + uint32_t file_size; // 文件大小 + uint8_t name[0xFF]; // 文件(夹)名 +} uapi_ls_info_t; + +typedef uint32_t (*uart_rx_function)(void *buf, uint32_t len); // uart RX 回调函数 +typedef uint32_t (*at_result_callback)(void *buf, uint32_t len); // AT 命令返回值回调函数,入参buf包括 mould_id + cmd_id + payload +typedef uint32_t (*transmit_ls_result)(uint32_t size, uapi_ls_info_t *buff); // transmit get list回调函数,入参 size 为文件(夹)的数量,buff 为文件(夹)的信息 +typedef uint32_t (*transmit_result_hook)(bool is_finished, uintptr_t usr_data); // 传输结果回调函数,is_finished 为传输结束标志,usr_data 预留接口,目前为NULL + +uapi_errcode uapi_uart_open(const char *com, uint32_t baud); // 打开uart口, com 格式为 "\\\\.\\COM47", baud 为波特率 +uapi_errcode uapi_uart_tx_data(void *buf, uint32_t buf_len); // uart TX 发送数据buf +uapi_errcode uapi_uart_set_rts_dtr(int rts_flag, int dtr_flag); // uart 设置rts和dtr开关 +uapi_errcode uapi_uart_callback_register(uart_rx_function callback); // uart 注册回调函数 +uapi_errcode uapi_uart_close(void); // 关闭uart口 + +uapi_errcode uapi_at_send(uint8_t module_id, uint8_t cmd_id, uint8_t *pkt, uint32_t pkt_size, at_result_callback callback); // at命令发送接口,module_id及cmd_id请参考《Sparta 产线 测试指南》10.2ç«  +uapi_errcode uapi_file_download(char* board_file_path, char* local_file_path, transmit_result_hook handler); // 文件下载接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件夹),传输结果回调函数 +uapi_errcode uapi_file_upload(char* board_file_path,char* local_file_path, transmit_result_hook handler); // 文件上传接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件后缀),传输结果回调函数 +uapi_errcode uapi_ls_send(char *path, uint32_t path_len, transmit_ls_result callback); // 查询文件列表接口,参数为板端文件路径(详细到文件夹),路径长度,get list回调函数 +uapi_errcode uapi_file_delete(char *board_file_path, uint32_t board_file_path_len); // 删除指定文件接口,参数为板端文件地址(详细到文件后缀),文件路径长度 +uapi_errcode uapi_file_transmit_stop(void); // 停止文件下载接口 +uapi_errcode uapi_transmit_process(uapi_transmit_progress *data); // 获取文件传输进度,入参 data 更新为正在传输的文件的总大小和已传输大小 +#endif diff --git a/wrtm_class.cpp b/wrtm_class.cpp new file mode 100644 index 0000000..b73a591 --- /dev/null +++ b/wrtm_class.cpp @@ -0,0 +1,96 @@ +#include "header.h" + +#include "interface.h" +#include "info.h" +#include "windows.h" +#include "Library_global.h" +using namespace std; + +class MyInfo : public uapi::Info +{ +public: + MyInfo(){}; + ~MyInfo(){}; + void onReadEvent(int eventType, void *data) override + { + switch(eventType) + { + case uapi::INFO_SERIALPORT: + + break; + case uapi::INFO_FILE_TRANSMIT_RESULT: +// uapi::TransmitResult *ptransResult = (uapi::TransmitResult*)data; +// out<<"TransmitResult = "<finishResult; + break; + case uapi::INFO_FILE_LIST_RESULT: + break; + case uapi::INFO_AT_RECEIVE: + break; + } + + } +}; +static MyInfo info; +static Interface *handle= new Interface(); +uapi_errcode uapi_init_wrtm_class(void) +{ + handle->InfoEventConnect(&info); + handle->SetCurrentMode(uapi::MODE_BLUETOOTH); + return SUCC; +} + +uapi_errcode uapi_uart_open(const char *com, uint32_t baud) // 打开uart口, com 格式为 "\\\\.\\COM47", baud 为波特率 +{ + return SUCC; +} +uapi_errcode uapi_uart_tx_data(void *buf, uint32_t buf_len) // uart TX 发送数据buf +{ + return SUCC; +} +uapi_errcode uapi_uart_set_rts_dtr(int rts_flag, int dtr_flag) // uart 设置rts和dtr开关 +{ + return SUCC; +} +uapi_errcode uapi_uart_callback_register(uart_rx_function callback) // uart 注册回调函数 +{ + return SUCC; +} +uapi_errcode uapi_uart_close(void)// 关闭uart口 +{ + return SUCC; +} + +uapi_errcode uapi_at_send(uint8_t module_id, uint8_t cmd_id, uint8_t *pkt, uint32_t pkt_size, at_result_callback callback) // at命令发送接口,module_id及cmd_id请参考《Sparta 产线 测试指南》10.2ç«  +{ + return SUCC; +} + +uapi_errcode uapi_file_download(char* board_file_path, char* local_file_path, transmit_result_hook handler) // 文件下载接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件夹),传输结果回调函数 +{ + return SUCC; +} + +uapi_errcode uapi_file_upload(char* board_file_path,char* local_file_path, transmit_result_hook handler)// 文件上传接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件后缀),传输结果回调函数 +{ + return SUCC; +} + +uapi_errcode uapi_ls_send(char *path, uint32_t path_len, transmit_ls_result callback)// 查询文件列表接口,参数为板端文件路径(详细到文件夹),路径长度,get list回调函数 +{ + return SUCC; +} + +uapi_errcode uapi_file_delete(char *board_file_path, uint32_t board_file_path_len) // 删除指定文件接口,参数为板端文件地址(详细到文件后缀),文件路径长度 +{ + return SUCC; +} + +uapi_errcode uapi_file_transmit_stop(void)// 停止文件下载接口 +{ + return SUCC; +} + +uapi_errcode uapi_transmit_process(uapi_transmit_progress *data) // 获取文件传输进度,入参 data 更新为正在传输的文件的总大小和已传输大小 +{ + return SUCC; +}