123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- 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);
- /// <returns></returns>
- ///
- /// 获取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);
- }
- }
|