zhongfuqiang上传最新代码20250325

This commit is contained in:
2025-03-25 16:05:45 +08:00
parent aa3e8c8223
commit 4a25fb0e80
360 changed files with 1771 additions and 201564 deletions

View File

@@ -9,39 +9,62 @@
struct UI_config {
int SL100_FACTORY_TOOL_W;
int SL100_FACTORY_TOOL_H;
int LOG_LEVEL;
QString TOOL_VERSION; // "SL100 工厂产测工具 - V0.0.7"
QString START_LISTENING; // "开始监听\n(Start Listening...)"
QString ONE_CLICKED_TEST; // "一键功能测试"
QString FRONT_BOARD_NAME; // "前 板"
QString BACK_BOARD_NAME; // "后 板"
QString ALL_BOARD_NAME; // "整 机"
QString FRONT_DEVICE_INFO; // "前板设备信息"
QString BACK_DEVICE_INFO; // "后板设备信息"
QString ALL_PRODUCT_INFO; // "工厂生产信息"
QString ALL_DEVICE_INFO; // "整机设备信息"
QString FRONT_TUYU_LICENSE; // "算法 license"
QString BACK_GET_UUID_SN; // "后板获取 UUID/SN"
QString FRONT_TEST_ITEM; // "前板测试项"
QString FRONT_CONFID_ITEM; // "前板配置项"
QString INPUT_CONFIG_PARA; // "请输入配置参数..."
QString BACK_TEST_ITEM; // "后板测试项"
QString BACK_CONFID_ITEM; // "后板配置项"
QString IMAGE_DISPLAY_TAB; // "图像显示区"
QString VIDEO_DISPLAY_TAB; // "视频显示区"
QString ALL_TEST_ITEM; // "整机测试项"
QString ALL_CONFID_ITEM; // "整机配置项"
QString LEFT_LENS; // "左边镜头"
QString RIGHT_LENS; // "右边镜头"
QString CAT_EYE_LENS_RGB; // "猫眼镜头(RGB)"
QString CAT_EYE_LENS_IR; // "猫眼镜头(IR)"
QString BIG_WINDOW_PRE_VIDEO; // "大窗口播放视频"
QString RESOLUTION_EDIT; // "分辨率:"
QString TOOL_VERSION; // "SL100 工厂产测工具 - V0.0.7"
QString START_LISTENING; // "开始监听\n(Start Listening...)"
QString ONE_CLICKED_TEST; // "一键功能测试"
QString SELECT_MDSN_IP; // "Select MDns IP:"
QString SELECT_COM_PORT; // "COM Port:"
QString CONNECT_FRONT_BOARD; // "连接前板"
QString SAVE_LOG; // "Save"
QString CLEAR_LOG; // "Clear"
QString FRONT_BOARD_NAME; // "前 板"
QString BACK_BOARD_NAME; // "后 板"
QString ALL_BOARD_NAME; // "整 机"
QString FRONT_DEVICE_INFO; // "前板设备信息"
QString FRONT_GET_HW_INFO; // "前板获取硬件信息"
QString FRONT_GET_LICENSE_INFO; // "前板获取license信息"
QString FRONT_WR_LICENSE_INFO; // "前板写license信息"
QString BACK_DEVICE_INFO; // "后板设备信息"
QString BACK_GET_MAC_ADDR; // "后板获取MAC地址"
QString BACK_GET_UUIDSN; // "后板获取UUID和SN"
QString BACK_WR_UUID_SN; // "后板写入UUID和SN"
QString BACK_CONFIRM_BURN; // "后板确认烧录"
QString ALL_PRODUCT_INFO; // "工厂生产信息"
QString ALL_DEVICE_INFO; // "整机设备信息"
QString FRONT_TUYU_LICENSE; // "算法 license"
QString BACK_GET_UUID_SN; // "后板获取 UUID/SN"
QString FRONT_TEST_ITEM; // "前板测试项"
int FRONT_TEST_ITEM_CNT; // 前板测试项按键数量
QString FRONT_CONFID_ITEM; // "前板配置项"
int FRONT_CONFID_ITEM_CNT; // 前板配置项按键数量
QString INPUT_CONFIG_PARA; // "请输入配置参数..."
QString BACK_TEST_ITEM; // "后板测试项"
int BACK_TEST_ITEM_CNT; // 后板测试项按键数量
QString BACK_CONFID_ITEM; // "后板配置项"
int BACK_CONFID_ITEM_CNT; // 后板配置项按键数量
QString IMAGE_DISPLAY_TAB; // "图像显示区"
QString VIDEO_DISPLAY_TAB; // "视频显示区"
QString ALL_TEST_ITEM; // "整机测试项"
QString ALL_CONFID_ITEM; // "整机配置项"
QString LEFT_LENS; // "左边镜头"
QString RIGHT_LENS; // "右边镜头"
QString CAT_EYE_LENS_RGB; // "猫眼镜头(RGB)"
QString CAT_EYE_LENS_IR; // "猫眼镜头(IR)"
QString BIG_WINDOW_PRE_VIDEO; // "大窗口播放视频"
QString RESOLUTION_EDIT; // "分辨率:"
QString NO_DEV_CONNECT; // "No device is connected !!!"
QString PLEASE_SELECT_IMG_LENS; // "Please select \"左边镜头\" or \"右边镜头\" to get image!!!"
QString PLEASE_SELECT_VID_LENS; // "Please select lens to get video!!!"
QString THIS_DEV_DISCONNECT; // "This device is not connected !!!"
QString MDNS_HOSE_NAME; // "SL100-FactoryTool-Mdns"
QString MDNS_SERVICE_NAME; // "_myservice._tcp.local."
quint16 TCP_CONNECT_PORT; // 12412
};
QMap<QString, QString> parseIniFile(const QString& filePath);
UI_config loadConfig(const QString& filePath);
UI_config loadUIConfig(const QString& filePath);
#endif

View File

@@ -37,42 +37,67 @@ QMap<QString, QString> parseIniFile(const QString& filePath)
return configMap;
}
UI_config loadConfig(const QString& filePath)
UI_config loadUIConfig(const QString& filePath)
{
UI_config config;
QMap<QString, QString> settings = parseIniFile(filePath);
// 可直接修改 UI_config.ini 文件
// 如果删除 UI_config.ini 文件中的 Labels 项,则使用如下代码中的默认命名配置
// Labels 项 默认命名配置
config.SL100_FACTORY_TOOL_W = settings.value("Window/width", "1340").toInt();
config.SL100_FACTORY_TOOL_H = settings.value("Window/height", "900").toInt();
config.TOOL_VERSION = settings.value("Labels/tool_version", "SL100 工厂产测工具 - V0.0.16");
config.START_LISTENING = settings.value("Labels/start_listening", "开始监听\n(Start Listening...)");
config.ONE_CLICKED_TEST = settings.value("Labels/one_clicked_test", "一键功能测试");
config.FRONT_BOARD_NAME = settings.value("Labels/front_board_name", "前 板");
config.BACK_BOARD_NAME = settings.value("Labels/back_board_name", "后 板");
config.ALL_BOARD_NAME = settings.value("Labels/all_board_name", "整 机");
config.FRONT_DEVICE_INFO = settings.value("Labels/front_device_info", "前板设备信息");
config.BACK_DEVICE_INFO = settings.value("Labels/back_device_info", "后板设备信息");
config.ALL_PRODUCT_INFO = settings.value("Labels/all_product_info", "工厂生产信息");
config.ALL_DEVICE_INFO = settings.value("Labels/all_device_info", "整机设备信息");
config.FRONT_TUYU_LICENSE = settings.value("Labels/front_TUYU_license", "图语算法 License");
config.BACK_GET_UUID_SN = settings.value("Labels/back_get_uuid_sn", "后板获取 UUID/SN");
config.FRONT_TEST_ITEM = settings.value("Labels/front_test_item", "前板测试项");
config.FRONT_CONFID_ITEM = settings.value("Labels/front_config_item", "前板配置项");
config.INPUT_CONFIG_PARA = settings.value("Labels/input_config_para", "请输入配置参数...");
config.BACK_TEST_ITEM = settings.value("Labels/back_test_item", "后板测试项");
config.BACK_CONFID_ITEM = settings.value("Labels/back_config_item", "后板配置项");
config.IMAGE_DISPLAY_TAB = settings.value("Labels/image_display_tab", "图像显示区");
config.VIDEO_DISPLAY_TAB = settings.value("Labels/video_display_tab", "视频显示区");
config.ALL_TEST_ITEM = settings.value("Labels/all_test_item", "整机测试项");
config.ALL_CONFID_ITEM = settings.value("Labels/all_config_item", "整机配置项");
config.LEFT_LENS = settings.value("Labels/left_lens", "左边镜头");
config.RIGHT_LENS = settings.value("Labels/right_lens", "右边镜头");
config.CAT_EYE_LENS_RGB = settings.value("Labels/cat_eye_lens_rgb", "猫眼镜头(RGB)");
config.CAT_EYE_LENS_IR = settings.value("Labels/cat_eye_lens_ir", "猫眼镜头(IR)");
config.BIG_WINDOW_PRE_VIDEO = settings.value("Labels/big_window_pre_video", "大窗口播放视频");
config.RESOLUTION_EDIT = settings.value("Labels/resolution_edit", "分辨率:");
// Labels 项 默认命名配置
config.SL100_FACTORY_TOOL_W = settings.value("Window/width", "1340").toInt();
config.SL100_FACTORY_TOOL_H = settings.value("Window/height", "900").toInt();
config.LOG_LEVEL = settings.value("LogLevel/log_level", "2").toInt();
config.TOOL_VERSION = settings.value("Labels/tool_version", "SL100 工厂产测工具 - V0.0.18");
config.START_LISTENING = settings.value("Labels/start_listening", "开始监听\n(Start Listening...)");
config.ONE_CLICKED_TEST = settings.value("Labels/one_clicked_test", "一键功能测试");
config.SELECT_MDSN_IP = settings.value("Labels/select_mdns_ip", "Select MDns IP:");
config.SELECT_COM_PORT = settings.value("Labels/select_com_port", "COM Port:");
config.CONNECT_FRONT_BOARD = settings.value("Labels/connect_front_board", "连接前板");
config.SAVE_LOG = settings.value("Labels/save_log", "Save");
config.CLEAR_LOG = settings.value("Labels/clear_log", "Clear");
config.FRONT_BOARD_NAME = settings.value("Labels/front_board_name", "前 板");
config.BACK_BOARD_NAME = settings.value("Labels/back_board_name", "后 板");
config.ALL_BOARD_NAME = settings.value("Labels/all_board_name", "整 机");
config.FRONT_DEVICE_INFO = settings.value("Labels/front_device_info", "前板设备信息");
config.FRONT_GET_HW_INFO = settings.value("Labels/front_get_hw_info", "get_hw_info");
config.FRONT_GET_LICENSE_INFO = settings.value("Labels/front_get_license_info", "get_license");
config.FRONT_WR_LICENSE_INFO = settings.value("Labels/front_wr_license_info", "write_license");
config.BACK_DEVICE_INFO = settings.value("Labels/back_device_info", "后板设备信息");
config.BACK_GET_MAC_ADDR = settings.value("Labels/back_get_MAC_addr", "get_MAC_addr");
config.BACK_GET_UUIDSN = settings.value("Labels/back_get_UUID_SN", "get_UUID_SN");
config.BACK_WR_UUID_SN = settings.value("Labels/write_UUID_SN", "write_UUID_SN");
config.BACK_CONFIRM_BURN = settings.value("Labels/Confirm_burn", "Confirm_burn");
config.ALL_PRODUCT_INFO = settings.value("Labels/all_product_info", "工厂生产信息");
config.ALL_DEVICE_INFO = settings.value("Labels/all_device_info", "整机设备信息");
config.FRONT_TUYU_LICENSE = settings.value("Labels/front_TUYU_license", "图语算法 License");
config.BACK_GET_UUID_SN = settings.value("Labels/back_get_uuid_sn", "后板获取 UUID/SN");
config.FRONT_TEST_ITEM = settings.value("Labels/front_test_item", "前板测试项");
config.FRONT_CONFID_ITEM = settings.value("Labels/front_config_item", "前板配置项");
config.FRONT_TEST_ITEM_CNT = settings.value("Labels/front_test_item_cnt", "77").toInt();
config.FRONT_CONFID_ITEM_CNT = settings.value("Labels/front_config_item_cnt", "77").toInt();
config.INPUT_CONFIG_PARA = settings.value("Labels/input_config_para", "请输入配置参数...");
config.BACK_TEST_ITEM = settings.value("Labels/back_test_item", "后板测试项");
config.BACK_CONFID_ITEM = settings.value("Labels/back_config_item", "后板配置项");
config.BACK_TEST_ITEM_CNT = settings.value("Labels/back_test_item_cnt", "77").toInt();
config.BACK_CONFID_ITEM_CNT = settings.value("Labels/back_config_item_cnt", "77").toInt();
config.IMAGE_DISPLAY_TAB = settings.value("Labels/image_display_tab", "图像显示区");
config.VIDEO_DISPLAY_TAB = settings.value("Labels/video_display_tab", "视频显示区");
config.ALL_TEST_ITEM = settings.value("Labels/all_test_item", "整机测试项");
config.ALL_CONFID_ITEM = settings.value("Labels/all_config_item", "整机配置项");
config.LEFT_LENS = settings.value("Labels/left_lens", "左边镜头");
config.RIGHT_LENS = settings.value("Labels/right_lens", "右边镜头");
config.CAT_EYE_LENS_RGB = settings.value("Labels/cat_eye_lens_rgb", "猫眼镜头(RGB)");
config.CAT_EYE_LENS_IR = settings.value("Labels/cat_eye_lens_ir", "猫眼镜头(IR)");
config.BIG_WINDOW_PRE_VIDEO = settings.value("Labels/big_window_pre_video", "大窗口播放视频");
config.RESOLUTION_EDIT = settings.value("Labels/resolution_edit", "分辨率:");
config.NO_DEV_CONNECT = settings.value("Labels/no_device_connected", "No device is connected !!!");
config.THIS_DEV_DISCONNECT = settings.value("Labels/this_device_disconnect", "This device is not connected !!!");
config.PLEASE_SELECT_IMG_LENS = settings.value("Labels/please_select_img_lens", "Please select \"左边镜头\" or \"右边镜头\" to get image!!!");
config.PLEASE_SELECT_VID_LENS = settings.value("Labels/please_select_vid_lens", "Please select lens to get video!!!");
config.MDNS_HOSE_NAME = settings.value("Labels/mdns_host_name", "SL100-FactoryTool-Mdns");
config.MDNS_SERVICE_NAME = settings.value("Labels/mdns_service_name", "_myservice._tcp.local.");
quint16 port = settings.value("Labels/tcp_connect_port", "12412").toUInt();
config.TCP_CONNECT_PORT = (port > 0 && port <= 65535) ? port : 12412; // 防止异常值
return config;
}
@@ -84,7 +109,7 @@ QGroupBox* MainWidget::createLicenseGroupBox()
for (int i = 0; i < frontBoardLicenseJson.size(); ++i) {
QJsonObject item = frontBoardLicenseJson[i].toObject();
QString buttonText = item["lable"].toString();
QString buttonText = item["lable"].toString();
QPushButton* button = new QPushButton(buttonText, this);
button->setProperty("licenseIndex", i);
buttonRowLayout->addWidget(button);
@@ -111,7 +136,7 @@ QGroupBox* MainWidget::createFrontDeviceInfoGroupBox()
for (const QJsonValue& value : frontBoardDevInfoJson) {
QJsonObject item = value.toObject();
QString label = item["lable"].toString();
QString cmd = item["cmd"].toString();
QString cmd = item["cmd"].toString();
QLabel* itemLabel = new QLabel(label, this);
QLineEdit* itemLineEdit = new QLineEdit(this);
itemLineEdit->setReadOnly(true);
@@ -143,11 +168,11 @@ QGroupBox* MainWidget::createBackDeviceInfoGroupBox()
QGroupBox* MainWidget::createBackConnectServerGroupBox()
{
QGroupBox* BackConnectServerGroupBox = new QGroupBox(TOOL_UI.BACK_GET_UUID_SN, this);
QHBoxLayout* frontDeviceInfoLayout = new QHBoxLayout;
QHBoxLayout* frontDeviceInfoLayout = new QHBoxLayout;
for (int i = 0; i < backBoardUuidJson.size(); ++i) {
QJsonObject item = backBoardUuidJson[i].toObject();
QString buttonText = item["lable"].toString();
QJsonObject item = backBoardUuidJson[i].toObject();
QString buttonText = item["lable"].toString();
QPushButton* button = new QPushButton(buttonText, this);
button->setProperty("UuidIndex", i);
frontDeviceInfoLayout->addWidget(button);
@@ -169,12 +194,19 @@ QGroupBox* MainWidget::createBackConnectServerGroupBox()
QWidget* MainWidget::createFunctionTestTab(const QJsonArray& BoardFuncTest, const QString& propertyName)
{
QWidget* functionTestTab = new QWidget(this);
QWidget* functionTestTab = new QWidget(this);
QVBoxLayout* functionTestLayout = new QVBoxLayout(functionTestTab);
QGridLayout* buttonGridLayout = new QGridLayout();
QGridLayout* buttonGridLayout = new QGridLayout();
int buttonsPerRow = 7;
for (int i = 0; i < BoardFuncTest.size() + (77 - BoardFuncTest.size()); ++i) {
int buttonCnt = 77;
if (propertyName == "frontBoardTest") {
buttonCnt = TOOL_UI.FRONT_TEST_ITEM_CNT;
}
else if (propertyName == "backBoardTest") {
buttonCnt = TOOL_UI.BACK_TEST_ITEM_CNT;
}
if (buttonCnt < BoardFuncTest.size()) buttonCnt = BoardFuncTest.size();
for (int i = 0; i < BoardFuncTest.size() + (buttonCnt - BoardFuncTest.size()); ++i) {
QJsonObject item = BoardFuncTest[i].toObject();
QString buttonText = item["lable"].toString();
if (buttonText.isEmpty()) {
@@ -211,20 +243,23 @@ QWidget* MainWidget::createFunctionTestTab(const QJsonArray& BoardFuncTest, cons
QWidget* MainWidget::createFunctionConfigTab(const QJsonArray& BoardFuncConfig, const QString& propertyName)
{
QWidget* functionConfigTab = new QWidget(this);
QWidget* functionConfigTab = new QWidget(this);
QVBoxLayout* functionConfigLayout = new QVBoxLayout(functionConfigTab);
int buttonCnt = 77;
if (propertyName == "frontBoardFuncConfig") {
frontFuncConfigLineEdit->setPlaceholderText(TOOL_UI.INPUT_CONFIG_PARA);
functionConfigLayout->addWidget(frontFuncConfigLineEdit);
buttonCnt = TOOL_UI.FRONT_CONFID_ITEM_CNT;
}
else if (propertyName == "backBoardFuncConfig") {
backFuncConfigLineEdit->setPlaceholderText(TOOL_UI.INPUT_CONFIG_PARA);
functionConfigLayout->addWidget(backFuncConfigLineEdit);
buttonCnt = TOOL_UI.BACK_CONFID_ITEM_CNT;
}
if (buttonCnt < BoardFuncConfig.size()) buttonCnt = BoardFuncConfig.size();
QGridLayout* configButtonGridLayout = new QGridLayout();
int buttonsPerRow = 7; // 每行显示的按键数量,根据需要调整
for (int i = 0; i < BoardFuncConfig.size() + (77 - BoardFuncConfig.size()); ++i) {
for (int i = 0; i < BoardFuncConfig.size() + (buttonCnt - BoardFuncConfig.size()); ++i) {
QJsonObject item = BoardFuncConfig[i].toObject();
QString buttonText = item["lable"].toString();
if (buttonText.isEmpty()) {
@@ -261,7 +296,7 @@ QWidget* MainWidget::createFunctionConfigTab(const QJsonArray& BoardFuncConfig,
QWidget* MainWidget::createImageDisplayTab(QLabel* leftLensLabel, QLabel* rightLensLabel)
{
QWidget* imageDisplayTab = new QWidget(this);
QWidget* imageDisplayTab = new QWidget(this);
QVBoxLayout* imageDisplayLayout = new QVBoxLayout(imageDisplayTab);
QVBoxLayout* imageButtonsColumnLayout = new QVBoxLayout;
@@ -555,5 +590,3 @@ QTabWidget* MainWidget::createMediaTabWidget(QLabel* leftLensLabel, QLabel* righ
return tabWidget_media;
}