GdopHelper.cs 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using DevExpress.Charts.Native;
  2. using DevExpress.Internal.WinApi.Windows.UI.Notifications;
  3. using DevExpress.XtraPrinting;
  4. using Newtonsoft.Json;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Diagnostics;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Runtime.InteropServices;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using XdCxRhDW.App.DTO;
  14. using static DevExpress.XtraCharts.GLGraphics.Platform.EGL;
  15. using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
  16. namespace XzXdDw.App.Api.低轨GDOP误差椭圆
  17. {
  18. /// <summary>
  19. /// Gdop误差分布计算帮助类.该类调用了GdopCore.exe进程
  20. /// 每种GDOP算法提供了两个接口,这两种接口是完全等价的,一种传入双行根,一种直接传入卫星状态x、y、z等
  21. /// </summary>
  22. public static class GdopHelper
  23. {
  24. private const string GDOPDll = @"Api\低轨GDOP误差椭圆\GDOP\DLL_GDOP_Analysis.dll";
  25. /// <summary>
  26. /// 低轨双星误差椭圆
  27. /// </summary>
  28. /// <param name="main_eph">主星位置 长度6</param>
  29. /// <param name="neigh_eph">邻星位置 长度6</param>
  30. /// <param name="ref_pos">参考位置 长度3</param>
  31. /// <param name="Select_Point">定位点长度3</param>
  32. /// <param name="dto_err">时差误差(s)</param>
  33. /// <param name="dfo_err">频差误差(Hz)</param>
  34. /// <param name="eph_pos_err"></param>
  35. /// <param name="eph_vel_err"></param>
  36. /// <param name="fu"></param>
  37. /// <param name="Pe">0.5</param>
  38. /// <param name="LOP_Len"></param>
  39. /// <returns></returns>
  40. [DllImport(GDOPDll, EntryPoint = "Error_Ellipse_DTFO", CallingConvention = CallingConvention.Cdecl)]
  41. public extern static IntPtr Error_Ellipse_DTFO(double[] main_eph, double[] neigh_eph, double[] ref_pos, double[] Select_Point, double dto_err, double dfo_err,
  42. double eph_pos_err, double eph_vel_err, double fu, double Pe, ref int LOP_Len);
  43. /// <summary>
  44. /// 两星一地误差椭圆
  45. /// </summary>
  46. /// <param name="main_eph">主星位置 长度6</param>
  47. /// <param name="neigh_eph">邻星位置 长度6</param>
  48. /// <param name="cdbAnt">超短波 长度3</param>
  49. /// <param name="refStation">参考站 长度3</param>
  50. /// <param name="Select_Point">定位点 长度3</param>
  51. /// <param name="dto_err">时差误差(s)</param>
  52. /// <param name="eph_err"></param>
  53. /// <param name="Pe">0.5</param>
  54. /// <param name="LOP_Len"></param>
  55. /// <returns></returns>
  56. [DllImport(GDOPDll, EntryPoint = "Error_Ellipse_2X1D", CallingConvention = CallingConvention.Cdecl)]
  57. public extern static IntPtr Error_Ellipse_2X1D(double[] main_eph, double[] neigh_eph, double[] cdbAnt, double[] refStation, double[] Select_Point, double dto_err,
  58. double eph_err, double Pe, ref int LOP_Len);
  59. /// <summary>
  60. /// 单星误差椭圆
  61. /// </summary>
  62. /// <param name="main_eph"></param>
  63. /// <param name="neigh_eph1"></param>
  64. /// <param name="neigh_eph2"></param>
  65. /// <param name="Select_Point"></param>
  66. /// <param name="dfo_err"></param>
  67. /// <param name="eph_pos_err"></param>
  68. /// <param name="eph_vel_err"></param>
  69. /// <param name="fu"></param>
  70. /// <param name="Pe"></param>
  71. /// <param name="LOP_Len"></param>
  72. /// <returns></returns>
  73. [DllImport(GDOPDll, EntryPoint = "Error_Ellipse_2DFO", CallingConvention = CallingConvention.Cdecl)]
  74. public extern static IntPtr Error_Ellipse_2DFO(double[] main_eph, double[] neigh_eph1, double[] neigh_eph2, double[] Select_Point, double dfo_err, double eph_pos_err, double eph_vel_err, double fu, double Pe,
  75. ref int LOP_Len);
  76. [DllImport(GDOPDll, CallingConvention = CallingConvention.Cdecl)]
  77. public static extern void freeBuff(IntPtr buf);
  78. }
  79. }