simulationcontrol.cpp 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971
  1. #include "simulationcontrol.h"
  2. SimulationControl::SimulationControl(QObject *parent) : QObject(parent)
  3. {
  4. // 添加场景平台
  5. allyplane.push_back(new Platform(this, 1001, QString::fromLocal8Bit("干扰机_1"),120,27,8000,-200,200,-300));
  6. allyplane.push_back(new Platform(this, 1002, QString::fromLocal8Bit("干扰机_2"),120.3,27,8000,-200,200,-300));
  7. allyplane.push_back(new Platform(this, 1003, QString::fromLocal8Bit("干扰机_3"),120,27.3,8000,-200,200,-300));
  8. allyplane.push_back(new Platform(this, 1004, QString::fromLocal8Bit("干扰机_4"),120.3,27.3,8000,-200,200,-300));
  9. allymissile.push_back(new Platform(this, 2001, QString::fromLocal8Bit("弹道导弹1"),117,33,0));
  10. allymissile.push_back(new Platform(this, 2001, QString::fromLocal8Bit("弹道导弹2"),117,33,0));
  11. allymissile.push_back(new Platform(this, 2001, QString::fromLocal8Bit("弹道导弹3"),117,33,0));
  12. allymissile.push_back(new Platform(this, 2001, QString::fromLocal8Bit("弹道导弹4"),117,33,0));
  13. ally.push_back(allyplane);
  14. ally.push_back(allymissile);
  15. enemyradar.push_back(new Platform(this,6001,QString::fromLocal8Bit("Thaad系统1"),121,24.5,0));
  16. enemyradar.push_back(new Platform(this,6002,QString::fromLocal8Bit("Thaad系统2"),121,22.5,0));
  17. enemy.push_back(enemyradar);
  18. enemy.push_back(enemysat);
  19. // 添加雷达模拟器
  20. Radar *radar1 = new Radar(this, 6001, 12, true, QString::fromLocal8Bit("AN-TPY/2雷达-1"),
  21. QStringLiteral("ws://localhost:1235"));
  22. Radar *radar2 = new Radar(this, 6002, 13, false, QString::fromLocal8Bit("AN-TPY/2雷达-2"),
  23. QStringLiteral("ws://localhost:1236"));
  24. // connect(this,&SimulationControl::SigRadarStyleUpdate,
  25. // radar1,&Radar::StyleUpdate);
  26. // connect(this,&SimulationControl::SigRadarStyleUpdate,
  27. // radar2,&Radar::StyleUpdate);
  28. enemyThaadRadarSim.insert(std::pair<int, Radar*>(12, radar1));
  29. enemyThaadRadarSim.insert(std::pair<int, Radar*>(13, radar2));
  30. Jamming *jamming1 = new Jamming(this, 1001, 20, true, QString::fromLocal8Bit("干扰器1"),
  31. QStringLiteral("ws://localhost:1240"),1);
  32. Jamming *jamming2 = new Jamming(this, 1002, 21, true, QString::fromLocal8Bit("干扰器2"),
  33. QStringLiteral("ws://localhost:1241"),1);
  34. Jamming *jamming3 = new Jamming(this, 1003, 22, true, QString::fromLocal8Bit("干扰器3"),
  35. QStringLiteral("ws://localhost:1242"),1);
  36. Jamming *jamming4 = new Jamming(this, 1004, 23, true, QString::fromLocal8Bit("干扰器4"),
  37. QStringLiteral("ws://localhost:1243"),1);
  38. // 添加干扰器
  39. allyJammingSim.insert(std::pair<int, Jamming*>(20, jamming1));
  40. allyJammingSim.insert(std::pair<int, Jamming*>(21, jamming2));
  41. allyJammingSim.insert(std::pair<int, Jamming*>(22, jamming3));
  42. allyJammingSim.insert(std::pair<int, Jamming*>(23, jamming4));
  43. }
  44. void SimulationControl::SlotGetInit(QWebSocket *pSender, QJsonObject obj)
  45. {
  46. qDebug() << "Build with Slot";
  47. QJsonObject *InitState = new QJsonObject();
  48. InitState->insert("InitState", 100);
  49. QJsonObject *ret = new QJsonObject();
  50. ret->insert("url", obj.value("url"));
  51. ret->insert("data", *InitState);
  52. delete InitState;
  53. emit SigReturnData(pSender, ret);
  54. }
  55. void SimulationControl::SlotGetLeadPost(QWebSocket *pSender, QJsonObject obj)
  56. {
  57. QJsonArray *LeadPost = new QJsonArray();
  58. QJsonObject *CurrentLeadPost;
  59. CurrentLeadPost = new QJsonObject();
  60. CurrentLeadPost->insert("time", "20:20:01");
  61. CurrentLeadPost->insert("GroupID", "0001");
  62. CurrentLeadPost->insert("LeaderID", "8013");
  63. CurrentLeadPost->insert("Abstract", QString::fromLocal8Bit("发现雷达"));
  64. LeadPost->append(*CurrentLeadPost);
  65. delete CurrentLeadPost;
  66. CurrentLeadPost = new QJsonObject();
  67. CurrentLeadPost->insert("time", "20:20:30");
  68. CurrentLeadPost->insert("GroupID", "0001");
  69. CurrentLeadPost->insert("LeaderID", "8013");
  70. CurrentLeadPost->insert("Abstract", QString::fromLocal8Bit("请求施加干扰"));
  71. LeadPost->append(*CurrentLeadPost);
  72. delete CurrentLeadPost;
  73. CurrentLeadPost = new QJsonObject();
  74. CurrentLeadPost->insert("time", "20:20:40");
  75. CurrentLeadPost->insert("GroupID", "0003");
  76. CurrentLeadPost->insert("LeaderID", "8014");
  77. CurrentLeadPost->insert("Abstract", QString::fromLocal8Bit("干扰样式生成"));
  78. LeadPost->append(*CurrentLeadPost);
  79. delete CurrentLeadPost;
  80. CurrentLeadPost = new QJsonObject();
  81. CurrentLeadPost->insert("time", "20:21:00");
  82. CurrentLeadPost->insert("GroupID", "0002");
  83. CurrentLeadPost->insert("LeaderID", "8015");
  84. CurrentLeadPost->insert("Abstract", QString::fromLocal8Bit("干扰信号发射"));
  85. LeadPost->append(*CurrentLeadPost);
  86. delete CurrentLeadPost;
  87. QJsonObject *ret = new QJsonObject();
  88. ret->insert("url", obj.value("url"));
  89. ret->insert("PlatformID", obj.value("PlatformID"));
  90. ret->insert("data", *LeadPost);
  91. delete LeadPost;
  92. emit SigReturnData(pSender, ret);
  93. }
  94. void SimulationControl::SlotGetTaskPlan(QWebSocket *pSender, QJsonObject obj)
  95. {
  96. QJsonObject *TaskPlan = new QJsonObject();
  97. QJsonObject *CurrentAirLine;
  98. QJsonObject *CurrentTaskPlan;
  99. CurrentAirLine = new QJsonObject;
  100. CurrentAirLine->insert("TargetArea", 3);
  101. CurrentAirLine->insert("Longitude", 123);
  102. CurrentAirLine->insert("Longitude", 27);
  103. CurrentAirLine->insert("Radius", 300000);
  104. CurrentTaskPlan = new QJsonObject;
  105. CurrentTaskPlan->insert("TargetArea", 2);
  106. CurrentTaskPlan->insert("ThrowGas", 2);
  107. CurrentTaskPlan->insert("ThrowBT", 2);
  108. TaskPlan->insert("Airline", *CurrentAirLine);
  109. TaskPlan->insert("TaskPlan", *CurrentTaskPlan);
  110. QJsonObject *ret = new QJsonObject();
  111. ret->insert("url", obj.value("url"));
  112. ret->insert("PlatformID", obj.value("PlatformID"));
  113. ret->insert("data", *TaskPlan);
  114. delete TaskPlan;
  115. delete CurrentAirLine;
  116. delete CurrentTaskPlan;
  117. emit SigReturnData(pSender, ret);
  118. }
  119. void SimulationControl::SlotGetGlobalMap(QWebSocket *pSender, QJsonObject obj)
  120. {
  121. QJsonObject GlobalMap;
  122. // QJsonObject *alies = new QJsonObject();
  123. // QJsonObject *enemys = new QJsonObject();
  124. QJsonObject allies;
  125. QJsonObject enemys;
  126. for (int i=0; i < ally.size(); i++)
  127. {
  128. QJsonArray allyNow;
  129. for (auto j: ally.at(i))
  130. {
  131. QJsonArray temparray = {j->lon, j->lat, j->h};
  132. QJsonObject tempObject
  133. {
  134. {"name", j->Name},
  135. {"value", temparray}
  136. };
  137. allyNow.append(tempObject);
  138. }
  139. if (i == 0)
  140. {
  141. allies.insert("Planes", allyNow);
  142. }
  143. else if (i == 1)
  144. {
  145. allies.insert("Missiles",allyNow);
  146. }
  147. }
  148. for (int i=0; i < enemy.size(); i++)
  149. {
  150. QJsonArray enemyNow;
  151. for (auto j: enemy.at(i))
  152. {
  153. QJsonArray temparray = {j->lon, j->lat, j->h};
  154. QJsonObject tempObject
  155. {
  156. {"name", j->Name},
  157. {"value", temparray}
  158. };
  159. enemyNow.append(tempObject);
  160. }
  161. if (i == 0)
  162. {
  163. enemys.insert("Radars", enemyNow);
  164. }
  165. }
  166. GlobalMap.insert("friend", QJsonValue(allies));
  167. GlobalMap.insert("enemy", QJsonValue(enemys));
  168. QJsonObject *ret = new QJsonObject();
  169. ret->insert("url", obj.value("url"));
  170. ret->insert("PlatformID", obj.value("PlatformID"));
  171. ret->insert("data",QJsonValue(GlobalMap));
  172. emit SigReturnData(pSender, ret);
  173. }
  174. void SimulationControl::SlotGetPlatformTable(QWebSocket *pSender, QJsonObject obj)
  175. {
  176. QJsonArray Platforms;
  177. for (int i = 0; i < ally.size(); i++)
  178. {
  179. std::vector<Platform *> allyplatforms = ally.at(i);
  180. if (i == 0)
  181. {
  182. for (auto j : allyplatforms)
  183. {
  184. QJsonObject SinglePlatform
  185. {
  186. {"platformID", QString::number(j->ID)},
  187. {"platformName", j->Name}
  188. };
  189. Platforms.append(SinglePlatform);
  190. }
  191. }
  192. }
  193. QJsonObject *ret = new QJsonObject();
  194. ret->insert("url", obj.value("url"));
  195. ret->insert("data",QJsonValue(Platforms));
  196. emit SigReturnData(pSender, ret);
  197. }
  198. void SimulationControl::SlotGetInstanceTable(QWebSocket *pSender, QJsonObject obj)
  199. {
  200. QJsonArray *Instances = new QJsonArray();
  201. QJsonObject *SingleInstance;
  202. if (true)
  203. {
  204. SingleInstance = new QJsonObject();
  205. SingleInstance->insert("instanceID", 22);
  206. SingleInstance->insert("instanceName", QString::fromLocal8Bit("侦察机_1"));
  207. Instances->append(*SingleInstance);
  208. delete SingleInstance;
  209. SingleInstance = new QJsonObject();
  210. SingleInstance->insert("instanceID", 62);
  211. SingleInstance->insert("instanceName", QString::fromLocal8Bit("信号侦察_1"));
  212. Instances->append(*SingleInstance);
  213. delete SingleInstance;
  214. SingleInstance = new QJsonObject();
  215. SingleInstance->insert("instanceID", 96);
  216. SingleInstance->insert("instanceName", QString::fromLocal8Bit("体系增量_1"));
  217. Instances->append(*SingleInstance);
  218. delete SingleInstance;
  219. SingleInstance = new QJsonObject();
  220. SingleInstance->insert("instanceID", 111);
  221. SingleInstance->insert("instanceName", QString::fromLocal8Bit("侦察平台任务系统_1"));
  222. Instances->append(*SingleInstance);
  223. delete SingleInstance;
  224. SingleInstance = new QJsonObject();
  225. SingleInstance->insert("instanceID", 171);
  226. SingleInstance->insert("instanceName", QString::fromLocal8Bit("导航_1"));
  227. Instances->append(*SingleInstance);
  228. delete SingleInstance;
  229. }
  230. QJsonObject *ret = new QJsonObject();
  231. ret->insert("url", obj.value("url"));
  232. ret->insert("PlatformID", obj.value("PlatformID"));
  233. ret->insert("data",QJsonValue(*Instances));
  234. delete Instances;
  235. emit SigReturnData(pSender, ret);
  236. }
  237. void SimulationControl::SlotGetRadarInstances(QWebSocket *pSender, QJsonObject obj)
  238. {
  239. int nowPlatform = obj.value("PlatformID").toInt();
  240. QJsonArray RadarInstances;
  241. for (auto i : enemyThaadRadarSim)
  242. {
  243. QJsonObject tempThaad;
  244. if (1 || nowPlatform == i.second->PlatformID)
  245. {
  246. tempThaad.insert("instanceID", QString::number(i.first));
  247. tempThaad.insert("instanceName",i.second->Name);
  248. if (i.second->SwitchMode)
  249. {
  250. tempThaad.insert("instanceState", QString::fromLocal8Bit("开机"));
  251. }
  252. else
  253. {
  254. tempThaad.insert("instanceState", QString::fromLocal8Bit("关机"));
  255. }
  256. }
  257. RadarInstances.append(tempThaad);
  258. }
  259. QJsonObject *ret = new QJsonObject();
  260. ret->insert("url", obj.value("url"));
  261. ret->insert("PlatformID", obj.value("PlatformID"));
  262. ret->insert("data",QJsonValue(RadarInstances));
  263. emit SigReturnData(pSender, ret);
  264. }
  265. void SimulationControl::SlotGetRadarParams(QWebSocket *pSender, QJsonObject obj)
  266. {
  267. int nowInstance = obj.value("InstanceID").toString().toInt();
  268. Radar *nowRadar = enemyThaadRadarSim.at(nowInstance);
  269. if (nowRadar == nullptr)
  270. {
  271. QJsonObject *ret = new QJsonObject();
  272. ret->insert("url", obj.value("url"));
  273. ret->insert("PlatformID", obj.value("PlatformID"));
  274. ret->insert("InstanceID", obj.value("InstanceID"));
  275. ret->insert("data",QJsonValue());
  276. emit SigReturnData(pSender, ret);
  277. }
  278. else if (true || nowRadar->PlatformID == obj.value("PlatformID").toInt())
  279. {
  280. int styleIdx = nowRadar->style;
  281. qDebug() << styleIdx;
  282. Style nowStyle = nowRadar->RadarStyleList.at(styleIdx);
  283. QJsonObject nowfs {
  284. {"key", QString::fromLocal8Bit("采样频率")},
  285. {"value", nowStyle.fs}
  286. };
  287. QJsonObject nowfc {
  288. {"key", QString::fromLocal8Bit("载波频率")},
  289. {"value", nowStyle.fc}
  290. };
  291. QJsonObject nowModuType {
  292. {"key", QString::fromLocal8Bit("调制类型")},
  293. {"value", nowStyle.moduType}
  294. };
  295. QJsonObject nowPRFMode {
  296. {"key", QString::fromLocal8Bit("PRF模式")},
  297. {"value", nowStyle.PRFMode}
  298. };
  299. QJsonArray PRFarray;
  300. for (auto i : nowStyle.PRFs)
  301. {
  302. PRFarray.push_back(i);
  303. }
  304. QJsonObject nowPRF
  305. {
  306. {"key", QString::fromLocal8Bit("PRF")},
  307. {"value", PRFarray}
  308. };
  309. QJsonObject nowPW
  310. {
  311. {"key", QString::fromLocal8Bit("脉冲宽度")},
  312. {"value", nowStyle.PulseWidth}
  313. };
  314. QJsonObject nowBW
  315. {
  316. {"key", QString::fromLocal8Bit("带宽")},
  317. {"value", nowStyle.BandWidth}
  318. };
  319. QJsonArray nowParams = {nowfs, nowfc, nowModuType, nowPRFMode, nowPRF, nowPW, nowBW};
  320. QJsonObject initMaxDis {
  321. {"key", QString::fromLocal8Bit("最大量程")},
  322. {"value", 800000}
  323. };
  324. QJsonObject initMinDis {
  325. {"key", QString::fromLocal8Bit("最小量程")},
  326. {"value", 1000}
  327. };
  328. QJsonObject initMaxFre {
  329. {"key", QString::fromLocal8Bit("最大频率")},
  330. {"value", 12e9}
  331. };
  332. QJsonObject initMinFre {
  333. {"key", QString::fromLocal8Bit("最大频率")},
  334. {"value", 8e9}
  335. };
  336. QJsonObject initNumArrayElement {
  337. {"key", QString::fromLocal8Bit("阵元数")},
  338. {"value", 25344}
  339. };
  340. QJsonObject initGain {
  341. {"key", QString::fromLocal8Bit("天线增益")},
  342. {"value", 48.77}
  343. };
  344. QJsonObject initPt {
  345. {"key", QString::fromLocal8Bit("发射机功率")},
  346. {"value", 405e3}
  347. };
  348. QJsonArray initParams = {initMaxDis, initMinDis, initMaxFre, initMinFre, initNumArrayElement, initGain, initPt};
  349. QJsonObject retParams {
  350. {"InitParams", initParams},
  351. {"CtrlParams", nowParams}
  352. };
  353. QJsonObject *ret = new QJsonObject({
  354. {"url", obj.value("url")},
  355. {"PlatformID", obj.value("PlatformID")},
  356. {"InstanceID", obj.value("InstanceID")},
  357. {"data",QJsonValue(retParams)}
  358. });
  359. emit SigReturnData(pSender, ret);
  360. }
  361. }
  362. void SimulationControl::SlotGetThaadInstances(QWebSocket *pSender, QJsonObject obj)
  363. {
  364. QJsonArray RadarInstances;
  365. for (auto i : enemyThaadRadarSim)
  366. {
  367. QJsonObject tempThaad;
  368. if (1)
  369. {
  370. tempThaad.insert("instanceID", QString::number(i.first));
  371. tempThaad.insert("instanceName",i.second->Name);
  372. if (i.second->SwitchMode)
  373. {
  374. tempThaad.insert("instanceState", QString::fromLocal8Bit("开机"));
  375. }
  376. else
  377. {
  378. tempThaad.insert("instanceState", QString::fromLocal8Bit("关机"));
  379. }
  380. }
  381. RadarInstances.append(tempThaad);
  382. }
  383. QJsonObject *ret = new QJsonObject();
  384. ret->insert("url", obj.value("url"));
  385. ret->insert("PlatformID", obj.value("PlatformID"));
  386. ret->insert("data",QJsonValue(RadarInstances));
  387. emit SigReturnData(pSender, ret);
  388. }
  389. void SimulationControl::SlotGetThaadParams(QWebSocket *pSender, QJsonObject obj)
  390. {
  391. int nowInstance = obj.value("InstanceID").toString().toInt();
  392. Radar *nowRadar = enemyThaadRadarSim.at(nowInstance);
  393. if (nowRadar == nullptr)
  394. {
  395. QJsonObject *ret = new QJsonObject();
  396. ret->insert("url", obj.value("url"));
  397. ret->insert("PlatformID", obj.value("PlatformID"));
  398. ret->insert("InstanceID", obj.value("InstanceID"));
  399. ret->insert("data",QJsonValue());
  400. emit SigReturnData(pSender, ret);
  401. }
  402. else if (true || nowRadar->PlatformID == obj.value("PlatformID").toInt())
  403. {
  404. int styleIdx = nowRadar->style;
  405. qDebug() << styleIdx;
  406. Style nowStyle = nowRadar->RadarStyleList.at(styleIdx);
  407. QJsonObject nowfs {
  408. {"key", QString::fromLocal8Bit("采样频率")},
  409. {"value", nowStyle.fs}
  410. };
  411. QJsonObject nowfc {
  412. {"key", QString::fromLocal8Bit("载波频率")},
  413. {"value", nowStyle.fc}
  414. };
  415. QJsonObject nowModuType {
  416. {"key", QString::fromLocal8Bit("调制类型")},
  417. {"value", nowStyle.moduType}
  418. };
  419. QJsonObject nowPRFMode {
  420. {"key", QString::fromLocal8Bit("PRF模式")},
  421. {"value", nowStyle.PRFMode}
  422. };
  423. QJsonArray PRFarray;
  424. for (auto i : nowStyle.PRFs)
  425. {
  426. PRFarray.push_back(i);
  427. }
  428. QJsonObject nowPRF
  429. {
  430. {"key", QString::fromLocal8Bit("PRF")},
  431. {"value", PRFarray}
  432. };
  433. QJsonObject nowPW
  434. {
  435. {"key", QString::fromLocal8Bit("脉冲宽度")},
  436. {"value", nowStyle.PulseWidth}
  437. };
  438. QJsonObject nowBW
  439. {
  440. {"key", QString::fromLocal8Bit("带宽")},
  441. {"value", nowStyle.BandWidth}
  442. };
  443. QJsonArray nowParams = {nowfs, nowfc, nowModuType, nowPRFMode, nowPRF, nowPW, nowBW};
  444. QJsonObject initMaxDis {
  445. {"key", QString::fromLocal8Bit("最大量程")},
  446. {"value", 800000}
  447. };
  448. QJsonObject initMinDis {
  449. {"key", QString::fromLocal8Bit("最小量程")},
  450. {"value", 1000}
  451. };
  452. QJsonObject initMaxFre {
  453. {"key", QString::fromLocal8Bit("最大频率")},
  454. {"value", 12e9}
  455. };
  456. QJsonObject initMinFre {
  457. {"key", QString::fromLocal8Bit("最大频率")},
  458. {"value", 8e9}
  459. };
  460. QJsonObject initNumArrayElement {
  461. {"key", QString::fromLocal8Bit("阵元数")},
  462. {"value", 25344}
  463. };
  464. QJsonObject initGain {
  465. {"key", QString::fromLocal8Bit("天线增益")},
  466. {"value", 48.77}
  467. };
  468. QJsonObject initPt {
  469. {"key", QString::fromLocal8Bit("发射机功率")},
  470. {"value", 405e3}
  471. };
  472. QJsonArray initParams = {initMaxDis, initMinDis, initMaxFre, initMinFre, initNumArrayElement, initGain, initPt};
  473. QJsonObject retParams {
  474. {"InitParams", initParams},
  475. {"CtrlParams", nowParams}
  476. };
  477. QJsonObject *ret = new QJsonObject({
  478. {"url", obj.value("url")},
  479. {"PlatformID", obj.value("PlatformID")},
  480. {"InstanceID", obj.value("InstanceID")},
  481. {"data",QJsonValue(retParams)}
  482. });
  483. emit SigReturnData(pSender, ret);
  484. }
  485. }
  486. void SimulationControl::SlotSetThaadStyle(QWebSocket *pSender, QJsonObject obj)
  487. {
  488. // PlatformID和InstanceID是字符串
  489. int nowPlatform = obj.value("PlatformID").toString().toInt();
  490. int nowInstance = obj.value("InstanceID").toString().toInt();
  491. QJsonObject nowdata = obj.value("data").toObject();
  492. if (nowdata.contains("Style"))
  493. {
  494. // Style索引是整型
  495. int nowStyle = nowdata.value("Style").toInt();
  496. // qDebug() << nowPlatform <<" "<< nowInstance << " " << nowStyle;
  497. Radar *nowRadar = enemyThaadRadarSim.at(nowInstance);
  498. if (nowRadar == nullptr)
  499. {
  500. QJsonObject *ret = new QJsonObject();
  501. ret->insert("url", obj.value("url"));
  502. ret->insert("PlatformID", obj.value("PlatformID"));
  503. ret->insert("InstanceID", obj.value("InstanceID"));
  504. ret->insert("data", QJsonValue(""));
  505. emit SigReturnData(pSender, ret);
  506. }
  507. else
  508. {
  509. nowRadar->StyleUpdate(nowStyle);
  510. int styleIdx = nowRadar->style;
  511. qDebug() << styleIdx;
  512. Style nowStyle = nowRadar->RadarStyleList.at(styleIdx);
  513. QJsonObject nowfs {
  514. {"key", QString::fromLocal8Bit("采样频率")},
  515. {"value", nowStyle.fs}
  516. };
  517. QJsonObject nowfc {
  518. {"key", QString::fromLocal8Bit("载波频率")},
  519. {"value", nowStyle.fc}
  520. };
  521. QJsonObject nowModuType {
  522. {"key", QString::fromLocal8Bit("调制类型")},
  523. {"value", nowStyle.moduType}
  524. };
  525. QJsonObject nowPRFMode {
  526. {"key", QString::fromLocal8Bit("PRF模式")},
  527. {"value", nowStyle.PRFMode}
  528. };
  529. QJsonArray PRFarray;
  530. for (auto i : nowStyle.PRFs)
  531. {
  532. PRFarray.push_back(i);
  533. }
  534. QJsonObject nowPRF
  535. {
  536. {"key", QString::fromLocal8Bit("PRF")},
  537. {"value", PRFarray}
  538. };
  539. QJsonObject nowPW
  540. {
  541. {"key", QString::fromLocal8Bit("脉冲宽度")},
  542. {"value", nowStyle.PulseWidth}
  543. };
  544. QJsonObject nowBW
  545. {
  546. {"key", QString::fromLocal8Bit("带宽")},
  547. {"value", nowStyle.BandWidth}
  548. };
  549. QJsonArray nowParams = {nowfs, nowfc, nowModuType, nowPRFMode, nowPRF, nowPW, nowBW};
  550. QJsonObject initMaxDis {
  551. {"key", QString::fromLocal8Bit("最大量程")},
  552. {"value", 800000}
  553. };
  554. QJsonObject initMinDis {
  555. {"key", QString::fromLocal8Bit("最小量程")},
  556. {"value", 1000}
  557. };
  558. QJsonObject initMaxFre {
  559. {"key", QString::fromLocal8Bit("最大频率")},
  560. {"value", 12e9}
  561. };
  562. QJsonObject initMinFre {
  563. {"key", QString::fromLocal8Bit("最大频率")},
  564. {"value", 8e9}
  565. };
  566. QJsonObject initNumArrayElement {
  567. {"key", QString::fromLocal8Bit("阵元数")},
  568. {"value", 25344}
  569. };
  570. QJsonObject initGain {
  571. {"key", QString::fromLocal8Bit("天线增益")},
  572. {"value", 48.77}
  573. };
  574. QJsonObject initPt {
  575. {"key", QString::fromLocal8Bit("发射机功率")},
  576. {"value", 405e3}
  577. };
  578. QJsonArray initParams = {initMaxDis, initMinDis, initMaxFre, initMinFre, initNumArrayElement, initGain, initPt};
  579. QJsonObject retParams {
  580. {"InitParams", initParams},
  581. {"CtrlParams", nowParams}
  582. };
  583. QJsonObject *ret = new QJsonObject({
  584. {"url", obj.value("url")},
  585. {"PlatformID", obj.value("PlatformID")},
  586. {"InstanceID", obj.value("InstanceID")},
  587. {"data",QJsonValue(retParams)}
  588. });
  589. emit SigReturnData(pSender, ret);
  590. }
  591. }
  592. }
  593. void SimulationControl::SlotGetJammingInstances(QWebSocket *pSender, QJsonObject obj)
  594. {
  595. int nowPlatform = obj.value("PlatformID").toString().toInt();
  596. QJsonArray JammingInstances;
  597. for (auto i : allyJammingSim)
  598. {
  599. QJsonObject tempJamming;
  600. if (true || nowPlatform == i.second->PlatformID)
  601. {
  602. tempJamming.insert("instanceID", QString::number(i.first));
  603. tempJamming.insert("instanceName",i.second->Name);
  604. if (i.second->SwitchMode)
  605. {
  606. tempJamming.insert("instanceState", QString::fromLocal8Bit("开机"));
  607. }
  608. else
  609. {
  610. tempJamming.insert("instanceState", QString::fromLocal8Bit("关机"));
  611. }
  612. JammingInstances.append(tempJamming);
  613. }
  614. }
  615. QJsonObject *ret = new QJsonObject();
  616. ret->insert("url", obj.value("url"));
  617. ret->insert("PlatformID", obj.value("PlatformID"));
  618. ret->insert("data",QJsonValue(JammingInstances));
  619. emit SigReturnData(pSender, ret);
  620. }
  621. void SimulationControl::SlotGetJammingParams(QWebSocket *pSender, QJsonObject obj)
  622. {
  623. int nowInstance = obj.value("InstanceID").toString().toInt();
  624. Jamming *nowJamming = allyJammingSim.at(nowInstance);
  625. if (true || nowJamming->PlatformID == obj.value("PlatformID").toString().toInt())
  626. {
  627. int styleIdx = nowJamming->style;
  628. qDebug() << styleIdx;
  629. JammingStyle nowStyle = nowJamming->JammingStyleList.at(styleIdx);
  630. QJsonObject nowfs
  631. {
  632. {"key", QString::fromLocal8Bit("采样频率")},
  633. {"value", nowStyle.fs}
  634. };
  635. QJsonObject nowfc
  636. {
  637. {"key", QString::fromLocal8Bit("载波频率")},
  638. {"value", nowStyle.fc}
  639. };
  640. QJsonObject nowOpMode
  641. {
  642. {"key", QString::fromLocal8Bit("调制类型")},
  643. {"value", nowStyle.OpMode}
  644. };
  645. QJsonArray nowParams = {nowfs, nowfc, nowOpMode};
  646. QJsonObject *ret = new QJsonObject();
  647. ret->insert("url", obj.value("url"));
  648. ret->insert("PlatformID", obj.value("PlatformID"));
  649. ret->insert("InstanceID", obj.value("InstanceID"));
  650. ret->insert("data",QJsonValue(nowParams));
  651. emit SigReturnData(pSender, ret);
  652. }
  653. }
  654. void SimulationControl::SlotSetJammingStyle(QWebSocket *pSender, QJsonObject obj)
  655. {
  656. // PlatformID和InstanceID是字符串
  657. int nowPlatform = obj.value("PlatformID").toString().toInt();
  658. int nowInstance = obj.value("InstanceID").toString().toInt();
  659. QJsonObject nowdata = obj.value("data").toObject();
  660. if (nowdata.contains("Style"))
  661. {
  662. // Style索引是整型
  663. int nowStyle = nowdata.value("Style").toInt();
  664. // qDebug() << nowPlatform <<" "<< nowInstance << " " << nowStyle;
  665. Jamming *nowJamming = allyJammingSim.at(nowInstance);
  666. if (nowJamming == nullptr)
  667. {
  668. QJsonObject *ret = new QJsonObject();
  669. ret->insert("url", obj.value("url"));
  670. ret->insert("PlatformID", obj.value("PlatformID"));
  671. ret->insert("InstanceID", obj.value("InstanceID"));
  672. ret->insert("data", QJsonValue(""));
  673. emit SigReturnData(pSender, ret);
  674. }
  675. else
  676. {
  677. nowJamming->StyleUpdate(nowStyle);
  678. int styleIdx = nowJamming->style;
  679. qDebug() << styleIdx;
  680. JammingStyle nowStyle = nowJamming->JammingStyleList.at(styleIdx);
  681. QJsonObject nowfs {
  682. {"key", QString::fromLocal8Bit("采样频率")},
  683. {"value", nowStyle.fs}
  684. };
  685. QJsonObject nowfc {
  686. {"key", QString::fromLocal8Bit("载波频率")},
  687. {"value", nowStyle.fc}
  688. };
  689. QJsonObject nowOpMode {
  690. {"key", QString::fromLocal8Bit("开关机状态")},
  691. {"value", nowStyle.OpMode}
  692. };
  693. QJsonArray nowParams = {nowfs, nowfc, nowOpMode};
  694. QJsonObject *ret = new QJsonObject({
  695. {"url", obj.value("url")},
  696. {"PlatformID", obj.value("PlatformID")},
  697. {"InstanceID", obj.value("InstanceID")},
  698. {"data",QJsonValue(nowParams)}
  699. });
  700. emit SigReturnData(pSender, ret);
  701. }
  702. }
  703. }
  704. void SimulationControl::SlotGetESMParams(QWebSocket *pSender, QJsonObject obj)
  705. {
  706. int InstanceID = obj.value("InstanceID").toInt();
  707. QJsonArray *ESMInitParams;
  708. QJsonArray *ESMCtrlParams;
  709. QJsonObject *ESMPropTemp;
  710. if (true)
  711. {
  712. ESMInitParams = new QJsonArray();
  713. ESMCtrlParams = new QJsonArray();
  714. ESMPropTemp = new QJsonObject();
  715. ESMPropTemp->insert("key","fBeamAzWidth");
  716. ESMPropTemp->insert("value",2);
  717. ESMInitParams->append(*ESMPropTemp);
  718. delete ESMPropTemp;
  719. ESMPropTemp = new QJsonObject();
  720. ESMPropTemp->insert("key","fBeamElWidth");
  721. ESMPropTemp->insert("value",2);
  722. ESMInitParams->append(*ESMPropTemp);
  723. delete ESMPropTemp;
  724. ESMPropTemp = new QJsonObject();
  725. ESMPropTemp->insert("key","fTecMinFreqMhz");
  726. ESMPropTemp->insert("value",2e3);
  727. ESMInitParams->append(*ESMPropTemp);
  728. delete ESMPropTemp;
  729. ESMPropTemp = new QJsonObject();
  730. ESMPropTemp->insert("key","fTecMaxFreqMhz");
  731. ESMPropTemp->insert("value",18e3);
  732. ESMInitParams->append(*ESMPropTemp);
  733. delete ESMPropTemp;
  734. ESMPropTemp = new QJsonObject();
  735. ESMPropTemp->insert("key","fInstantPageWidMhz");
  736. ESMPropTemp->insert("value",500);
  737. ESMInitParams->append(*ESMPropTemp);
  738. delete ESMPropTemp;
  739. ESMPropTemp = new QJsonObject();
  740. ESMPropTemp->insert("key","ulChanNum");
  741. ESMPropTemp->insert("value",64);
  742. ESMInitParams->append(*ESMPropTemp);
  743. delete ESMPropTemp;
  744. ESMPropTemp = new QJsonObject();
  745. ESMPropTemp->insert("key","fTecMinPW");
  746. ESMPropTemp->insert("value",0.5);
  747. ESMInitParams->append(*ESMPropTemp);
  748. delete ESMPropTemp;
  749. ESMPropTemp = new QJsonObject();
  750. ESMPropTemp->insert("key","fTecMaxPW");
  751. ESMPropTemp->insert("value",10);
  752. ESMInitParams->append(*ESMPropTemp);
  753. delete ESMPropTemp;
  754. ESMPropTemp = new QJsonObject();
  755. ESMPropTemp->insert("key","fTecPriMean");
  756. ESMPropTemp->insert("value",40);
  757. ESMInitParams->append(*ESMPropTemp);
  758. delete ESMPropTemp;
  759. ESMPropTemp = new QJsonObject();
  760. ESMPropTemp->insert("key","ulTecTrNumMean");
  761. ESMPropTemp->insert("value",5);
  762. ESMInitParams->append(*ESMPropTemp);
  763. delete ESMPropTemp;
  764. ESMPropTemp = new QJsonObject();
  765. ESMPropTemp->insert("key","fMinSnrdB");
  766. ESMPropTemp->insert("value",0.5);
  767. ESMInitParams->append(*ESMPropTemp);
  768. delete ESMPropTemp;
  769. ESMPropTemp = new QJsonObject();
  770. ESMPropTemp->insert("key","fSysRcvLoss");
  771. ESMPropTemp->insert("value",5);
  772. ESMInitParams->append(*ESMPropTemp);
  773. delete ESMPropTemp;
  774. ESMPropTemp = new QJsonObject();
  775. ESMPropTemp->insert("key","fFreqAccuracyReq");
  776. ESMPropTemp->insert("value",100);
  777. ESMInitParams->append(*ESMPropTemp);
  778. delete ESMPropTemp;
  779. ESMPropTemp = new QJsonObject();
  780. ESMPropTemp->insert("key","uRrPowerOn");
  781. ESMPropTemp->insert("value",0);
  782. ESMCtrlParams->append(*ESMPropTemp);
  783. delete ESMPropTemp;
  784. ESMPropTemp = new QJsonObject();
  785. ESMPropTemp->insert("key","uRrWorkMode");
  786. ESMPropTemp->insert("value",0);
  787. ESMCtrlParams->append(*ESMPropTemp);
  788. delete ESMPropTemp;
  789. ESMPropTemp = new QJsonObject();
  790. ESMPropTemp->insert("key","dScanAzCentDeg");
  791. ESMPropTemp->insert("value",0);
  792. ESMCtrlParams->append(*ESMPropTemp);
  793. delete ESMPropTemp;
  794. ESMPropTemp = new QJsonObject();
  795. ESMPropTemp->insert("key","dScanAzWidthDeg");
  796. ESMPropTemp->insert("value",5);
  797. ESMCtrlParams->append(*ESMPropTemp);
  798. delete ESMPropTemp;
  799. ESMPropTemp = new QJsonObject();
  800. ESMPropTemp->insert("key","dScanElCentDeg");
  801. ESMPropTemp->insert("value",0);
  802. ESMCtrlParams->append(*ESMPropTemp);
  803. delete ESMPropTemp;
  804. ESMPropTemp = new QJsonObject();
  805. ESMPropTemp->insert("key","uLineNumPerFrame");
  806. ESMPropTemp->insert("value",20);
  807. ESMCtrlParams->append(*ESMPropTemp);
  808. delete ESMPropTemp;
  809. ESMPropTemp = new QJsonObject();
  810. ESMPropTemp->insert("key","fAntScanVel");
  811. ESMPropTemp->insert("value",1);
  812. ESMCtrlParams->append(*ESMPropTemp);
  813. delete ESMPropTemp;
  814. ESMPropTemp = new QJsonObject();
  815. ESMPropTemp->insert("key","fFreqScanVel");
  816. ESMPropTemp->insert("value",100);
  817. ESMCtrlParams->append(*ESMPropTemp);
  818. delete ESMPropTemp;
  819. ESMPropTemp = new QJsonObject();
  820. ESMPropTemp->insert("key","fTecBeginFreqMhz");
  821. ESMPropTemp->insert("value",500);
  822. ESMCtrlParams->append(*ESMPropTemp);
  823. delete ESMPropTemp;
  824. ESMPropTemp = new QJsonObject();
  825. ESMPropTemp->insert("key","fTecEndFreqMhz");
  826. ESMPropTemp->insert("value",10000);
  827. ESMCtrlParams->append(*ESMPropTemp);
  828. delete ESMPropTemp;
  829. }
  830. QJsonObject *ESMParams = new QJsonObject();
  831. ESMParams->insert("InitParams", *ESMInitParams);
  832. ESMParams->insert("CtrlParams", *ESMCtrlParams);
  833. QJsonObject *ret = new QJsonObject();
  834. ret->insert("url", obj.value("url"));
  835. ret->insert("PlatformID", obj.value("PlatformID"));
  836. ret->insert("InstanceID", InstanceID);
  837. ret->insert("data", *ESMParams);
  838. emit SigReturnData(pSender, ret);
  839. delete ESMInitParams;
  840. delete ESMCtrlParams;
  841. delete ESMParams;
  842. }