VTrain_BothSides/engine/SaveResultCSVEngine/SaveResultCSVEngine.cpp

1 line
4.6 KiB
C++
Raw Permalink Normal View History

2025-01-09 02:02:52 +00:00
#include "SaveResultCSVEngine.h" using namespace ai_matrix; SaveResultCSVEngine::SaveResultCSVEngine() {} SaveResultCSVEngine::~SaveResultCSVEngine() {} APP_ERROR SaveResultCSVEngine::Init() { strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0"; strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1"; this->baseConfig_ = Config::getins()->getBaseConfig(); LogInfo << "SaveResultCSVEngine Init ok"; return APP_ERR_OK; } APP_ERROR SaveResultCSVEngine::DeInit() { LogInfo << "SaveResultCSVEngine DeInit ok"; return APP_ERR_OK; } /** * 保存车厢的最优结果到CSV中 * inParam : std::shared_ptr<Train> pTrain :列车信息 * outParam: * return : true/false */ bool SaveResultCSVEngine::saveTrainCsv(std::shared_ptr<VTrainInfo> pTrain) { std::string strTrainPath = this->baseConfig_.strResultPath + "/" + pTrain->strTrainDate + "/" + StringUtil::getins()->replace_all_distinct(pTrain->strTrainTime, ":", "-") + "/"; //1. 创建保存路径 (固定路径/YYYY-MM-DD/hh-mm-ss/iDataSoure/) if (!FileUtil::getins()->createDirPath(strTrainPath)) { LogError << "iCarXH:" << pTrain->iCarOrder << " csv save err"; return false; } //2. 保存csv std::string strCsvName = pTrain->strTrainDate + "_" + pTrain->strTrainName + ".csv"; // strCsvName = StringUtil::getins()->replace_all_distinct(strCsvName, std::string(":"), std::string("-")); std::string strCsvPath = strTrainPath + strCsvName; bool bIsExsit = false; if (access(strCsvPath.c_str(), F_OK) != -1) { bIsExsit = true; } try { std::string strContainerNo, strContainerImage; for (auto it = pTrain->vecContainer.cbegin(); it != pTrain->vecContainer.cend(); ++it) { strContainerNo += ("[" + it->strContainerNo + "]"); strContainerImage += ("[" + it->strImg + "]"); } // 写文件 std::ofstream outFile; outFile.open(strCsvPath, std::ios::app); if (!bIsExsit) { outFile << "TrackName" << ',' << "TDirection" << ',' << "CarOrder" << ',' << "Category" << ',' << "TType" << ',' << "TNum" << ',' << "TLoadWeight" << ',' << "TTareWeight" << ',' << "TVolume" << ',' << "TChangeLen" << ',' << "TNum_image" << ',' << "TPro_image" << ',' << "StartFrame" << ',' << "EndFrame" << ',' << "StartTime" << ',' << "EndTime" << ',' << "ContainerNo" << ',' << "Container_image" << ',' << "TNumCoordinate" << ',' << "TProCoordinate" << std::endl; } outFile << this->baseConfig_.strTrackName << ',' << pTrain->iTDirection << ',' << pTrain->iCarOrder << ',' << pTrain->iCategory << ',' << pTrain->strTType << ',' << pTrain->strTNum << ',' << pTrain->strTLoadWeight << ',' << pTrain->strTTareWeight << ',' << pTrain->strTVolume << ',' << pTrain->strTChangeLen << ',' << pTrain->strTNum_image << ',' << pTrain->strTPro_image << ',' << pTrain->iStartFrame << ',' << pTrain->iEndFrame << ',' << pTrain->strStartTime << ',' << pTrain->strEndTime << ',' << strContainerNo << ',' << strContainerImage << ',' << "" << ',' << "" << std::endl; outFile.close(); } catch (const std::exception &) { LogError << "strCsvPath:" << strCsvPath << " train savecsv fail!"; return false; } return true; } APP_ERROR SaveResult