Procházet zdrojové kódy

111111111111111111

Haobin Luo před 2 roky
rodič
revize
9e5d3a525b
6 změnil soubory, kde provedl 154 přidání a 46 odebrání
  1. 6 0
      backgroundserver.cpp
  2. 1 0
      backgroundserver.h
  3. 58 1
      external/jamming.cpp
  4. 6 0
      external/jamming.h
  5. 82 45
      simulationcontrol.cpp
  6. 1 0
      simulationcontrol.h

+ 6 - 0
backgroundserver.cpp

@@ -31,6 +31,8 @@ BackgroundServer::BackgroundServer(QObject *parent, quint16 port) : QObject(pare
             sim,&SimulationControl::SlotGetJammingInstances);
     connect(this,&BackgroundServer::sigGetJammingParams,
             sim,&SimulationControl::SlotGetJammingParams);
+    connect(this,&BackgroundServer::sigSetJammingStyle,
+            sim,&SimulationControl::SlotSetJammingStyle);
     connect(this,&BackgroundServer::sigGetESMParams,
             sim,&SimulationControl::SlotGetESMParams);
     connect(sim,&SimulationControl::SigReturnData,
@@ -246,6 +248,10 @@ void BackgroundServer::processMessage(QString message)
                 {
                     emit sigGetJammingParams(pSender, msgobj);
                 }
+                else if (url == "setJammingStyle" && msgobj.contains("InstanceID"))
+                {
+                    emit sigSetJammingStyle(pSender, msgobj);
+                }
                 else if (url == "getESMParams")
                 {
                     emit sigGetESMParams(pSender, msgobj);

+ 1 - 0
backgroundserver.h

@@ -44,6 +44,7 @@ signals:
     void sigGetThaadParams(QWebSocket *pSender, QJsonObject jsonObj);
     void sigGetJammingInstances(QWebSocket *pSender, QJsonObject jsonObj);
     void sigGetJammingParams(QWebSocket *pSender, QJsonObject jsonObj);
+    void sigSetJammingStyle(QWebSocket *pSender, QJsonObject jsonObj);
     void sigGetESMParams(QWebSocket *pSender, QJsonObject jsonObj);
 
 public slots:

+ 58 - 1
external/jamming.cpp

@@ -12,13 +12,70 @@ Jamming::Jamming(QObject *parent,
     this->Name = Name;
     this->SimulatorUrl = SimulationUrl;
     this->style = style;
+    radarsim = new client(nullptr, SimulationUrl);
+    connect(this,&Jamming::SigSendStyleToSim,
+            radarsim,&client::SlotSendStyleToSim);
 }
 
 void Jamming::StyleInit()
 {
     JammingStyle Jamming001;
-    Jamming001.OpMode = QString::fromLocal8Bit("噪声直放干扰");
+    Jamming001.OpMode = QString::fromLocal8Bit("噪声调频干扰");
     Jamming001.fc = 9.5e9;
     Jamming001.fs = 20e9;
     JammingStyleList.insert(std::pair<int, JammingStyle>(1,Jamming001));
+
+    JammingStyle Jamming002;
+    Jamming002.OpMode = QString::fromLocal8Bit("噪声调幅干扰");
+    Jamming002.fc = 9.5e9;
+    Jamming002.fs = 20e9;
+    JammingStyleList.insert(std::pair<int, JammingStyle>(2,Jamming002));
+
+    JammingStyle Jamming003;
+    Jamming003.OpMode = QString::fromLocal8Bit("射频噪声干扰");
+    Jamming003.fc = 9.5e9;
+    Jamming003.fs = 20e9;
+    JammingStyleList.insert(std::pair<int, JammingStyle>(3,Jamming003));
+
+    JammingStyle Jamming004;
+    Jamming004.OpMode = QString::fromLocal8Bit("距离假目标");
+    Jamming004.fc = 9.5e9;
+    Jamming004.fs = 20e9;
+    JammingStyleList.insert(std::pair<int, JammingStyle>(4,Jamming004));
+
+    JammingStyle Jamming005;
+    Jamming005.OpMode = QString::fromLocal8Bit("速度假目标");
+    Jamming005.fc = 9.5e9;
+    Jamming005.fs = 20e9;
+    JammingStyleList.insert(std::pair<int, JammingStyle>(5,Jamming005));
+
+    JammingStyle Jamming006;
+    Jamming006.OpMode = QString::fromLocal8Bit("速度拖引干扰");
+    Jamming006.fc = 9.5e9;
+    Jamming006.fs = 20e9;
+    JammingStyleList.insert(std::pair<int, JammingStyle>(6,Jamming006));
+
+    JammingStyle Jamming007;
+    Jamming007.OpMode = QString::fromLocal8Bit("间接采样转发干扰");
+    Jamming007.fc = 9.5e9;
+    Jamming007.fs = 20e9;
+    JammingStyleList.insert(std::pair<int, JammingStyle>(7,Jamming007));
+
+    JammingStyle Jamming008;
+    Jamming008.OpMode = QString::fromLocal8Bit("切片转发干扰");
+    Jamming008.fc = 9.5e9;
+    Jamming008.fs = 20e9;
+    JammingStyleList.insert(std::pair<int, JammingStyle>(8,Jamming008));
+
+    JammingStyle Jamming009;
+    Jamming009.OpMode = QString::fromLocal8Bit("DRFM噪声干扰");
+    Jamming009.fc = 9.5e9;
+    Jamming009.fs = 20e9;
+    JammingStyleList.insert(std::pair<int, JammingStyle>(9,Jamming009));
+}
+
+void Jamming::StyleUpdate(int newstyle)
+{
+    style = newstyle;
+    emit SigSendStyleToSim(QString::number(newstyle));
 }

+ 6 - 0
external/jamming.h

@@ -4,6 +4,7 @@
 #include <QObject>
 #include <QUrl>
 #include "externalsim.h"
+#include "../wsclient/client.h"
 
 struct JammingStyle
 {
@@ -18,6 +19,8 @@ class Jamming : public ExternalSim
 public:
     int style;
     std::map<int, JammingStyle> JammingStyleList;
+    client *radarsim;
+    QThread *radarsimthread;
 
     void StyleInit();
     explicit Jamming(QObject *parent = nullptr,
@@ -28,6 +31,9 @@ public:
                      int style = 0);
 
 signals:
+    void SigSendStyleToSim(QString newstyle);
+public slots:
+    void StyleUpdate(int newstyle);
 
 };
 

+ 82 - 45
simulationcontrol.cpp

@@ -35,15 +35,20 @@ SimulationControl::SimulationControl(QObject *parent) : QObject(parent)
     enemyThaadRadarSim.insert(std::pair<int, Radar*>(13, radar2));
 
 
-    // 添加干扰机
-    allyJammingSim.insert(std::pair<int, Jamming*>
-                          (20, new Jamming(this, 1001, 20, true, QString::fromLocal8Bit("干扰器1"))));
-    allyJammingSim.insert(std::pair<int, Jamming*>
-                          (21, new Jamming(this, 1002, 21, true, QString::fromLocal8Bit("干扰器1"))));
-    allyJammingSim.insert(std::pair<int, Jamming*>
-                          (22, new Jamming(this, 1003, 22, true, QString::fromLocal8Bit("干扰器1"))));
-    allyJammingSim.insert(std::pair<int, Jamming*>
-                          (23, new Jamming(this, 1004, 23, true, QString::fromLocal8Bit("干扰器1"))));
+    Jamming *jamming1 = new Jamming(this, 1001, 20, true, QString::fromLocal8Bit("干扰器1"),
+                                    QStringLiteral("ws://localhost:1240"),1);
+    Jamming *jamming2 = new Jamming(this, 1002, 21, true, QString::fromLocal8Bit("干扰器2"),
+                                    QStringLiteral("ws://localhost:1241"),1);
+    Jamming *jamming3 = new Jamming(this, 1003, 22, true, QString::fromLocal8Bit("干扰器3"),
+                                    QStringLiteral("ws://localhost:1242"),1);
+    Jamming *jamming4 = new Jamming(this, 1004, 23, true, QString::fromLocal8Bit("干扰器4"),
+                                    QStringLiteral("ws://localhost:1243"),1);
+    // 添加干扰器
+    allyJammingSim.insert(std::pair<int, Jamming*>(20, jamming1));
+    allyJammingSim.insert(std::pair<int, Jamming*>(21, jamming2));
+    allyJammingSim.insert(std::pair<int, Jamming*>(22, jamming3));
+    allyJammingSim.insert(std::pair<int, Jamming*>(23, jamming4));
+
 }
 
 void SimulationControl::SlotGetInit(QWebSocket *pSender, QJsonObject obj)
@@ -668,7 +673,7 @@ void SimulationControl::SlotSetThaadStyle(QWebSocket *pSender, QJsonObject obj)
 
 void SimulationControl::SlotGetJammingInstances(QWebSocket *pSender, QJsonObject obj)
 {
-    int nowPlatform = obj.value("PlatformID").toInt();
+    int nowPlatform = obj.value("PlatformID").toString().toInt();
 
     QJsonArray JammingInstances;
 
@@ -703,14 +708,13 @@ void SimulationControl::SlotGetJammingInstances(QWebSocket *pSender, QJsonObject
 
 void SimulationControl::SlotGetJammingParams(QWebSocket *pSender, QJsonObject obj)
 {
-    int nowInstance = obj.value("InstanceID").toInt();
-
-    Radar *nowRadar = enemyThaadRadarSim.at(nowInstance);
-
-    if (true || nowRadar->PlatformID == obj.value("PlatformID").toInt())
+    int nowInstance = obj.value("InstanceID").toString().toInt();
+    Jamming *nowJamming = allyJammingSim.at(nowInstance);
+    if (true || nowJamming->PlatformID == obj.value("PlatformID").toString().toInt())
     {
-        int styleIdx = nowRadar->style;
-        Style nowStyle = nowRadar->RadarStyleList.at(styleIdx);
+        int styleIdx = nowJamming->style;
+        qDebug() << styleIdx;
+        JammingStyle nowStyle = nowJamming->JammingStyleList.at(styleIdx);
 
         QJsonObject nowfs
         {
@@ -722,38 +726,13 @@ void SimulationControl::SlotGetJammingParams(QWebSocket *pSender, QJsonObject ob
             {"key", QString::fromLocal8Bit("载波频率")},
             {"value", nowStyle.fc}
         };
-        QJsonObject nowModuType
+        QJsonObject nowOpMode
         {
             {"key", QString::fromLocal8Bit("调制类型")},
-            {"value", nowStyle.moduType}
-        };
-        QJsonObject nowPRFMode
-        {
-            {"key", QString::fromLocal8Bit("PRF模式")},
-            {"value", nowStyle.PRFMode}
-        };
-        QJsonArray PRFarray;
-        for (auto i : nowStyle.PRFs)
-        {
-            PRFarray.push_back(i);
-        }
-        QJsonObject nowPRF
-        {
-            {"key", QString::fromLocal8Bit("PRF")},
-            {"value", PRFarray}
-        };
-        QJsonObject nowPW
-        {
-            {"key", QString::fromLocal8Bit("脉冲宽度")},
-            {"value", nowStyle.PulseWidth}
-        };
-        QJsonObject nowBW
-        {
-            {"key", QString::fromLocal8Bit("带宽")},
-            {"value", nowStyle.BandWidth}
+            {"value", nowStyle.OpMode}
         };
 
-        QJsonArray nowParams = {nowfs, nowfc, nowModuType, nowPRFMode, nowPRF, nowPW, nowBW};
+        QJsonArray nowParams = {nowfs, nowfc, nowOpMode};
 
         QJsonObject *ret = new QJsonObject();
         ret->insert("url", obj.value("url"));
@@ -766,6 +745,64 @@ void SimulationControl::SlotGetJammingParams(QWebSocket *pSender, QJsonObject ob
 
 }
 
+void SimulationControl::SlotSetJammingStyle(QWebSocket *pSender, QJsonObject obj)
+{
+    // PlatformID和InstanceID是字符串
+    int nowPlatform = obj.value("PlatformID").toString().toInt();
+    int nowInstance = obj.value("InstanceID").toString().toInt();
+    QJsonObject nowdata = obj.value("data").toObject();
+    if (nowdata.contains("Style"))
+    {
+        // Style索引是整型
+        int nowStyle = nowdata.value("Style").toInt();
+//        qDebug() << nowPlatform <<" "<< nowInstance << " " << nowStyle;
+
+        Jamming *nowJamming = allyJammingSim.at(nowInstance);
+        if (nowJamming == nullptr)
+        {
+            QJsonObject *ret = new QJsonObject();
+            ret->insert("url", obj.value("url"));
+            ret->insert("PlatformID", obj.value("PlatformID"));
+            ret->insert("InstanceID", obj.value("InstanceID"));
+            ret->insert("data", QJsonValue(""));
+
+            emit SigReturnData(pSender, ret);
+        }
+        else
+        {
+            nowJamming->StyleUpdate(nowStyle);
+
+            int styleIdx = nowJamming->style;
+            qDebug() << styleIdx;
+            JammingStyle nowStyle = nowJamming->JammingStyleList.at(styleIdx);
+
+            QJsonObject nowfs {
+                {"key", QString::fromLocal8Bit("采样频率")},
+                {"value", nowStyle.fs}
+            };
+            QJsonObject nowfc {
+                {"key", QString::fromLocal8Bit("载波频率")},
+                {"value", nowStyle.fc}
+            };
+            QJsonObject nowOpMode {
+                {"key", QString::fromLocal8Bit("开关机状态")},
+                {"value", nowStyle.OpMode}
+            };
+
+            QJsonArray nowParams = {nowfs, nowfc, nowOpMode};
+
+            QJsonObject *ret = new QJsonObject({
+                                                   {"url", obj.value("url")},
+                                                   {"PlatformID", obj.value("PlatformID")},
+                                                   {"InstanceID", obj.value("InstanceID")},
+                                                   {"data",QJsonValue(nowParams)}
+                                               });
+
+            emit SigReturnData(pSender, ret);
+        }
+    }
+}
+
 void SimulationControl::SlotGetESMParams(QWebSocket *pSender, QJsonObject obj)
 {
     int InstanceID = obj.value("InstanceID").toInt();

+ 1 - 0
simulationcontrol.h

@@ -43,6 +43,7 @@ public slots:
     void SlotSetThaadStyle(QWebSocket *pSender, QJsonObject obj);
     void SlotGetJammingInstances(QWebSocket *pSender, QJsonObject obj);
     void SlotGetJammingParams(QWebSocket *pSender, QJsonObject obj);
+    void SlotSetJammingStyle(QWebSocket *pSender, QJsonObject obj);
     void SlotGetESMParams(QWebSocket *pSender, QJsonObject obj);
 };