151 lines
6.3 KiB
C++
151 lines
6.3 KiB
C++
#include <appConfig.h>
|
|
#include <appCore.hpp>
|
|
void appConfig::parsingGlobalData()
|
|
{
|
|
nlohmann::json globalJson = readJsonFromPath("./config/settingNew.json");
|
|
softwareTile = globalJson["softwareTile"];
|
|
imgSavePath = globalJson["imgSavePath"];
|
|
oriImgSavePath = globalJson["oriImgSavePath"];
|
|
resImgSavePath = globalJson["resImgSavePath"];
|
|
handleAiModelPath = globalJson["handleAiModelPath"];
|
|
productDataPath = globalJson["productDataPath"];
|
|
}
|
|
void appConfig::parsingTriggerData()
|
|
{
|
|
nlohmann::json triggerJson = readJsonFromPath("./config/triggerSetting.json");
|
|
_triggerStruct.key = triggerJson["key"];
|
|
_triggerStruct.sleepTime = triggerJson["sleepTime"];
|
|
_triggerStruct.initStr = triggerJson["initStr"];
|
|
_triggerStruct.heartCmd = triggerJson["heartCmd"];
|
|
_triggerStruct.readAllCmd = triggerJson["readAllCmd"];
|
|
_triggerStruct.modelName = triggerJson["modelName"];
|
|
_triggerStruct.readNum = triggerJson["readNum"];
|
|
_triggerStruct.writeType = triggerJson["writeType"];
|
|
_triggerStruct.startPos = QString::fromStdString(_triggerStruct.readAllCmd).split("_")[2].toInt();;
|
|
}
|
|
void appConfig::parsingCameraData()
|
|
{
|
|
nlohmann::json cameraJson = readJsonFromPath("./config/cameraSetting.json");
|
|
for (auto data : cameraJson)
|
|
{
|
|
cameraStruct _cameraStruct;
|
|
_cameraStruct.key = data["key"];
|
|
_cameraStruct.connectionName = data["connectionName"];
|
|
_cameraStruct.serialNum = data["serialNum"];
|
|
_cameraStruct.triggerMode = data["triggerMode"];
|
|
_cameraStruct.moduleName = data["moduleName"];
|
|
_cameraStructs.push_back(_cameraStruct);
|
|
}
|
|
}
|
|
void appConfig::parsingSqlData()
|
|
{
|
|
nlohmann::json sqlJson = readJsonFromPath("./config/sqlSetting.json");
|
|
for (auto data = sqlJson["initData"].begin(); data != sqlJson["initData"].end();data++)
|
|
{
|
|
_sqlConfigStruct.datas.insert(std::make_pair(data.key(), data.value()));
|
|
}
|
|
}
|
|
void appConfig::parsingProductData(std::string path)
|
|
{
|
|
productDatasMutex.lock();
|
|
productDatas.clear();
|
|
std::vector<std::string>files;
|
|
fileManager::getAllFiles(path, files, ".json");
|
|
for (auto file : files)
|
|
{
|
|
nlohmann::json res = readJsonFromPath(file);
|
|
try
|
|
{
|
|
productDataStruct productData;
|
|
productData.name = res["productName"];
|
|
productData.customerPartNumber = res["customerPartNumber"];
|
|
productData.foxconnPartNumber = res["foxconnPartNumber"];
|
|
productData.indexOfArm = res["productIndex"];
|
|
productData.basePos = { res["baseX"],res["baseY"],res["baseZ"] };
|
|
productData.baseRad = { res["baseRx"],res["baseRy"],res["baseRz"] };
|
|
productData.halconAlgoIndex = res["halconAlgoIndex"];
|
|
productData.imgPosPath = res["imgPosPath"];
|
|
productData.disableHandleAiConfig = res["disableHandleAiConfig"];
|
|
productData.enableCodedAlgo = res["enableCodedAlgo"];
|
|
productData.codedAlgoIndex = res["codedAlgoIndex"];
|
|
productData.connectorAmout = res["connectorAmout"];
|
|
productData.isBackExist = res["isBackExist"];
|
|
productData.backArmIndex = res["backArmIndex"];
|
|
for (auto it = res["cameraSetting"].begin(); it != res["cameraSetting"].end(); ++it)
|
|
{
|
|
std::vector<std::string> result = split(it.value(), '/');
|
|
productData.cameraSetting.insert(std::make_pair(std::stoi(it.key()), result));
|
|
}
|
|
for (auto it = res["lightSetting"].begin(); it != res["lightSetting"].end(); ++it)
|
|
{
|
|
productData.lightSetting.insert(std::make_pair(std::stoi(it.key()), it.value()));
|
|
}
|
|
if (res["HandleAi"].empty() == false)
|
|
{
|
|
productData.handleAiData.detModelName = res["HandleAi"]["detModelName"];
|
|
productData.handleAiData.detGpuIndex = res["HandleAi"]["detGpuIndex"];
|
|
for (auto& data : res["HandleAi"]["segHandle"])
|
|
{
|
|
detResultHandleStruct detResultHandle;
|
|
detResultHandle.detResultIndex = std::vector<int>(data["detResultIndex"].begin(), data["detResultIndex"].end());
|
|
detResultHandle.segModelName = data["segModelName"];
|
|
detResultHandle.segNgIndex = std::vector<int>(data["segNgIndex"].begin(), data["segNgIndex"].end());
|
|
detResultHandle.segGpuIndex = data["segGpuIndex"];
|
|
|
|
detResultHandle.clsModelName = data["clsModelName"];
|
|
detResultHandle.clsNgIndex = std::vector<int>(data["clsNgIndex"].begin(), data["clsNgIndex"].end());
|
|
detResultHandle.segGpuIndex = data["segGpuIndex"];
|
|
for (auto it = data["clsResultHandle"].begin(); it != data["clsResultHandle"].end(); ++it)
|
|
{
|
|
std::vector<std::string> result = split(it.value(), ',');
|
|
if (result.size() != 4)
|
|
{
|
|
fancyWarnWindow* warn = new fancyWarnWindow
|
|
(fancyWarnWindow::Warning, QString("在%1中的clsResultHandle发现格式错误").arg(QString::fromStdString(fileManager::getFileName(file)), true),
|
|
QString("%1").arg(QString::fromStdString(it.value())), true);
|
|
continue;
|
|
}
|
|
detResultHandle.clsResultHandle.insert(std::make_pair(std::stoi(it.key()), std::make_pair(result[0], cv::Scalar(std::stoi(result[3]), std::stoi(result[2]), std::stoi(result[1])))));
|
|
}
|
|
productData.handleAiData.detResultHandle.push_back(detResultHandle);
|
|
}
|
|
}
|
|
if (res["productSign"].empty() == false)
|
|
{
|
|
for (auto it = res["productSign"].begin(); it != res["productSign"].end(); ++it)
|
|
{
|
|
productSignStruct _productSignStruct;
|
|
auto value = it.value();
|
|
_productSignStruct.sign = value["sign"];
|
|
_productSignStruct.posRect = cv::Rect(value["x"], value["y"], value["w"], value["h"]);
|
|
productData.productSign.insert(std::make_pair(std::stoi(it.key()), _productSignStruct));
|
|
}
|
|
}
|
|
productDatas.push_back(productData);
|
|
}
|
|
catch (const nlohmann::json::type_error& e)
|
|
{
|
|
if (e.id == 302)
|
|
fancyWarnWindow* warn = new fancyWarnWindow
|
|
(fancyWarnWindow::Warning, QString("%1损坏").arg(QString::fromStdString(fileManager::getFileName(file))),
|
|
"", true);
|
|
else
|
|
{
|
|
fancyWarnWindow* warn = new fancyWarnWindow
|
|
(fancyWarnWindow::Warning, QString("在读取%1中出现未知错误").arg(QString::fromStdString(fileManager::getFileName(file))),
|
|
e.what(), true);
|
|
std::cerr << "Exception: " << e.what() << std::endl;
|
|
qDebug() << "Exception: " << e.what();
|
|
}
|
|
}
|
|
catch (...)
|
|
{
|
|
fancyWarnWindow* warn = new fancyWarnWindow
|
|
(fancyWarnWindow::Warning, QString("在读取%1中出现严重错误").arg(QString::fromStdString(fileManager::getFileName(file))),
|
|
"请联系厂商处理", true);
|
|
}
|
|
}
|
|
_switchProductWidgetDataPtr.mutex = &productDatasMutex;
|
|
_switchProductWidgetDataPtr.productDatasPtr = &productDatas;
|
|
productDatasMutex.unlock();
|
|
} |