コード例 #1
0
        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);
            }
        }
コード例 #2
0
 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);
 }
コード例 #3
0
        //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
                }
            }
        }