#include #include #include #include #include #include #include #include #include #include #include #include #include "BeltTearingPresenter.h" #include "PathManager.h" #include "version.h" #include "beltTearingDetection_Export.h" #include "VrLog.h" int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // 设置应用程序信息 app.setApplicationName(BELT_TEARING_SERVER_PRODUCT_NAME); app.setApplicationVersion(BELT_TEARING_SERVER_VERSION_STRING); app.setOrganizationName(BELT_TEARING_SERVER_COMPANY_NAME); // 打印启动横幅 LOG_DEBUG("===========================================\n"); LOG_INFO(" %s\n", BELT_TEARING_SERVER_PRODUCT_NAME); LOG_INFO(" %s\n", BELT_TEARING_SERVER_DESCRIPTION); LOG_INFO(" %s\n", BELT_TEARING_SERVER_COPYRIGHT); LOG_DEBUG("===========================================\n"); // 创建并初始化Presenter BeltTearingPresenter presenter; // 获取配置文件路径 QString configFilePath = PathManager::GetConfigFilePath(); // 加载配置文件 if (!presenter.loadConfiguration(configFilePath)) { LOG_WARN("Warning: Failed to load configuration file. Using default settings.\n"); LOG_INFO("Config file location: %s\n", configFilePath.toStdString().c_str()); } // 启动TCP服务器(使用配置文件中的端口,如果配置加载失败则使用默认端口) quint16 serverPort = presenter.getServerPort(); if (serverPort == 0) { serverPort = 5900; // 默认端口 } if (!presenter.startServer(serverPort)) { LOG_ERROR("Failed to start server on port %d\n", serverPort); return -1; } // 启动相机 presenter.startCamera(); // 输出系统信息 LOG_INFO("=== BeltTearing Server Started ===\n"); LOG_DEBUG("===================================\n"); LOG_INFO("Server is running on port %d\n", serverPort); LOG_INFO("Press Ctrl+C to exit.\n"); #ifdef _WIN32 LOG_INFO("Simulation thread started - sending test data every 5 seconds\n"); // 处理应用程序退出 std::thread testThread([&presenter]() { // while (true) { QThread::msleep(5000); // 等待5秒 presenter.sendTestData("C:\\tmp\\8_LazerData_Je08A052.txt"); } }); testThread.detach(); #endif return app.exec(); }