using DevExpress.Mvvm.ModuleInjection.Native; using DevExpress.XtraEditors; using DevExpress.XtraEditors.DXErrorProvider; using ExtensionsDev; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Documents; using System.Windows.Forms; using XzXdDw.App.Api; using XzXdDw.App.EFContext; using XzXdDw.App.Model; using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox; namespace XzXdDw.App.EditForms { public partial class SinglePosParamEditor : DevExpress.XtraEditors.XtraForm { public PosRes info; private CgRes cgRes1; private CgRes cgRes2; private double[] PosRes; private Action callBack; public SinglePosParamEditor(PosRes info, CgRes cgRes1, CgRes cgRes2, Action callBack) { InitializeComponent(); this.Text = "单星定位"; this.info = info; if (cgRes1 == null) { cgRes1 = new CgRes(); } if (cgRes2 == null) { cgRes2 = new CgRes(); } this.cgRes1 = cgRes1; this.cgRes2 = cgRes2; this.callBack = callBack; this.StartPosition = FormStartPosition.CenterParent; } private async void X2D1PosParamEditor_Load(object sender, EventArgs e) { List list = new List(); using (RHDWContext db = new RHDWContext()) { var res = await db.XlInfos.OrderBy(p => p.SatName).ToListAsync(); if (res != null) list.AddRange(res.Select(p => p.Sat)); } this.txtDfoSx1.Text = $"{cgRes1.DfoSx}"; this.txtDfoSx2.Text = $"{cgRes2.DfoSx}"; this.txtUpFreq.Text = $"{info.UpFreq / 1000000}"; this.sigTime.EditValue = cgRes1.SigTime; this.txtMainX.Text = $"{cgRes1.MainX}"; this.txtMainY.Text = $"{cgRes1.MainY}"; this.txtMainZ.Text = $"{cgRes1.MainZ}"; this.txtMainVX.Text = $"{cgRes1.MainVX}"; this.txtMainVY.Text = $"{cgRes1.MainVY}"; this.txtMainVZ.Text = $"{cgRes1.MainVZ}"; this.txtMainX1.Text = $"{cgRes1.AdjaX}"; this.txtMainY1.Text = $"{cgRes1.AdjaY}"; this.txtMainZ1.Text = $"{cgRes1.AdjaZ}"; this.txtMainVX1.Text = $"{cgRes1.AdjaVX}"; this.txtMainVY1.Text = $"{cgRes1.AdjaVY}"; this.txtMainVZ1.Text = $"{cgRes1.AdjaVZ}"; this.txtMainX11.Text = $"{cgRes2.AdjaX}"; this.txtMainY11.Text = $"{cgRes2.AdjaY}"; this.txtMainZ11.Text = $"{cgRes2.AdjaZ}"; this.txtMainVX11.Text = $"{cgRes2.AdjaVX}"; this.txtMainVY11.Text = $"{cgRes2.AdjaVY}"; this.txtMainVZ11.Text = $"{cgRes2.AdjaVZ}"; } private void btnUpdate_Click(object sender, EventArgs e) { try { if (this.listBox.Items.Count == 0) { XtraMessageBox.Show($"单星未定位不能更新到数据库中"); return; } cgRes1.DfoSx = Convert.ToDouble(this.txtDfoSx1.Text); cgRes1.MainX = Convert.ToDouble(this.txtMainX.Text); cgRes1.MainY = Convert.ToDouble(this.txtMainY.Text); cgRes1.MainZ = Convert.ToDouble(this.txtMainZ.Text); cgRes1.MainVX = Convert.ToDouble(this.txtMainVX.Text); cgRes1.MainVY = Convert.ToDouble(this.txtMainVY.Text); cgRes1.MainVZ = Convert.ToDouble(this.txtMainVZ.Text); cgRes1.AdjaX = Convert.ToDouble(this.txtMainX1.Text); cgRes1.AdjaY = Convert.ToDouble(this.txtMainY1.Text); cgRes1.AdjaZ = Convert.ToDouble(this.txtMainZ1.Text); cgRes1.AdjaVX = Convert.ToDouble(this.txtMainVX1.Text); cgRes1.AdjaVY = Convert.ToDouble(this.txtMainVY1.Text); cgRes1.AdjaVZ = Convert.ToDouble(this.txtMainVZ1.Text); cgRes2.DfoSx = Convert.ToDouble(this.txtDfoSx2.Text); cgRes2.MainX = Convert.ToDouble(this.txtMainX.Text); cgRes2.MainY = Convert.ToDouble(this.txtMainY.Text); cgRes2.MainZ = Convert.ToDouble(this.txtMainZ.Text); cgRes2.MainVX = Convert.ToDouble(this.txtMainVX.Text); cgRes2.MainVY = Convert.ToDouble(this.txtMainVY.Text); cgRes2.MainVZ = Convert.ToDouble(this.txtMainVZ.Text); cgRes2.AdjaX = Convert.ToDouble(this.txtMainX11.Text); cgRes2.AdjaY = Convert.ToDouble(this.txtMainY11.Text); cgRes2.AdjaZ = Convert.ToDouble(this.txtMainZ11.Text); cgRes2.AdjaVX = Convert.ToDouble(this.txtMainVX11.Text); cgRes2.AdjaVY = Convert.ToDouble(this.txtMainVY11.Text); cgRes2.AdjaVZ = Convert.ToDouble(this.txtMainVZ11.Text); info.UpFreq = Convert.ToDouble(this.txtUpFreq.Text) * 1e6; info.UpdateTime = DateTime.Now; string posstr = this.listBox.Items[0].ToString(); var allstrs = posstr.Split(new string[] { ":", "定位经度", "定位纬度", "镜像经度", "镜像纬度" }, StringSplitOptions.RemoveEmptyEntries); if (allstrs.Length == 4) { using (RHDWContext db = new RHDWContext()) { info.PosLon = Convert.ToDouble(PosRes[0]); info.PosLat = Convert.ToDouble(PosRes[1]); info.MirrLon = Convert.ToDouble(PosRes[3]); info.MirrLat = Convert.ToDouble(PosRes[4]); db.CgRes.AddOrUpdate(cgRes1);//参估结果入库 db.CgRes.AddOrUpdate(cgRes2);//参估结果入库 db.PosRes.AddOrUpdate(info);//定位结果入库 db.SaveChangesAsync(); } callBack?.Invoke(); XtraMessageBox.Show($"单星更新数据成功"); } } catch (Exception ex) { XtraMessageBox.Show($"单星更新定位数据失败,失败信息:{ex.Message}"); } } private void btnOk_Click(object sender, EventArgs e) { listBox.Items.Clear(); try { var cgRes1 = new CgRes() { DfoSx = Convert.ToDouble(this.txtDfoSx1.Text), MainX = Convert.ToDouble(this.txtMainX.Text), MainY = Convert.ToDouble(this.txtMainY.Text), MainZ = Convert.ToDouble(this.txtMainZ.Text), MainVX = Convert.ToDouble(this.txtMainVX.Text), MainVY = Convert.ToDouble(this.txtMainVY.Text), MainVZ = Convert.ToDouble(this.txtMainVZ.Text), AdjaX = Convert.ToDouble(this.txtMainX1.Text), AdjaY = Convert.ToDouble(this.txtMainY1.Text), AdjaZ = Convert.ToDouble(this.txtMainZ1.Text), AdjaVX = Convert.ToDouble(this.txtMainVX1.Text), AdjaVY = Convert.ToDouble(this.txtMainVY1.Text), AdjaVZ = Convert.ToDouble(this.txtMainVZ1.Text), }; var cgRes2 = new CgRes() { DfoSx = Convert.ToDouble(this.txtDfoSx2.Text), MainX = Convert.ToDouble(this.txtMainX.Text), MainY = Convert.ToDouble(this.txtMainY.Text), MainZ = Convert.ToDouble(this.txtMainZ.Text), MainVX = Convert.ToDouble(this.txtMainVX.Text), MainVY = Convert.ToDouble(this.txtMainVY.Text), MainVZ = Convert.ToDouble(this.txtMainVZ.Text), AdjaX = Convert.ToDouble(this.txtMainX11.Text), AdjaY = Convert.ToDouble(this.txtMainY11.Text), AdjaZ = Convert.ToDouble(this.txtMainZ11.Text), AdjaVX = Convert.ToDouble(this.txtMainVX11.Text), AdjaVY = Convert.ToDouble(this.txtMainVY11.Text), AdjaVZ = Convert.ToDouble(this.txtMainVZ11.Text), }; double Upfreq = Convert.ToDouble(this.txtUpFreq.Text) * 1e6; PosRes = PosApi.X1_POS(cgRes1, cgRes2, Upfreq); listBox.Items.Add($"定位经度:{PosRes[0]:f4} 定位纬度:{PosRes[1]:f4} 镜像经度:{PosRes[3]:f4} 镜像纬度:{PosRes[4]:f4}"); } catch (Exception ex) { XtraMessageBox.Show($"单星定位失败,失败信息:{ex.Message}"); } } } }