Form1.cs 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Net;
  10. using System.Net.Http;
  11. using System.Net.Sockets;
  12. using System.Text;
  13. using System.Threading;
  14. using System.Threading.Tasks;
  15. using System.Windows.Forms;
  16. using XdCxRhDw.Dto;
  17. using XdCxRhDW.Core;
  18. using XdCxRhDW.Dto;
  19. using XdCxRhDW.Sender.Properties;
  20. namespace XdCxRhDW.Sender
  21. {
  22. public partial class Form1 : DevExpress.XtraEditors.XtraForm
  23. {
  24. public Form1()
  25. {
  26. InitializeComponent();
  27. }
  28. CancellationTokenSource cts1;
  29. private async void btn1_Click(object sender, EventArgs e)
  30. {
  31. layoutControlItem1.Enabled = false;
  32. layoutControlItem7.Enabled = false;
  33. if (btn1.Text == "推送")
  34. {
  35. try
  36. {
  37. cts1 = new CancellationTokenSource();
  38. btn1.Text = "停止";
  39. var addrArr = txtAddr1.Text.Trim().Replace(":", ":").Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  40. string ip = addrArr[0];
  41. int port = Convert.ToInt32(addrArr[1]);
  42. if (txtTskType.EditValue == null)
  43. {
  44. Log($"请选择定位类型");
  45. return;
  46. }
  47. string tskType = txtTskType.EditValue.ToString();
  48. using (var client = new HttpClient())
  49. {
  50. try
  51. {
  52. string url = string.Format("http://{0}:{1}/Api/Pos/", ip, port);
  53. if (tskType == "X1D1CX")//一星一地测向定位
  54. {
  55. var lines = File.ReadAllLines("Simulation_Data2023.dat");
  56. int idx = 1;
  57. url += "PosX1D1Async";
  58. foreach (var line in lines)
  59. {
  60. if (cts1.IsCancellationRequested)
  61. break;
  62. if (string.IsNullOrWhiteSpace(line)) continue;
  63. var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  64. X1D1PosDto dto = new X1D1PosDto()
  65. {
  66. SigTime = DateTime.Now,
  67. MainCode = 23467,
  68. XdDto = Convert.ToDouble(items[1]) * 1e6,
  69. MainYbDto = Convert.ToDouble(items[2]) * 1e6,
  70. CxRes = Convert.ToDouble(items[4]),
  71. MainX = Convert.ToDouble(items[7]),
  72. MainY = Convert.ToDouble(items[8]),
  73. MainZ = Convert.ToDouble(items[9]),
  74. SatTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lon"),
  75. SatTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lat"),
  76. CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lon"),
  77. CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lat"),
  78. CxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "侧向站", "Lon"),
  79. CxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "侧向站", "Lat"),
  80. RefLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lon"),
  81. RefLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lat"),
  82. };
  83. //var content = new StringContent(JsonConvert.SerializeObject(dto), System.Text.Encoding.UTF8, "application/json");
  84. //var response = await client.PostAsync(url, content);
  85. var result =await HttpHelper.PostRequestAsync<PosResDto>(url, dto);
  86. if (result.code != 200)
  87. {
  88. Log($"{result.msg}");
  89. return;
  90. }
  91. Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
  92. }
  93. }
  94. if (tskType == "X2D1")//两星一地定位
  95. {
  96. //url += "PosX2D1Async";
  97. //var res = X2D1();
  98. //var content = new StringContent(JsonConvert.SerializeObject(res), System.Text.Encoding.UTF8, "application/json");
  99. //var response = await client.PostAsync(url, content);
  100. //Log($"已向[{txtAddr1.Text}]发送两星一地定位仿真结果");
  101. var lines = File.ReadAllLines("Simulation_Data2023.dat");
  102. int idx = 1;
  103. url += "PosX2D1Async";
  104. foreach (var line in lines)
  105. {
  106. if (cts1.IsCancellationRequested)
  107. break;
  108. if (string.IsNullOrWhiteSpace(line)) continue;
  109. var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  110. X2D1PosDto X2D1PosDto = new X2D1PosDto();
  111. X2D1PosDto.SigTime = DateTime.Now;
  112. X2D1PosDto.MainCode = 23467;
  113. X2D1PosDto.AdjaCode = 39206;
  114. X2D1PosDto.SxDto = Convert.ToDouble(items[0]) * 1e6;
  115. X2D1PosDto.XdDto = Convert.ToDouble(items[1]) * 1e6;
  116. X2D1PosDto.MainYbDto = Convert.ToDouble(items[2]) * 1e6;
  117. X2D1PosDto.AdjaYbDto = Convert.ToDouble(items[3]) * 1e6;
  118. X2D1PosDto.MainX = Convert.ToDouble(items[7]);
  119. X2D1PosDto.MainY = Convert.ToDouble(items[8]);
  120. X2D1PosDto.MainZ = Convert.ToDouble(items[9]);
  121. X2D1PosDto.AdjaX = Convert.ToDouble(items[10]);
  122. X2D1PosDto.AdjaY = Convert.ToDouble(items[11]);
  123. X2D1PosDto.AdjaZ = Convert.ToDouble(items[12]);
  124. X2D1PosDto.SatTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lon");
  125. X2D1PosDto.SatTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lat");
  126. X2D1PosDto.CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lon");
  127. X2D1PosDto.CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lat");
  128. X2D1PosDto.RefLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lon");
  129. X2D1PosDto.RefLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lat");
  130. //var content = new StringContent(JsonConvert.SerializeObject(X2D1PosDto), System.Text.Encoding.UTF8, "application/json");
  131. //var response = await client.PostAsync(url, content);
  132. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, X2D1PosDto);
  133. if (result.code != 200)
  134. {
  135. Log($"{result.msg}");
  136. return;
  137. }
  138. Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
  139. }
  140. }
  141. if (tskType == "X2D1NoPar")//两星一地无参定位
  142. {
  143. url += "PosX2D1NoParAsync";
  144. var res = X2D1NoPar();
  145. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  146. if (result.code != 200)
  147. {
  148. Log($"{result.msg}");
  149. return;
  150. }
  151. Log($"已向[{txtAddr1.Text}]发送两星一地无参定位仿真结果");
  152. }
  153. if (tskType == "RH")//融合定位
  154. {
  155. var lines = File.ReadAllLines("Simulation_Data2023.dat");
  156. int idx = 1;
  157. url += "PosRHAsync";
  158. foreach (var line in lines)
  159. {
  160. if (cts1.IsCancellationRequested)
  161. break;
  162. if (string.IsNullOrWhiteSpace(line)) continue;
  163. var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  164. RHPosDto RHPosDto = new RHPosDto();
  165. RHPosDto.SigTime = DateTime.Now;
  166. RHPosDto.MainCode = 23467;
  167. RHPosDto.AdjaCode = 39206;
  168. RHPosDto.SxDto = Convert.ToDouble(items[0]) * 1e6;
  169. RHPosDto.XdDto = Convert.ToDouble(items[1]) * 1e6;
  170. RHPosDto.MainYbDto = Convert.ToDouble(items[2]) * 1e6;
  171. RHPosDto.AdjaYbDto = Convert.ToDouble(items[3]) * 1e6;
  172. RHPosDto.CxRes = Convert.ToDouble(items[4]);
  173. RHPosDto.MainX = Convert.ToDouble(items[7]);
  174. RHPosDto.MainY = Convert.ToDouble(items[8]);
  175. RHPosDto.MainZ = Convert.ToDouble(items[9]);
  176. RHPosDto.AdjaX = Convert.ToDouble(items[10]);
  177. RHPosDto.AdjaY = Convert.ToDouble(items[11]);
  178. RHPosDto.AdjaZ = Convert.ToDouble(items[12]);
  179. RHPosDto.SatTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lon");
  180. RHPosDto.SatTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lat");
  181. RHPosDto.CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lon");
  182. RHPosDto.CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lat");
  183. RHPosDto.CxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "侧向站", "Lon");
  184. RHPosDto.CxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "侧向站", "Lat");
  185. RHPosDto.RefLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lon");
  186. RHPosDto.RefLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lat");
  187. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, RHPosDto);
  188. if (result.code != 200)
  189. {
  190. Log($"{result.msg}");
  191. return;
  192. }
  193. Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
  194. }
  195. }
  196. if (tskType == "X3TwoDto")//三星双时差定位
  197. {
  198. url += "PosX3TwoDtoAsync";
  199. var res = X3TwoDto();
  200. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  201. if (result.code != 200)
  202. {
  203. Log($"{result.msg}");
  204. return;
  205. }
  206. Log($"已向[{txtAddr1.Text}]发送三星双时差定位仿真结果");
  207. }
  208. if (tskType == "X3TwoDtoNoPar")//三星双时差无参定位
  209. {
  210. url += "PosX3TwoDtoNoParAsync";
  211. var res = X3TwoDtoNoPar();
  212. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  213. if (result.code != 200)
  214. {
  215. Log($"{result.msg}");
  216. return;
  217. }
  218. Log($"已向[{txtAddr1.Text}]发送三星双时差定位仿真结果");
  219. }
  220. if (tskType == "X3TwoDfo")//三星双频差定位
  221. {
  222. url += "PosX3TwoDfoAsync";
  223. var res = X3TwoDfo();
  224. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  225. if (result.code != 200)
  226. {
  227. Log($"{result.msg}");
  228. return;
  229. }
  230. Log($"已向[{txtAddr1.Text}]发送三星双频差定位仿真结果");
  231. }
  232. if (tskType == "X2Dfo")//双星时频差定位
  233. {
  234. url += "PosX2DtoDfoAsync";
  235. var res = X2Dfo();
  236. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  237. if (result.code != 200)
  238. {
  239. Log($"{result.msg}");
  240. return;
  241. }
  242. Log($"已向[{txtAddr1.Text}]发送双星时频差定位仿真结果");
  243. }
  244. if (tskType == "X1D1CXNoXL")//一星一地测向定位无星厉
  245. {
  246. var lines = File.ReadAllLines("Simulation_Data2023.dat");
  247. int idx = 1;
  248. url += "PosX1D1NoXlAsync";
  249. foreach (var line in lines)
  250. {
  251. if (cts1.IsCancellationRequested)
  252. break;
  253. if (string.IsNullOrWhiteSpace(line)) continue;
  254. var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  255. X1D1NoXlPosDto dto = new X1D1NoXlPosDto()
  256. {
  257. SigTime = DateTime.Now,
  258. MainCode = 23467,
  259. XdDto = Convert.ToDouble(items[1]) * 1e6,
  260. MainYbDto = Convert.ToDouble(items[2]) * 1e6,
  261. CxRes = Convert.ToDouble(items[4]),
  262. SatTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lon"),
  263. SatTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lat"),
  264. CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lon"),
  265. CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lat"),
  266. CxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "侧向站", "Lon"),
  267. CxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "侧向站", "Lat"),
  268. RefLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lon"),
  269. RefLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lat"),
  270. };
  271. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, dto);
  272. if (result.code != 200)
  273. {
  274. Log($"{result.msg}");
  275. return;
  276. }
  277. Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
  278. }
  279. }
  280. if (tskType == "X2D1NoXL")//两星一地定位无星厉
  281. {
  282. var lines = File.ReadAllLines("Simulation_Data2023.dat");
  283. int idx = 1;
  284. url += "PosX2D1NoXlAsync";
  285. foreach (var line in lines)
  286. {
  287. if (cts1.IsCancellationRequested)
  288. break;
  289. if (string.IsNullOrWhiteSpace(line)) continue;
  290. var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  291. X2D1NoXlPosDto X2D1NoXlPosDto = new X2D1NoXlPosDto();
  292. X2D1NoXlPosDto.SigTime = DateTime.Now;
  293. X2D1NoXlPosDto.MainCode = 23467;
  294. X2D1NoXlPosDto.AdjaCode = 39206;
  295. X2D1NoXlPosDto.SxDto = Convert.ToDouble(items[0]) * 1e6;
  296. X2D1NoXlPosDto.XdDto = Convert.ToDouble(items[1]) * 1e6;
  297. X2D1NoXlPosDto.MainYbDto = Convert.ToDouble(items[2]) * 1e6;
  298. X2D1NoXlPosDto.AdjaYbDto = Convert.ToDouble(items[3]) * 1e6;
  299. X2D1NoXlPosDto.SatTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lon");
  300. X2D1NoXlPosDto.SatTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lat");
  301. X2D1NoXlPosDto.CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lon");
  302. X2D1NoXlPosDto.CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lat");
  303. X2D1NoXlPosDto.RefLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lon");
  304. X2D1NoXlPosDto.RefLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lat");
  305. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, X2D1NoXlPosDto);
  306. if (result.code != 200)
  307. {
  308. Log($"{result.msg}");
  309. return;
  310. }
  311. Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
  312. Thread.Sleep(1000);
  313. }
  314. }
  315. if (tskType == "X2D1NoParNoXL")//两星一地无参定位无星厉
  316. {
  317. url += "PosX2D1NoXlNoParAsync";
  318. var res = X2D1NoParNoXL();
  319. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  320. if (result.code != 200)
  321. {
  322. Log($"{result.msg}");
  323. return;
  324. }
  325. Log($"已向[{txtAddr1.Text}]发送两星一地无参定位仿真结果");
  326. }
  327. if (tskType == "RHNoXL")//融合定位无星厉
  328. {
  329. var lines = File.ReadAllLines("Simulation_Data2023.dat");
  330. int idx = 1;
  331. url += "PosRhNoXlAsync";
  332. foreach (var line in lines)
  333. {
  334. if (cts1.IsCancellationRequested)
  335. break;
  336. if (string.IsNullOrWhiteSpace(line)) continue;
  337. var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  338. RHNoXlPosDto RHNoXlPosDto = new RHNoXlPosDto();
  339. RHNoXlPosDto.SigTime = DateTime.Now;
  340. RHNoXlPosDto.MainCode = 23467;
  341. RHNoXlPosDto.AdjaCode = 39206;
  342. RHNoXlPosDto.SxDto = Convert.ToDouble(items[0]) * 1e6;
  343. RHNoXlPosDto.XdDto = Convert.ToDouble(items[1]) * 1e6;
  344. RHNoXlPosDto.MainYbDto = Convert.ToDouble(items[2]) * 1e6;
  345. RHNoXlPosDto.AdjaYbDto = Convert.ToDouble(items[3]) * 1e6;
  346. RHNoXlPosDto.CxRes = Convert.ToDouble(items[4]);
  347. RHNoXlPosDto.SatTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lon");
  348. RHNoXlPosDto.SatTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lat");
  349. RHNoXlPosDto.CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lon");
  350. RHNoXlPosDto.CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lat");
  351. RHNoXlPosDto.CxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "侧向站", "Lon");
  352. RHNoXlPosDto.CxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "侧向站", "Lat");
  353. RHNoXlPosDto.RefLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lon");
  354. RHNoXlPosDto.RefLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lat");
  355. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, RHNoXlPosDto);
  356. if (result.code != 200)
  357. {
  358. Log($"{result.msg}");
  359. return;
  360. }
  361. Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
  362. }
  363. }
  364. if (tskType == "X3TwoDtoNoXL")//三星双时差定位无星厉
  365. {
  366. url += "PosX3TwoDtoNoXlAsync";
  367. var res = X3TwoDtoNoXL();
  368. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  369. if (result.code != 200)
  370. {
  371. Log($"{result.msg}");
  372. return;
  373. }
  374. Log($"已向[{txtAddr1.Text}]发送三星双时差定位仿真结果");
  375. }
  376. if (tskType == "X3TwoDtoNoParNoXL")//三星双时差无参定位无星厉
  377. {
  378. url += "PosX3TwoDtoNoXlNoParAsync";
  379. var res = X3TwoDtoNoParNoXL();
  380. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  381. if (result.code != 200)
  382. {
  383. Log($"{result.msg}");
  384. return;
  385. }
  386. Log($"已向[{txtAddr1.Text}]发送三星双时差定位仿真结果");
  387. }
  388. if (tskType == "X3TwoDfoNoXL")//三星双频差定位无星厉
  389. {
  390. url += "PosX3TwoDfoNoXlAsync";
  391. var res = X3TwoDfoNoXL();
  392. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  393. if (result.code != 200)
  394. {
  395. Log($"{result.msg}");
  396. return;
  397. }
  398. Log($"已向[{txtAddr1.Text}]发送三星双频差定位仿真结果");
  399. }
  400. if (tskType == "X2DfoNoXL")//双星时频差定位无星厉
  401. {
  402. url += "PosX2DtoDfoNoXlAsync";
  403. var res = X2DfoNoXL();
  404. var result = await HttpHelper.PostRequestAsync<PosResDto>(url, res);
  405. if (result.code != 200)
  406. {
  407. Log($"{result.msg}");
  408. return;
  409. }
  410. Log($"已向[{txtAddr1.Text}]发送双星时频差定位仿真结果");
  411. }
  412. }
  413. catch (Exception ex)
  414. {
  415. Log($"向[{txtAddr1.Text}]发送结果失败.{ex.Message}");
  416. }
  417. }
  418. }
  419. catch (Exception ex)
  420. {
  421. Log(ex);
  422. }
  423. finally
  424. {
  425. btn1.Text = "推送";
  426. layoutControlItem1.Enabled = true;
  427. layoutControlItem7.Enabled = true;
  428. }
  429. }
  430. else
  431. {
  432. cts1?.Cancel();
  433. }
  434. }
  435. /// <summary>
  436. /// 两星一地定位
  437. /// </summary>
  438. /// <returns></returns>
  439. private X2D1PosDto X2D1()
  440. {
  441. X2D1PosDto X2D1PosDto = new X2D1PosDto();
  442. X2D1PosDto.SigTime = DateTime.Now;
  443. X2D1PosDto.MainCode = 23467;
  444. X2D1PosDto.AdjaCode = 39206;
  445. X2D1PosDto.SxDto = 5507.5653;
  446. X2D1PosDto.XdDto = 240292.558;
  447. X2D1PosDto.MainYbDto = 0;
  448. X2D1PosDto.AdjaYbDto = 0;
  449. X2D1PosDto.MainX = 0;
  450. X2D1PosDto.MainY = 0;
  451. X2D1PosDto.MainZ = 0;
  452. X2D1PosDto.AdjaX = 0;
  453. X2D1PosDto.AdjaY = 0;
  454. X2D1PosDto.AdjaZ = 0;
  455. X2D1PosDto.SatTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lon");
  456. X2D1PosDto.SatTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "卫星接收天线", "Lat");
  457. X2D1PosDto.CdbTxLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lon");
  458. X2D1PosDto.CdbTxLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "超短波接收天线", "Lat");
  459. X2D1PosDto.RefLon = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lon");
  460. X2D1PosDto.RefLat = IniFiles.ReadValue<double>("Station_Data2023.ini", "参考站", "Lat");
  461. return X2D1PosDto;
  462. }
  463. /// <summary>
  464. /// 两星一地定位无参
  465. /// </summary>
  466. private X2D1NoParPosDto X2D1NoPar()
  467. {
  468. X2D1NoParPosDto X2D1PosDto = new X2D1NoParPosDto();
  469. X2D1PosDto.SigTime = DateTime.Now;
  470. X2D1PosDto.MainCode = 23467;
  471. X2D1PosDto.AdjaCode = 39206;
  472. X2D1PosDto.SxDto = -0.002198485309353 * 1e6;
  473. X2D1PosDto.XdDto = 0.245961726007262 * 1e6;
  474. X2D1PosDto.MainX = -38209016;
  475. X2D1PosDto.MainY = 17858458;
  476. X2D1PosDto.MainZ = 13250;
  477. X2D1PosDto.AdjaX = 4750323;
  478. X2D1PosDto.AdjaY = 41902879;
  479. X2D1PosDto.AdjaZ = 50515;
  480. X2D1PosDto.SatTxLon = 118.8833;
  481. X2D1PosDto.SatTxLat = 32.0667;
  482. X2D1PosDto.CdbTxLon = 109.4082;
  483. X2D1PosDto.CdbTxLat = 18.3878;
  484. return X2D1PosDto;
  485. }
  486. /// <summary>
  487. /// 三星双时差定位
  488. /// </summary>
  489. private X3TwoDtoPosDto X3TwoDto()
  490. {
  491. X3TwoDtoPosDto X3TwoDtoPosDto = new X3TwoDtoPosDto();
  492. X3TwoDtoPosDto.SigTime = DateTime.Now;
  493. X3TwoDtoPosDto.MainCode = 23467;
  494. X3TwoDtoPosDto.Adja1Code = 39206;
  495. X3TwoDtoPosDto.Adja2Code = 40892;
  496. X3TwoDtoPosDto.Dto1 = -0.0037683828 * 1e6;
  497. X3TwoDtoPosDto.Dto2 = 0.00411476 * 1e6;
  498. X3TwoDtoPosDto.YbMainDto = 0.253339246 * 1e6;
  499. X3TwoDtoPosDto.YbAdja1Dto = 0.254082015 * 1e6;
  500. X3TwoDtoPosDto.YbAdja2Dto = 0.247747625 * 1e6;
  501. X3TwoDtoPosDto.MainX = -38209016;
  502. X3TwoDtoPosDto.MainY = 17858458;
  503. X3TwoDtoPosDto.MainZ = 13250;
  504. X3TwoDtoPosDto.Adja1X = 4750323;
  505. X3TwoDtoPosDto.Adja1Y = 41902879;
  506. X3TwoDtoPosDto.Adja1Z = 50515;
  507. X3TwoDtoPosDto.Adja2X = -30932433;
  508. X3TwoDtoPosDto.Adja2Y = 28638701;
  509. X3TwoDtoPosDto.Adja2Z = -582065;
  510. X3TwoDtoPosDto.SatTxLon = 118.8833;
  511. X3TwoDtoPosDto.SatTxLat = 32.0667;
  512. X3TwoDtoPosDto.RefLon = 121.538;
  513. X3TwoDtoPosDto.RefLat = 30.8385;
  514. return X3TwoDtoPosDto;
  515. }
  516. /// <summary>
  517. /// 三星双时差无参定位
  518. /// </summary>
  519. private X3TwoDtoNoParPosDto X3TwoDtoNoPar()
  520. {
  521. X3TwoDtoNoParPosDto X3TwoDtoNoParPosDto = new X3TwoDtoNoParPosDto();
  522. X3TwoDtoNoParPosDto.SigTime = DateTime.Now;
  523. X3TwoDtoNoParPosDto.MainCode = 23467;
  524. X3TwoDtoNoParPosDto.Adja1Code = 39206;
  525. X3TwoDtoNoParPosDto.Adja2Code = 40892;
  526. X3TwoDtoNoParPosDto.Dto1 = -0.008361002956792 * 1e6;
  527. X3TwoDtoNoParPosDto.Dto2 = 0.004191941221694 * 1e6;
  528. X3TwoDtoNoParPosDto.MainX = -38214804;
  529. X3TwoDtoNoParPosDto.MainY = 17780164;
  530. X3TwoDtoNoParPosDto.MainZ = -6857;
  531. X3TwoDtoNoParPosDto.Adja1X = 4824458;
  532. X3TwoDtoNoParPosDto.Adja1Y = 41896265;
  533. X3TwoDtoNoParPosDto.Adja1Z = -55899;
  534. X3TwoDtoNoParPosDto.Adja2X = -27105105;
  535. X3TwoDtoNoParPosDto.Adja2Y = 32302912;
  536. X3TwoDtoNoParPosDto.Adja2Z = 11952;
  537. X3TwoDtoNoParPosDto.SatTxLon = 121.3555;
  538. X3TwoDtoNoParPosDto.SatTxLat = 31.3667;
  539. return X3TwoDtoNoParPosDto;
  540. }
  541. /// <summary>
  542. /// 三星双频差定位
  543. /// </summary>
  544. private X3TwoDfoPosDto X3TwoDfo()
  545. {
  546. X3TwoDfoPosDto X3TwoDfoPosDto = new X3TwoDfoPosDto();
  547. X3TwoDfoPosDto.SigTime = DateTime.Now;
  548. X3TwoDfoPosDto.MainCode = 23467;
  549. X3TwoDfoPosDto.Adja1Code = 39206;
  550. X3TwoDfoPosDto.Adja2Code = 40892;
  551. X3TwoDfoPosDto.Dfo1 = -17.601977254734404;
  552. X3TwoDfoPosDto.Dfo2 = -36.885840020369514;
  553. X3TwoDfoPosDto.YbMainDfo = 0;
  554. X3TwoDfoPosDto.YbAdja1Dfo = 17.453698229247941;
  555. X3TwoDfoPosDto.YbAdja2Dfo = 37.022577554138941;
  556. X3TwoDfoPosDto.TarFreqUp = 3808 * 1e6 + 2225 * 1e6;
  557. X3TwoDfoPosDto.TarFreqDown = 3808 * 1e6;
  558. X3TwoDfoPosDto.RefFreqUp = 3796 * 1e6 + 2225 * 1e6;
  559. X3TwoDfoPosDto.RefFreqDown = 3796 * 1e6;
  560. X3TwoDfoPosDto.MainX = -18149981.873274;
  561. X3TwoDfoPosDto.MainY = 38039767.675679;
  562. X3TwoDfoPosDto.MainZ = -5662.335149;
  563. X3TwoDfoPosDto.MainVx = -2.006064;
  564. X3TwoDfoPosDto.MainVy = -1.4693;
  565. X3TwoDfoPosDto.MainVz = 1.62569;
  566. X3TwoDfoPosDto.Adja1X = -14770224.082665;
  567. X3TwoDfoPosDto.Adja1Y = 39479299.786862;
  568. X3TwoDfoPosDto.Adja1Z = -53188.063002;
  569. X3TwoDfoPosDto.Adja1Vx = -1.764989;
  570. X3TwoDfoPosDto.Adja1Vy = -0.528101;
  571. X3TwoDfoPosDto.Adja1Vz = 1.808949;
  572. X3TwoDfoPosDto.Adja2X = -33231255.13;
  573. X3TwoDfoPosDto.Adja2Y = 25948042.76;
  574. X3TwoDfoPosDto.Adja2Z = 27091.80;
  575. X3TwoDfoPosDto.Adja2Vx = -0.607289;
  576. X3TwoDfoPosDto.Adja2Vy = 0.089864;
  577. X3TwoDfoPosDto.Adja2Vz = -0.069086;
  578. X3TwoDfoPosDto.SatTxLon = 116.254567;
  579. X3TwoDfoPosDto.SatTxLat = 39.65955;
  580. X3TwoDfoPosDto.RefLon = 106.698;
  581. X3TwoDfoPosDto.RefLat = 26.567;
  582. return X3TwoDfoPosDto;
  583. }
  584. /// <summary>
  585. /// 双星时频差定位
  586. /// </summary>
  587. private X2DtoDfoPosDto X2Dfo()
  588. {
  589. X2DtoDfoPosDto X2DtoDfoPosDto = new X2DtoDfoPosDto();
  590. X2DtoDfoPosDto.SigTime = DateTime.Now;
  591. X2DtoDfoPosDto.MainCode = 23467;
  592. X2DtoDfoPosDto.AdjaCode = 39206;
  593. X2DtoDfoPosDto.Dto = -3.587980198938979e-06 * 1e6;
  594. X2DtoDfoPosDto.Dfo = -17.601977254734404;
  595. X2DtoDfoPosDto.YbMainDto = 0.26 * 1e6;
  596. X2DtoDfoPosDto.YbAdjaDto = 0.25993647195 * 1e6;
  597. X2DtoDfoPosDto.YbMainDfo = 0;
  598. X2DtoDfoPosDto.YbAdjaDfo = 17.453698229247941;
  599. X2DtoDfoPosDto.TarFreqUp = 3808 * 1e6 + 2225 * 1e6;
  600. X2DtoDfoPosDto.TarFreqDown = 3808 * 1e6;
  601. X2DtoDfoPosDto.RefFreqUp = 3796 * 1e6 + 2225 * 1e6;
  602. X2DtoDfoPosDto.RefFreqDown = 3796 * 1e6;
  603. X2DtoDfoPosDto.MainX = -18149981.873274;
  604. X2DtoDfoPosDto.MainY = 38039767.675679;
  605. X2DtoDfoPosDto.MainZ = -5662.335149;
  606. X2DtoDfoPosDto.MainVx = -2.006064;
  607. X2DtoDfoPosDto.MainVy = -1.4693;
  608. X2DtoDfoPosDto.MainVz = 1.62569;
  609. X2DtoDfoPosDto.AdjaX = -14770224.082665;
  610. X2DtoDfoPosDto.AdjaY = 39479299.786862;
  611. X2DtoDfoPosDto.AdjaZ = -53188.063002;
  612. X2DtoDfoPosDto.AdjaVx = -1.764989;
  613. X2DtoDfoPosDto.AdjaVy = -0.528101;
  614. X2DtoDfoPosDto.AdjaVz = 1.808949;
  615. X2DtoDfoPosDto.SatTxLon = 116.254567;
  616. X2DtoDfoPosDto.SatTxLat = 39.65955;
  617. X2DtoDfoPosDto.RefLon = 106.698;
  618. X2DtoDfoPosDto.RefLat = 26.567;
  619. return X2DtoDfoPosDto;
  620. }
  621. /// <summary>
  622. /// 两星一地定位无参无星厉
  623. /// </summary>
  624. private X2D1NoXlNoParlPosDto X2D1NoParNoXL()
  625. {
  626. X2D1NoXlNoParlPosDto X2D1NoXlNoParlPosDto = new X2D1NoXlNoParlPosDto();
  627. X2D1NoXlNoParlPosDto.SigTime = DateTime.Now;
  628. X2D1NoXlNoParlPosDto.MainCode = 23467;
  629. X2D1NoXlNoParlPosDto.AdjaCode = 39206;
  630. X2D1NoXlNoParlPosDto.SxDto = -0.002198485309353 * 1e6;
  631. X2D1NoXlNoParlPosDto.XdDto = 0.245961726007262 * 1e6;
  632. X2D1NoXlNoParlPosDto.SatTxLon = 118.8833;
  633. X2D1NoXlNoParlPosDto.SatTxLat = 32.0667;
  634. X2D1NoXlNoParlPosDto.CdbTxLon = 109.4082;
  635. X2D1NoXlNoParlPosDto.CdbTxLat = 18.3878;
  636. return X2D1NoXlNoParlPosDto;
  637. }
  638. /// <summary>
  639. /// 三星双时差定位无星厉
  640. /// </summary>
  641. private X3TwoDtoNoXlPosDto X3TwoDtoNoXL()
  642. {
  643. X3TwoDtoNoXlPosDto X3TwoDtoNoXlPosDto = new X3TwoDtoNoXlPosDto();
  644. X3TwoDtoNoXlPosDto.SigTime = DateTime.Now;
  645. X3TwoDtoNoXlPosDto.MainCode = 23467;
  646. X3TwoDtoNoXlPosDto.Adja1Code = 39206;
  647. X3TwoDtoNoXlPosDto.Adja2Code = 40892;
  648. X3TwoDtoNoXlPosDto.Dto1 = -0.0037683828 * 1e6;
  649. X3TwoDtoNoXlPosDto.Dto2 = 0.00411476 * 1e6;
  650. X3TwoDtoNoXlPosDto.YbMainDto = 0.253339246 * 1e6;
  651. X3TwoDtoNoXlPosDto.YbAdja1Dto = 0.254082015 * 1e6;
  652. X3TwoDtoNoXlPosDto.YbAdja2Dto = 0.247747625 * 1e6;
  653. X3TwoDtoNoXlPosDto.SatTxLon = 118.8833;
  654. X3TwoDtoNoXlPosDto.SatTxLat = 32.0667;
  655. X3TwoDtoNoXlPosDto.RefLon = 121.538;
  656. X3TwoDtoNoXlPosDto.RefLat = 30.8385;
  657. return X3TwoDtoNoXlPosDto;
  658. }
  659. /// <summary>
  660. /// 三星双时差无参定位无星厉
  661. /// </summary>
  662. private X3TwoDtoNoXlNoParPosDto X3TwoDtoNoParNoXL()
  663. {
  664. X3TwoDtoNoXlNoParPosDto X3TwoDtoNoParPosDto = new X3TwoDtoNoXlNoParPosDto();
  665. X3TwoDtoNoParPosDto.SigTime = DateTime.Now;
  666. X3TwoDtoNoParPosDto.MainCode = 23467;
  667. X3TwoDtoNoParPosDto.Adja1Code = 39206;
  668. X3TwoDtoNoParPosDto.Adja2Code = 40892;
  669. X3TwoDtoNoParPosDto.Dto1 = -0.008361002956792 * 1e6;
  670. X3TwoDtoNoParPosDto.Dto2 = 0.004191941221694 * 1e6;
  671. X3TwoDtoNoParPosDto.SatTxLon = 121.3555;
  672. X3TwoDtoNoParPosDto.SatTxLat = 31.3667;
  673. return X3TwoDtoNoParPosDto;
  674. }
  675. /// <summary>
  676. /// 三星双频差定位无星厉
  677. /// </summary>
  678. private X3TwoDfoNoXlPosDto X3TwoDfoNoXL()
  679. {
  680. X3TwoDfoNoXlPosDto X3TwoDfoNoXlPosDto = new X3TwoDfoNoXlPosDto();
  681. X3TwoDfoNoXlPosDto.SigTime = DateTime.Now;
  682. X3TwoDfoNoXlPosDto.MainCode = 23467;
  683. X3TwoDfoNoXlPosDto.Adja1Code = 39206;
  684. X3TwoDfoNoXlPosDto.Adja2Code = 40892;
  685. X3TwoDfoNoXlPosDto.Dfo1 = -17.601977254734404;
  686. X3TwoDfoNoXlPosDto.Dfo2 = -36.885840020369514;
  687. X3TwoDfoNoXlPosDto.YbMainDfo = 0;
  688. X3TwoDfoNoXlPosDto.YbAdja1Dfo = 17.453698229247941;
  689. X3TwoDfoNoXlPosDto.YbAdja2Dfo = 37.022577554138941;
  690. X3TwoDfoNoXlPosDto.TarFreqUp = 3808 * 1e6 + 2225 * 1e6;
  691. X3TwoDfoNoXlPosDto.TarFreqDown = 3808 * 1e6;
  692. X3TwoDfoNoXlPosDto.RefFreqUp = 3796 * 1e6 + 2225 * 1e6;
  693. X3TwoDfoNoXlPosDto.RefFreqDown = 3796 * 1e6;
  694. X3TwoDfoNoXlPosDto.SatTxLon = 116.254567;
  695. X3TwoDfoNoXlPosDto.SatTxLat = 39.65955;
  696. X3TwoDfoNoXlPosDto.RefLon = 106.698;
  697. X3TwoDfoNoXlPosDto.RefLat = 26.567;
  698. return X3TwoDfoNoXlPosDto;
  699. }
  700. /// <summary>
  701. /// 双星时频差定位无星厉
  702. /// </summary>
  703. private X2DtoDfoNoXlPosDto X2DfoNoXL()
  704. {
  705. X2DtoDfoNoXlPosDto X2DtoDfoNoXlPosDto = new X2DtoDfoNoXlPosDto();
  706. X2DtoDfoNoXlPosDto.SigTime = DateTime.Now;
  707. X2DtoDfoNoXlPosDto.MainCode = 23467;
  708. X2DtoDfoNoXlPosDto.AdjaCode = 39206;
  709. X2DtoDfoNoXlPosDto.Dto = -3.587980198938979e-06 * 1e6;
  710. X2DtoDfoNoXlPosDto.Dfo = -17.601977254734404;
  711. X2DtoDfoNoXlPosDto.YbMainDto = 0.26 * 1e6;
  712. X2DtoDfoNoXlPosDto.YbAdjaDto = 0.25993647195 * 1e6;
  713. X2DtoDfoNoXlPosDto.YbMainDfo = 0;
  714. X2DtoDfoNoXlPosDto.YbAdjaDfo = 17.453698229247941;
  715. X2DtoDfoNoXlPosDto.TarFreqUp = 3808 * 1e6 + 2225 * 1e6;
  716. X2DtoDfoNoXlPosDto.TarFreqDown = 3808 * 1e6;
  717. X2DtoDfoNoXlPosDto.RefFreqUp = 3796 * 1e6 + 2225 * 1e6;
  718. X2DtoDfoNoXlPosDto.RefFreqDown = 3796 * 1e6;
  719. X2DtoDfoNoXlPosDto.SatTxLon = 116.254567;
  720. X2DtoDfoNoXlPosDto.SatTxLat = 39.65955;
  721. X2DtoDfoNoXlPosDto.RefLon = 106.698;
  722. X2DtoDfoNoXlPosDto.RefLat = 26.567;
  723. return X2DtoDfoNoXlPosDto;
  724. }
  725. private void Log(string msg)
  726. {
  727. try
  728. {
  729. if (this.InvokeRequired)
  730. {
  731. this.Invoke(new Action(() =>
  732. {
  733. if (listBoxControl1.ItemCount > 5000)
  734. listBoxControl1.Items.Clear();
  735. listBoxControl1.Items.Insert(0, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}--{msg}");
  736. listBoxControl1.SelectedIndex = 0;
  737. }));
  738. }
  739. else
  740. {
  741. if (listBoxControl1.ItemCount > 5000)
  742. listBoxControl1.Items.Clear();
  743. listBoxControl1.Items.Insert(0, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}--{msg}");
  744. listBoxControl1.SelectedIndex = 0;
  745. }
  746. }
  747. catch
  748. { }
  749. }
  750. private void Log(Exception ex)
  751. {
  752. try
  753. {
  754. if (this.InvokeRequired)
  755. {
  756. this.Invoke(new Action(() =>
  757. {
  758. if (listBoxControl1.ItemCount > 5000)
  759. listBoxControl1.Items.Clear();
  760. listBoxControl1.Items.Insert(0, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}--{ex.Message}");
  761. listBoxControl1.SelectedIndex = 0;
  762. }));
  763. }
  764. else
  765. {
  766. if (listBoxControl1.ItemCount > 5000)
  767. listBoxControl1.Items.Clear();
  768. listBoxControl1.Items.Insert(0, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}--{ex.Message}");
  769. listBoxControl1.SelectedIndex = 0;
  770. }
  771. }
  772. catch
  773. { }
  774. }
  775. private void listBoxControl1_MouseClick(object sender, MouseEventArgs e)
  776. {
  777. if (e.Button == MouseButtons.Right)
  778. {
  779. popupMenu1.ShowPopup(MousePosition);
  780. }
  781. }
  782. private void btnClear_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  783. {
  784. listBoxControl1.Items.Clear();
  785. }
  786. private void btnCopyAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  787. {
  788. StringBuilder sb = new StringBuilder();
  789. foreach (var item in listBoxControl1.Items)
  790. {
  791. sb.AppendLine(item.ToString());
  792. }
  793. var data = sb.ToString();
  794. if (string.IsNullOrWhiteSpace(data)) return;
  795. Clipboard.SetText(sb.ToString());
  796. }
  797. }
  798. }