Procházet zdrojové kódy

V0.8.7
1、添加了配置文件,从配置文件中读取摄像机数据

Apple před 1 měsícem
rodič
revize
292f30ffcf

+ 15 - 6
CPlayer/Player/PlayerGLWidget.cpp

@@ -58,12 +58,21 @@ PlayerGLWidget::~PlayerGLWidget()
         shaderProgram = 0;
     }
 
-    delete textureY_;
-    textureY_ = nullptr;
-    delete textureU_;
-    textureU_ = nullptr;
-    delete textureV_;
-    textureV_ = nullptr;
+    if(textureY_ != nullptr)
+    {
+        delete textureY_;
+        textureY_ = nullptr;
+    }
+    if(textureU_ != nullptr)
+    {
+        delete textureU_;
+        textureU_ = nullptr;
+    }
+    if(textureV_ != nullptr)
+    {
+        delete textureV_;
+        textureV_ = nullptr;
+    }
 }
 
 /* 设置一张图片,用于显示默认的图片 */

+ 10 - 9
show1/CMakeLists.txt

@@ -8,7 +8,7 @@ file(GLOB LOCAL_SRC
     ${CMAKE_CURRENT_SOURCE_DIR}/*.qrc
     ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/*.ui
-    # ${CMAKE_CURRENT_SOURCE_DIR}/FromWebAPI/*.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/FromWebAPI/*.cpp
 
     ${CMAKE_SOURCE_DIR}/CPlayer/*.cpp
     # ${CMAKE_SOURCE_DIR}/CPlayer/VideoPlayer/*.cpp
@@ -18,21 +18,22 @@ file(GLOB LOCAL_SRC
 
 
     ${CMAKE_SOURCE_DIR}/External/module/Logs/*.cpp
-    # ${LHHTTPAPI_SOURCE_DIRS}/*.cpp
+    ${CMAKE_SOURCE_DIR}/External/common/Thread/*.cpp
+    ${LHHTTPAPI_SOURCE_DIRS}/*.cpp
     
 )
 
 add_executable(${execName} ${LOCAL_SRC})
 
 #添加属性
-set_target_properties(${execName} PROPERTIES 
-    BUILD_RPATH "$ORIGIN"
-)
+# set_target_properties(${execName} PROPERTIES 
+#     BUILD_RPATH "$ORIGIN"
+# )
 
 #包含头文件
 target_include_directories(${execName} PRIVATE 
     ${CMAKE_CURRENT_SOURCE_DIR}
-    # ${CMAKE_CURRENT_SOURCE_DIR}/FromWebAPI
+    ${CMAKE_CURRENT_SOURCE_DIR}/FromWebAPI
 
     ${CMAKE_SOURCE_DIR}/CPlayer
     # ${CMAKE_SOURCE_DIR}/CPlayer/VideoPlayer
@@ -45,12 +46,14 @@ target_include_directories(${execName} PRIVATE
 
     ${CMAKE_SOURCE_DIR}/External/common
     ${CMAKE_SOURCE_DIR}/External/common/LHQLogLight
+    ${CMAKE_SOURCE_DIR}/External/common/Thread
     ${CMAKE_SOURCE_DIR}/External/module
     ${CMAKE_SOURCE_DIR}/External/module/Logs
+    
 
     ${spdlog_INCLUDE_DIR}
     # ${FFMPEG_INCLUDE_DIR}
-    # ${LHHTTPAPI_INCLUDE_DIRS}
+    ${LHHTTPAPI_INCLUDE_DIRS}
 )
 
 target_link_libraries(${execName} PRIVATE
@@ -80,8 +83,6 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
     target_link_libraries(${execName} PRIVATE
         # hcnetsdk
         # PlayCtrl
-    )
-    target_link_libraries(${execName} PRIVATE
         GL
     )
 endif()

+ 73 - 14
show1/FromWebAPI/FromWebAPI.cpp

@@ -4,12 +4,7 @@
 
 FromEQM::FromEQM()
 {
-    m_logger = spdlog::get("WebAPI");
-    if(m_logger == nullptr)
-    {
-        SPDLOG_ERROR("WebAPI logger is nullptr");
-        return;
-    }
+    
 }
 
 FromEQM::~FromEQM()
@@ -31,12 +26,12 @@ bool FromEQM::initWebApi(const QString& url, const QString& serverIP, const QStr
     }
     if(!m_httpApi->Load())
     {
-        SPDLOG_LOGGER_ERROR(m_logger,"Load WebApi failed");
+        SPDLOG_ERROR("Load WebApi failed");
         return false;
     }
 
     int ret = 0;
-    m_httpApi->DBInit(url.toStdString().c_str());
+    auto pHttp =  m_httpApi->DBInit(url.toStdString().c_str(), true);
     // if(ret < 0)
     // {
     //     SPDLOG_LOGGER_ERROR(m_logger,"Init WebApi failed:{}, error Info:{}",ret,m_httpApi->DoGetLastError(&ret).toStdString());
@@ -45,22 +40,86 @@ bool FromEQM::initWebApi(const QString& url, const QString& serverIP, const QStr
     // SPDLOG_LOGGER_TRACE(m_logger,"初始化WebApi成功!");
     // QString serverList;
     char serverList[8192] = {0};
-    ret = m_httpApi->DBGetServerList(serverList, 8192);
+    ret = m_httpApi->DBGetServerList(serverList, 8192-1);
     if(ret < 0)
     {
-        SPDLOG_LOGGER_ERROR(m_logger,"Get server list failed:{}, error info:{}",ret,m_httpApi->DoGetLastError(&ret).toStdString());
+        SPDLOG_ERROR("Get server list failed:{}, error info:{}",ret,m_httpApi->DoGetLastError(&ret).toStdString());
         // return false;
     }
     // SPDLOG_LOGGER_TRACE(m_logger,"Server list:{}",serverList.toStdString());
-    SPDLOG_LOGGER_DEBUG(m_logger,"WebAPI Sucess!");
+    SPDLOG_DEBUG("WebAPI Sucess!");
     /* 登录,第二个参数是限制的服务 */
-    ret = m_httpApi->DBLogin(serverIP, serID, "FACS", m_userToken);
+    ret = m_httpApi->DBLogin(serverIP, serID, "SPSC", m_userToken, true, pHttp);
     if(ret < 0)
     {
-        SPDLOG_LOGGER_ERROR(m_logger,"WebAPI Login failed:{}, error info:{}",ret,m_httpApi->DoGetLastError(&ret).toStdString());
+        SPDLOG_ERROR("WebAPI Login failed:{}, error info:{}",ret,m_httpApi->DoGetLastError(&ret).toStdString());
+        return false;
+    }
+    SPDLOG_INFO("WebAPI Login sucess!");
+
+    return true;
+}
+
+bool FromEQM::test()
+{
+    if(m_httpApi == nullptr)
+    {
+        SPDLOG_ERROR("WebAPI is nullptr");
+        return false;
+    }
+    nJson json0 = nJson::array();
+    
+    nJson jsonData1;
+    jsonData1["opName"] = "SPSC_test";
+    jsonData1["Key"] = 1;
+    nJson jsonParam1;
+    jsonParam1["pkid"] = 2807;
+    jsonData1["paramList"] = jsonParam1;
+    json0.push_back(jsonData1);
+
+    nJson jsonData2;
+    jsonData2["opName"] = "SPSC_test";
+    // jsonData2["Key"] = 2;
+    nJson jsonParam2;
+    jsonParam2["pkid"] = 2808;
+    jsonData2["paramList"] = jsonParam2;
+    json0.push_back(jsonData2);
+
+    SPDLOG_INFO("json: {}", jsonData2.dump(4));
+    QString strCmd = QString::fromStdString(jsonData2.dump());
+    QString strRet;
+    auto ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strCmd, strRet, true);
+    if(ret != 0)
+    {
+        SPDLOG_ERROR("DBDoInterface failed: {}, error info: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString());
+        return false;
+    }
+    SPDLOG_INFO("DBDoInterface sucess: {}", nJson::parse(strRet.toStdString()).dump(4));
+
+    return true;
+}
+
+bool FromEQM::test2()
+{
+    nJson json0;
+    json0["opName"] = "SPSC_GetOnWorkInfoByTime";
+    nJson jsonData;
+    jsonData["startTime"] = "2024-10-01 00:00:00";
+    jsonData["endTime"] = "2024-10-02 23:59:59";
+    json0["paramList"] = jsonData;
+
+    SPDLOG_INFO("strCmd: {}", json0.dump(4));
+    QString strCmd = QString::fromStdString(json0.dump());
+    QString strRet;
+    int ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strCmd, strRet, true);
+    if(ret != 0)
+    {
+        SPDLOG_ERROR("DBDoInterface failed: {}, error info: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString());
+        
         return false;
     }
-    SPDLOG_LOGGER_INFO(m_logger,"WebAPI Login sucess!");
+    
+    SPDLOG_INFO("DBDoInterface sucess: {}", nJson::parse(strRet.toStdString()).dump(4));
 
     return true;
 }

+ 5 - 1
show1/FromWebAPI/FromWebAPI.h

@@ -4,7 +4,9 @@
 #include "spdlog/spdlog.h"
 #include "lhhttpapi.h"
 
+#include "nlohmann/json.hpp"
 
+#define nJson nlohmann::json
 
 class FromEQM
 {
@@ -15,12 +17,14 @@ public:
     /* 初始化WebAPI */
     bool initWebApi(const QString& url,const QString& serverIP,const QString& serID);
 
+    bool test();
+    bool test2();
 
 private:
 
 
 private:
-    std::shared_ptr<spdlog::logger> m_logger = nullptr;
+    // std::shared_ptr<spdlog::logger> m_logger = nullptr;
 
     lhhttpapi* m_httpApi = nullptr;
     QString m_userToken;

+ 60 - 0
show1/main.cpp

@@ -6,6 +6,12 @@
 
 #include <QLibrary>
 #include <QDebug>
+#include "spdlog/spdlog.h"
+
+#include "FromWebAPI.h"
+
+void test();
+
 
 int main(int argc, char *argv[])
 {
@@ -22,8 +28,62 @@ int main(int argc, char *argv[])
         qDebug() << QString("模块%1加载失败: %2").arg(libFile).arg(lib->errorString());
     }
 
+    // test();
+
+    /* 初始化WebAPI */
+    // FromEQM webApi;
+    // if(!webApi.initWebApi("http://192.1.3.133:31000/v6", "", "4c2f9fc91c22dd98331e47af2e2964f4"))
+    // {
+    //     SPDLOG_ERROR("WebAPI init failed");
+    //     return -1;
+    // }
+    // SPDLOG_INFO("WebAPI init success");
+    // webApi.test();
+    // webApi.test2();
+
     
     widget w;
     w.show();
     return a.exec();
 }
+
+
+void test()
+{
+    QString str = R"(
+    {
+        "code": 0,
+        "result": [
+            {
+            "pkid": 208,
+            "camerName": "广电区域1",
+            "camerIp": "",
+            "camerUsr": "",
+            "camerPort": 0,
+            "camerPwd": "",
+            "camerChannel": null,
+            "camerId": 4,
+            "camerSerial": "rtsp://admin:LH123456@172.16.9.31:554",
+            "camerType": "视频流地址",
+            "camerUrl": null
+            },
+            {
+            "pkid": 211,
+            "camerName": "广电区域1",
+            "camerIp": "",
+            "camerUsr": "",
+            "camerPort": 0,
+            "camerPwd": "",
+            "camerChannel": null,
+            "camerId": 4,
+            "camerSerial": "rtsp://admin:LH123456@172.16.9.31:554",
+            "camerType": "视频流地址",
+            "camerUrl": null
+            }
+        ]
+    })";
+    SPDLOG_INFO("json: {}", str.toStdString());
+    QString str2 = str.toLower();
+    nJson json = nJson::parse(str2.toStdString());
+    SPDLOG_INFO("json: {}", json.dump(4));
+}

+ 53 - 6
show1/widget.cpp

@@ -5,6 +5,7 @@
 #include <QApplication>
 #include <QLibrary>
 #include <QDebug>
+#include <QSettings>
 
 #include "cameraplayer.h"
 
@@ -105,6 +106,9 @@ void widget::showEvent(QShowEvent *event)
 void widget::initCameraPlayer()
 {
 
+    /* 通过文件读取摄像机IP信息 */
+    readCameraInfo();
+
     /* 创建摄像机播放器 */
     m_cameraPlayer1 = new CameraPlayer;
 
@@ -121,12 +125,12 @@ void widget::initCameraPlayer()
     m_cameraPlayer1->setPlayWndSize(ui->widget_display1->size());
 
     /* 创建其他播放窗口 */
-    m_cameraPlayer2 = new CameraPlayer;
-    m_cameraPlayer2->setImage(image);
-    // m_cameraPlayer2->initCamera("172.16.9.31", 8000, "admin", "LH123456");
-    // m_cameraPlayer2->startRealPlay(1);
-    // m_cameraPlayer2->setPlayWndParent(ui->widget_display2);
-    // m_cameraPlayer2->setPlayWndSize(ui->widget_display2->size());
+    // m_cameraPlayer2 = new CameraPlayer;
+    // m_cameraPlayer2->setImage(image);
+    m_cameraPlayer2->initCamera("172.16.9.31", 8000, "admin", "LH123456");
+    m_cameraPlayer2->startRealPlay(1);
+    m_cameraPlayer2->setPlayWndParent(ui->widget_display2);
+    m_cameraPlayer2->setPlayWndSize(ui->widget_display2->size());
 
     m_cameraPlayer3 = new CameraPlayer;
     m_cameraPlayer3->setImage(image);
@@ -142,3 +146,46 @@ void widget::initCameraPlayer()
     m_cameraPlayer4->setPlayWndParent(ui->widget_display4);
     m_cameraPlayer4->setPlayWndSize(ui->widget_display4->size());
 }
+
+
+/* 读取摄像机IP信息 */
+void widget::readCameraInfo()
+{
+    QSettings settings("camera.ini", QSettings::IniFormat);
+    settings.beginGroup("Camera1");
+    CameraInfo_t info1;
+    info1.cameraIp = settings.value("IP", "").toString();
+    info1.cameraPort = settings.value("Port", 0).toInt();
+    info1.username = settings.value("Username", "").toString();
+    info1.password = settings.value("Password", "").toString();
+    settings.endGroup();
+    m_listCameraInfo.append(info1);
+
+    settings.beginGroup("Camera2");
+    CameraInfo_t info2;
+    info2.cameraIp = settings.value("IP", "").toString();
+    info2.cameraPort = settings.value("Port", 0).toInt();
+    info2.username = settings.value("Username", "").toString();
+    info2.password = settings.value("Password", "").toString();
+    settings.endGroup();
+    m_listCameraInfo.append(info2);
+
+    settings.beginGroup("Camera3");
+    CameraInfo_t info3;
+    info3.cameraIp = settings.value("IP", "").toString();
+    info3.cameraPort = settings.value("Port", 0).toInt();
+    info3.username = settings.value("Username", "").toString();
+    info3.password = settings.value("Password", "").toString();
+    settings.endGroup();
+    m_listCameraInfo.append(info3);
+
+    settings.beginGroup("Camera4");
+    CameraInfo_t info4;
+    info4.cameraIp = settings.value("IP", "").toString();
+    info4.cameraPort = settings.value("Port", 0).toInt();
+    info4.username = settings.value("Username", "").toString();
+    info4.password = settings.value("Password", "").toString();
+    settings.endGroup();
+    m_listCameraInfo.append(info4);
+
+}

+ 13 - 2
show1/widget.h

@@ -10,6 +10,16 @@ namespace Ui {
 class widget;
 }
 
+
+struct CameraInfo_t
+{
+    QString cameraIp;
+    int cameraPort;
+    QString username;
+    QString password;
+};
+
+
 class widget : public QWidget
 {
     Q_OBJECT
@@ -32,12 +42,13 @@ protected:
 
 private:
     void initCameraPlayer();
-    
+    /* 读取摄像机IP信息 */
+    void readCameraInfo();
 private:
     Ui::widget *ui;
 
     // FromWebAPI m_fromWebAPI;
-
+    QList<CameraInfo_t> m_listCameraInfo;
     CameraPlayer *m_cameraPlayer1 = nullptr;
     CameraPlayer *m_cameraPlayer2 = nullptr;
     CameraPlayer *m_cameraPlayer3 = nullptr;