|
@@ -21,8 +21,7 @@ namespace XdCxRhDW.App.UserControl
|
|
|
EphAdja1 = ucEphXYZAdja1.EphParam(),
|
|
|
EphAdja2 = ucEphXYZAdja2.EphParam(),
|
|
|
CapTime = txtCapTime.DateTime,
|
|
|
- RefLon = Convert.ToDouble(txtRefLocation1.Text.Replace(",", ",").Split(',')[0].Trim()),
|
|
|
- RefLat = Convert.ToDouble(txtRefLocation1.Text.Replace(",", ",").Split(',')[1].Trim()),
|
|
|
+ RefStation = txtRefLocation1.GetLonLat(),
|
|
|
DfoErr = Convert.ToDouble(txtDfoErr1.Text),
|
|
|
SatLocErr = Convert.ToDouble(txtSatLocErr1.Text),
|
|
|
EphVelErr = Convert.ToDouble(txtEphVelErr1.Text),
|
|
@@ -66,49 +65,58 @@ namespace XdCxRhDW.App.UserControl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private (bool, string) ParamValidate()
|
|
|
+ private bool ParamValidate()
|
|
|
{
|
|
|
- var mainparam = ucEphXYZMain.ValidateParam();
|
|
|
- if (!mainparam.Item1)
|
|
|
+ if (!ucEphXYZMain.CheckEph(dxErrorProvider))
|
|
|
{
|
|
|
- return (false, mainparam.Item2);
|
|
|
+ return false;
|
|
|
}
|
|
|
- var adja1param = ucEphXYZAdja1.ValidateParam();
|
|
|
- if (!adja1param.Item1)
|
|
|
+ if (!ucEphXYZAdja1.CheckEph(dxErrorProvider))
|
|
|
{
|
|
|
- return (false, adja1param.Item2);
|
|
|
+ return false;
|
|
|
}
|
|
|
- var adja2param = ucEphXYZAdja2.ValidateParam();
|
|
|
- if (!adja2param.Item1)
|
|
|
+ if (!ucEphXYZAdja2.CheckEph(dxErrorProvider))
|
|
|
{
|
|
|
- return (false, adja2param.Item2);
|
|
|
+ return false;
|
|
|
}
|
|
|
- var refsta = txtRefLocation1.CheckLonLat("参考站");
|
|
|
- if (!refsta.Item1)
|
|
|
+ if (!txtRefLocation1.CheckLonLat(dxErrorProvider, "参考站"))
|
|
|
{
|
|
|
- return refsta;
|
|
|
+ return false;
|
|
|
}
|
|
|
- return (true, "");
|
|
|
+ if (!txtDfoErr1.CheckDouble(dxErrorProvider, "频差误差"))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!txtSatLocErr1.CheckDouble(dxErrorProvider, "星历位置误差"))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!txtEphVelErr1.CheckDouble(dxErrorProvider, "星历速度误差"))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!txtFu1.CheckDouble(dxErrorProvider, "目标上行频点"))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!txtFu2.CheckDouble(dxErrorProvider, "参考上行频点"))
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
}
|
|
|
private void btnOK_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
- var pv = ParamValidate();
|
|
|
- if (!pv.Item1)
|
|
|
- {
|
|
|
- DxHelper.MsgBoxHelper.ShowWarning($"{pv.Item2}");
|
|
|
- return;
|
|
|
- }
|
|
|
+ if (!ParamValidate()) { return; }
|
|
|
try
|
|
|
{
|
|
|
mapControl1.ClearMap();
|
|
|
- var refs = new double[] { Model.RefLon, Model.RefLat, 0 };
|
|
|
- var data = GdopHelper.Gdop3SatDFByXyz(Model.EphMain, Model.EphAdja1, Model.EphAdja2, Model.fu1, Model.fu2, Model.DfoErr, Model.SatLocErr, Model.EphVelErr, refs);
|
|
|
+ var data = GdopHelper.Gdop3SatDFByXyz(Model.EphMain, Model.EphAdja1, Model.EphAdja2, Model.fu1, Model.fu2, Model.DfoErr, Model.SatLocErr, Model.EphVelErr, Model.RefStation);
|
|
|
|
|
|
if (data == null)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
foreach (var errLins in data)//画GDOP
|
|
|
{
|
|
|
var mapDots = errLins.MapDots.Select(p => p).Select(p => (p.Lon, p.Lat));
|
|
@@ -128,9 +136,10 @@ namespace XdCxRhDW.App.UserControl
|
|
|
|
|
|
private async void btnEphCalc_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
+ dxErrorProvider.ClearErrors();
|
|
|
if (txtCapTime.DateTime == DateTime.MinValue)
|
|
|
{
|
|
|
- DxHelper.MsgBoxHelper.ShowWarning("信号时间不能为空!");
|
|
|
+ dxErrorProvider.SetError(txtCapTime, "信号时间不能为空!");
|
|
|
return;
|
|
|
}
|
|
|
var sigTime = txtCapTime.DateTime;
|
|
@@ -202,14 +211,9 @@ namespace XdCxRhDW.App.UserControl
|
|
|
public DateTime CapTime { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 参考站位置经度
|
|
|
- /// </summary>
|
|
|
- public double RefLon { get; set; }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 参考站位置纬度
|
|
|
+ /// 参考站位置-经度 纬度 高度
|
|
|
/// </summary>
|
|
|
- public double RefLat { get; set; }
|
|
|
+ public double[] RefStation { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 频差误差(Hz)
|