Train_Identify/main.cpp

120 lines
3.2 KiB
C++

/**
* 摄像头微服务主程序
* */
// #include "register.h"
// using namespace ns_register;
// #include "https_sn.h"
// using namespace ns_https_sn;
#include <signal.h>
#include "MyYaml.h"
#include "myutils.h"
#include "myqueue.h"
#include "EngineManager.h"
using namespace ai_matrix;
#include "AppCommon.h"
std::atomic_bool app_flag(true);
bool g_bNoDealStepTwoFlag(false); //不做第二步处理标识
bool g_bHaveTrainFlag(false); //模型检测有车标识
std::atomic_uint64_t g_i64ReRunTimeStamp(0); //停止后再次行驶的时间戳
std::atomic_uint32_t g_iReRunOrigFrameId(0); //停止后再次行驶的原始帧号
std::atomic_uint32_t g_iReRunFrameId(0); //停止后再次行驶的帧号
std::atomic_uint32_t g_iReRunOrigChkDateFid(0); //停止后再次行驶的定检期原始帧号
std::atomic_uint32_t g_iReRunOrigContainerFid(0); //停止后再次行驶的集装箱原始帧号
void SigHandler(int iSigno)
{
if (iSigno == SIGINT)
{
app_flag = false;
}
}
//定义配置文件地址
std::string strConfigYamlPath = "./config/config.yaml";
int main(int argc, const char *argv[])
{
if (argc > 1)
{
strConfigYamlPath = argv[1];
printf("configpath:%s\n", strConfigYamlPath.c_str());
}
//加载配置文件
int iRetYaml = MyYaml::GetIns()->ReadYaml(strConfigYamlPath);
if (-1 == iRetYaml)
{
printf("-read yaml file error\n");
return -1;
}
//设置日志信息
MatrixAILog::Log::SetLogLevel(MyYaml::GetIns()->GetStringValue("gc_log_level"));
MatrixAILog::Log::SetLogFile(MyYaml::GetIns()->GetStringValue("gc_log_logfile"),
MyYaml::GetIns()->GetStringValue("gc_log_logfile_bakpath"));
// The string pointed to by argv[0] represents the program name
std::string path(argv[0], argv[0] + strlen(argv[0]));
APP_ERROR ret = ChangeDir(path.c_str()); // Change the directory to the excute file
if (ret != APP_ERR_OK)
{
LogError << "Failed to change directory to " << path.c_str();
return ret;
}
// if (MyYaml::GetIns()->GetBoolValue("gc_check_register"))
// {
// //检查授权文件是否正确
// bool bIsRegister = check_xml(strRegisterPath.c_str());
// if (!bIsRegister)
// {
// LogError << "not register";
// return -1;
// }
// LogDebug << "register ok";
// }
//实例化myutils
MyUtils::getins();
//捕获信号
if (signal(SIGINT, SigHandler) == SIG_ERR)
{
LogError << "cannot catch SIGINT.";
return -1;
}
//acl初始化
EngineManager engineManager;
ret = engineManager.Init();
if (ret != APP_ERR_OK)
{
LogError << "engineManager init error";
return -1;
}
ret = engineManager.load_yaml_config("./config/matrix.yaml");
if (ret != APP_ERR_OK)
{
LogError << "load matrix.yaml error";
return -1;
}
engineManager.RunAllEngine();
while (app_flag)
{
sleep(1);
}
//acl去初始化
engineManager.StopAllEngine();
engineManager.DeInit();
//停止特殊线程
LogInfo << "app end";
return 0;
}