using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace XdCxRhDW.Api { public static class GDOPApi { private const string GDOPDll = @"AddIns\GDOP误差椭圆\GDOP_Draw_11.dll"; private const string ErrellipDll = @"AddIns\GDOP误差椭圆\DLL_GDOP_Analysis0415"; /// /// 获取三星双时差GDOP 带参考 /// mainLines :主星历双行 /// adaj1Lines :邻星历双行 /// adaj2Lines :邻星历双行 /// captime:信号时间 /// refPos: 参考经度,纬度 /// dtousErr: 时差误差 /// ephLocErr: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop3SatRef", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop3SatRef(string mainLines, string adajLines, string adaj2Lines, Int64 captime, double[] refPos , double dtousErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取三星双时差GDOP 带参考 /// mainxyz :xyz vx vy vz /// adaj1xyz :xyz vx vy vz /// adaj2xyz :xyz vx vy vz /// refPos: 参考经度,纬度 /// dtousErr: 时差误差 /// ephLocErr: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop3SatRefByXyz", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop3SatRefByXyz(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz, double[] refPos , double dtousErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取三星双时差GDOP 无参考 /// mainLines :主星历双行 /// adaj1Lines :邻星历双行 /// adaj2Lines :邻星历双行 /// captime:信号时间 /// dtousErr: 时差误差 /// ephLocErr: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop3SatNoRef", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop3SatNoRef(string mainLines, string adajLines, string adaj2Lines, Int64 captime , double dtousErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取三星双时差GDOP 无参考 /// mainxyz :xyz vx vy vz /// adaj1xyz :xyz vx vy vz /// adaj2xyz :xyz vx vy vz /// dtousErr: 时差误差 /// ephLocErr: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop3SatNoRefByXyz", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop3SatNoRefByXyz(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz , double dtousErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取双星GDOP /// mainLines :主星历双行 /// adajLines :邻星历双行 /// captime:信号时间 /// refPos: 参考经度,纬度 /// fuHz1: 主上行 /// fuHz2: 邻上行 /// dtousErr: 时差误差 /// dfoHzErr: 频差误差 /// ephLocErr: 星历位置误差 /// ephVLocErr: 星历速度误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop2SatDRef", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop2SatDRef(string mainLines, string adajLines, Int64 captime, double[] refPos , double fuHz1, double fuHz2, double dtousErr, double dfoHzErr, double ephLocErr, double ephVLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取双星GDOP /// mainxyz :xyz vx vy vz /// adajxyz :xyz vx vy vz /// refPos: 参考经度,纬度 /// fuHz1: 主上行 /// fuHz2: 邻上行 /// dtousErr: 时差误差 /// dfoHzErr: 频差误差 /// ephLocErr: 星历位置误差 /// ephVLocErr: 星历速度误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop2SatDRefByXyz", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop2SatDRefByXyz(double[] mainxyz, double[] adajxyz, double[] refPos , double fuHz1, double fuHz2, double dtousErr, double dfoHzErr, double ephLocErr, double ephVLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取三星双频差GDOP /// mainLines :主星历双行 /// adaj1Lines :邻星历双行 /// adaj2Lines :邻星历双行 /// captime:信号时间 /// refPos: 参考经度,纬度 /// fuHz1: 主上行 /// fuHz2: 邻上行 /// dfo_err: 频差误差 /// eph_pos_err: 星历位置误差 /// eph_vel_err: 星历速度误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop3SatDF", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop3SatDF(string mainLines, string adajLines, string adaj2Lines, Int64 captime, double[] refPos , double fuHz1, double fuHz2, double dfo_err, double eph_pos_err, double eph_vel_err , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取三星双频差GDOP /// mainxyz :xyz vx vy vz /// adaj1xyz :xyz vx vy vz /// adaj2xyz :xyz vx vy vz /// refPos: 参考经度,纬度 /// fuHz1: 主上行 /// fuHz2: 邻上行 /// dfo_err: 频差误差 /// eph_pos_err: 星历位置误差 /// eph_vel_err: 星历速度误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop3SatDFByXyz", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop3SatDFByXyz(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz, double[] refPos , double fuHz1, double fuHz2, double dfo_err, double eph_pos_err, double eph_vel_err , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// /// 获取2X1D GDOP /// mainLines :主星历双行 /// adajLines :邻星历双行 /// captime:信号时间 /// cdbPos: 地面站经度,纬度 /// refPos: 参考经度,纬度 /// dtousErr: 时差误差 /// ephLocErr: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop2Sat1DRef", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop2Sat1DRef(string mainLines, string adajLines, Int64 captime, double[] cdbPos , double[] refPos, double dtousErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取2X1D GDOP /// mainxyz :xyz vx vy vz /// adajxyz :xyz vx vy vz /// cdbPos: 地面站经度,纬度 /// refPos: 参考经度,纬度 /// dtousErr: 时差误差 /// ephLocErr: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop2Sat1DRefByXyz", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop2Sat1DRefByXyz(double[] mainxyz, double[] adajxyz, double[] cdbPos , double[] refPos, double dtousErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取2X1D no ref GDOP /// mainLines :主星历双行 /// adajLines :邻星历双行 /// captime:信号时间 /// cdbPos: 地面站经度,纬度 /// dtousErr: 时差误差 /// ephLocErr: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop2Sat1DNoRef", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop2Sat1DNoRef(string mainLines, string adajLines, Int64 captime, double[] cdbPos, double dtousErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取2X1D no ref GDOP /// mainxyz :xyz vx vy vz /// adajxyz :xyz vx vy vz /// cdbPos: 地面站经度,纬度 /// dtousErr: 时差误差 /// ephLocErr: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop2Sat1DNoRefByXyz", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop2Sat1DNoRefByXyz(double[] mainxyz, double[] adajxyz, double[] cdbPos , double dtousErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取XD_CX ref GDOP /// mainLines :主星历双行 /// captime:信号时间 /// cdbPos: 地面站经度,纬度 /// cxPos: 侧向站经度,纬度 /// refPos: 参考经度,纬度 /// dto_err: 时差误差 /// doa_err: 侧向误差 /// eph_err: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "GdopXDCXRef", CallingConvention = CallingConvention.Cdecl)] public static extern int GdopXDCXRef(string mainLines, Int64 captime, double[] cdbPos, double[] cxPos, double[] refPos , double dtoErr, double doaErr, double ephLocErr , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取XD_CX ref GDOP /// mainxyz :xyz vx vy vz /// cdbPos: 地面站经度,纬度 /// cxPos: 侧向站经度,纬度 /// refPos: 参考经度,纬度 /// dto_err: 时差误差 /// doa_err: 侧向误差 /// eph_err: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "GdopXDCXRefByXyz", CallingConvention = CallingConvention.Cdecl)] public static extern int GdopXDCXRefByXyz(double[] mainxyz, double[] cdbPos, double[] cxPos, double[] refPos , double dto_err, double doa_err, double eph_err , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取XD_CX no ref GDOP /// mainLines :主星历双行 /// captime:信号时间 /// cdbPos: 地面站经度,纬度 /// cxPos: 侧向站经度,纬度 /// refPos: 参考经度,纬度 /// dto_err: 时差误差 /// doa_err: 侧向误差 /// eph_err: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "GdopXDCXNoRef", CallingConvention = CallingConvention.Cdecl)] public static extern int GdopXDCXNoRef(string mainLines, Int64 captime, double[] cdbPos, double[] cxPos , double dtousErr, double doaErr, double ephLocErr, double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取XD_CX no ref GDOP /// mainxyz :xyz vx vy vz /// cdbPos: 地面站经度,纬度 /// cxPos: 侧向站经度,纬度 /// refPos: 参考经度,纬度 /// dto_err: 时差误差 /// doa_err: 侧向误差 /// eph_err: 星历位置误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "GdopXDCXNoRefByXyz", CallingConvention = CallingConvention.Cdecl)] public static extern int GdopXDCXNoRefByXyz(double[] mainxyz, double[] cdbPos, double[] cxPos , double dto_err, double doa_err, double eph_err , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh); /// /// 获取XD_CX no ref GDOP /// cx1Pos: 侧向站经度,纬度 /// cx2Pos: 侧向站经度,纬度 /// doa_err1: 侧向1误差 /// doa_err2: 侧向2误差 /// level: gdop输出等级 /// levlen:level 长度 /// resCount:每一级的数据个数 /// res :数据 /// satllh :卫星位置 长度6 /// 返回值:0 成功 /// [DllImport(GDOPDll, EntryPoint = "Gdop2CX", CallingConvention = CallingConvention.Cdecl)] public static extern int Gdop2CX(double[] cx1Pos, double[] cx2Pos , double doaErr1, double doaErr2, double[] level, int levlen, int[] resCount, out IntPtr res); /// /// XD时差线 /// main_sat_pos 卫星星历 xyz /// mbwx_rec_pos 目标接收站位置 llh /// ckwx_rec_pos 参考接收站位置 llh /// cdb_rec_pos 地面接收站位置 llh /// ref_pos 参考位置 llh /// target_dto 目标时差 llh /// ref_dto 参考时差 llh /// reslen 时差线个数 /// res 值 /// [DllImport(GDOPDll, EntryPoint = "SCX_XD", CallingConvention = CallingConvention.Cdecl)] public static extern int SCX_XD(double[] mainxyz, double[] mbrecPos, double[] ckrefPos, double[] cdbPos, double[] refPos, double target_dto, double ref_dto,ref int resCount, out IntPtr res); /// /// XD时差线 /// main_sat_pos 卫星星历 xyz /// mbwx_rec_pos 目标接收站位置 llh /// cdb_rec_pos 地面接收站位置 llh /// target_dto 目标时差 llh /// ref_dto 参考时差 llh /// reslen 时差线个数 /// res 值 /// [DllImport(GDOPDll, EntryPoint = "SCX_XD_NoRef", CallingConvention = CallingConvention.Cdecl)] public static extern int SCX_XD_NoRef(double[] mainxyz, double[] mbrecPos, double[] cdbPos, double target_dto,ref int resCount, out IntPtr res); [DllImport(GDOPDll, EntryPoint = "FreeGDOPBuf", CallingConvention = CallingConvention.Cdecl)] public static extern void FreeGDOPBuf(IntPtr val); } }