public static SysAutoTestResult GetDataForTcpAutoTest(byte[] data) { if (data.Length > 9) { SysAutoTestResult sys = new SysAutoTestResult(); byte NeedTestVolate = data[6]; for (int i = 0; i < NeedTestVolate; i++) { sys.NeedTestList.Add(BitConverter.ToSingle(data, 9 + i * 4) * 1000); } if (data[7] == 1) { sys.EleY = BitConverter.ToSingle(data, 9 + NeedTestVolate * 4) * 1000; sys.IsEleY = true; } else { sys.IsEleY = false; } if (data[8] == 1) { sys.EleVolate = BitConverter.ToSingle(data, 9 + 4 * NeedTestVolate + data[7] * 4) * 1000; sys.HideTime = data[9 + 4 * NeedTestVolate + data[7] * 4 + data[8] * 4]; sys.IsVolate = true; } else { sys.IsVolate = false; } sys.Fre = data[data.Length - 6]; sys.TestSpeed = BitConverter.ToSingle(data, data.Length - 5); return(sys); } else { ShowHide("TCP传输测量数据错误"); return(null); } }
public static SysAutoTestResult DeelAutoTaskData(byte[] taskdata) { if (taskdata[0] == 0xdd && taskdata[1] == 0x0a) { int TestNum = taskdata[6]; if (TestNum > 0) { SysAutoTestResult taskResult = new SysAutoTestResult(); List <float> td = new List <float>(); for (int i = 0; i < TestNum; i++) { td.Add(BitConverter.ToSingle(taskdata.Skip(7 + i * 4).Take(4).ToArray(), 0)); } taskResult.NeedTestList = td; taskResult.EleY = BitConverter.ToSingle(taskdata.Skip(7 + TestNum * 4).Take(4).ToArray(), 0); taskResult.EleVolate = BitConverter.ToSingle(taskdata.Skip(7 + (TestNum + 1) * 4).Take(4).ToArray(), 0); taskResult.HideTime = taskdata[taskdata.Length - 2]; return(taskResult); } } return(null); }
//public static void StartEleY(bool IsTcpTestting,bool IsCompleteVolateTest,bool IsEnable, byte[] SysData, ObservableCollection<string> ListboxItemsources, // ObservableCollection<string> TestResultMeassge) //{ // Models.SysAutoTestResult sys = new SysAutoTestResult(); // if (IsTcpTestting) // sys = StaticClass.GetDataForTcpAutoTest(SysData); // else // { // sys = GetSys(ListboxItemsources); // } // if (IsCompleteVolateTest) // { // // SetVolate(sys.EleY); // int p = 0; // bool IsEnd = false; // Models.AutoStateStatic.SState.TestText.Add("电晕 :" + sys.EleY.ToString() + "V" + ":\t正在升压中..."); // STAMethod(TestResultMeassge); // while (!IsEnable) // { // p++; // Thread.Sleep(100); // if (p > 5) // { // Models.AutoStateStatic.SState.TestText.RemoveAt(AutoStateStatic.SState.TestText.Count - 1); // Models.AutoStateStatic.SState.TestText.Add("电晕 :" + sys.EleY.ToString() + "V" + ":\t升压超时"); // STAMethod(TestResultMeassge); // ThreadPool.QueueUserWorkItem(delegate // { // SynchronizationContext.SetSynchronizationContext(new // System.Windows.Threading.DispatcherSynchronizationContext(Application.Current.Dispatcher)); // SynchronizationContext.Current.Post(async pl => // { // if (sys.IsVolate) // { // StaticClass.ShowELEYANDVOLATe(Views.EleOrVolate.Volate); // if (AutoStateStatic.SState.IsStartVolate == true) // await Task.Factory.StartNew(StartVolate); // else // AutoStateStatic.SState.IsStartVolate = false; // } // else // { // IsTcpTestting = false; // } // }, null); // }); // IsEnd = true; // break; // } // } // if (!IsEnd) // { // AutoStateStatic.SState.TestText.RemoveAt(AutoStateStatic.SState.TestText.Count - 1); // AutoStateStatic.SState.TestText.Add("电晕 :" + sys.EleY.ToString() + "V" + ":\t升压完成"); // STAMethod(TestResultMeassge); // ThreadPool.QueueUserWorkItem(delegate // { // SynchronizationContext.SetSynchronizationContext(new // System.Windows.Threading.DispatcherSynchronizationContext(Application.Current.Dispatcher)); // SynchronizationContext.Current.Post(async pl => // { // Views.Qualified q = new Views.Qualified // { // WindowStartupLocation = WindowStartupLocation.CenterScreen // }; // q.ShowDialog(); // StaticClass.ShowELEYANDVOLATe(Views.EleOrVolate.Volate); // if (AutoStateStatic.SState.IsStartVolate == true) // await Task.Factory.StartNew(StartVolate); // else // AutoStateStatic.SState.IsStartVolate = false; // }, null); // }); // } // } //} public static void StartVolate(bool IsTcpTestting, bool IsCompleteEleTest, bool IsEnable, PhysicalVariable HVVoltage, byte[] SysData, ObservableCollection <string> ListboxItemsources, ObservableCollection <string> TestResultMeassge) { Models.SysAutoTestResult sys = new SysAutoTestResult(); if (IsTcpTestting) { sys = StaticClass.GetDataForTcpAutoTest(SysData); } else { sys = GetSys(ListboxItemsources); } if (IsCompleteEleTest) { // SetVolate(sys.EleVolate); int p = 0; bool IsEnd = false; Models.AutoStateStatic.SState.TestText.Add("耐压 :" + sys.EleVolate.ToString() + "V" + ":\t正在升压中..."); STAMethod(TestResultMeassge); while (!IsEnable) { p++; Thread.Sleep(100); float maxvalue = 0; float actvalue = 0; if (p > 5) { if (Math.Abs((float)HVVoltage.value - sys.EleVolate) < maxvalue) { actvalue = (float)HVVoltage.value; } AutoStateStatic.SState.TestText.RemoveAt(AutoStateStatic.SState.TestText.Count - 1); AutoStateStatic.SState.TestText.Add("耐压 :" + actvalue.ToString() + "V" + ":\t未升到耐压值"); STAMethod(TestResultMeassge); IsEnd = true; IsTcpTestting = false; break; } } if (!IsEnd) { AutoStateStatic.SState.TestText.RemoveAt(AutoStateStatic.SState.TestText.Count - 1); AutoStateStatic.SState.TestText.Add("耐压 :" + sys.EleVolate.ToString() + "V" + ":\t升压完成"); STAMethod(TestResultMeassge); int c = 0; float MaxVolate = 0; #region while (true) { Models.AutoStateStatic.SState.TestText.Add("当前电压: " + HVVoltage + "\t\n正在持续耐压中..."); STAMethod(TestResultMeassge); if (c < sys.HideTime * 2) { if (StaticClass.IsOk((float)HVVoltage.value, sys.EleVolate)) { float tempdata = Math.Abs(sys.EleVolate - (float)HVVoltage.value); if (tempdata > MaxVolate) { MaxVolate = tempdata; AutoStateStatic.SState.MaxEqualVolate = sys.EleVolate; } Thread.Sleep(500); c++; } else { Thread.Sleep(500); c++; continue; } } else { if (((float)AutoStateStatic.SState.NoSame / (float)AutoStateStatic.SState.AllNum) >= 0.80f) { Models.AutoStateStatic.SState.TestText.Add("耐压实验已完成 耐压结果: 不合格"); STAMethod(TestResultMeassge); AutoStateStatic.SState.NaiVolate = false; //耐压是否合格 AutoStateStatic.SState.CompeleteVolate = true; //是否完成耐压 IsTcpTestting = false; break; } else { Models.AutoStateStatic.SState.TestText.Add("耐压实验已完成 耐压结果: 合格"); STAMethod(TestResultMeassge); AutoStateStatic.SState.NaiVolate = true; //耐压是否合格 AutoStateStatic.SState.CompeleteVolate = true; //是否完成耐压 IsTcpTestting = false; break; } } } #endregion } } }