Пример #1
0
        public static bool Cal0()
        {
            HexString inc    = null;
            bool      repeat = true;

            while (repeat)
            {
                repeat = false;
                try
                {
                    byte[] send = StrToByte("5A 52 43 0D 0A"); //ZRC
                    SendPort(send);
                    for (int i = 0; i < 60; i++)
                    {
                        //TaskEx.Delay(500);
                        Thread.Sleep(500);
                        inc = ReadPortIncomes();
                        //inc.bin_answer = "45523231";
                        if (inc?.Hex == "")
                        {
                            continue;
                        }
                        LastPortAnswer = inc.Txt + "\n" + inc.Hex;
                        if (inc.Hex.Contains("4F4B3030".ToLower()))  //OK
                        {
                            MessageBox.Show("Переключите пробник в режим измерения \"MEAS\"", "Успешно",
                                            MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return(true);
                        }
                        if (inc.Hex.Contains("45523231"))  //ER21 = Too Bright
                        {
                            var re = MessageBox.Show("Переключите пробник в режим \"0-CAL\"\n\nСлишком светло!",
                                                     "Слишком светло!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                            if (re == DialogResult.OK)
                            {
                                repeat = true;
                            }
                            else
                            {
                                repeat = false;
                            }
                        }
                        if (inc.Hex.Contains("4532320d")) //E22 Too Dark, 0-Cal enabled - калибровка не нужна
                        {
                            MessageBox.Show("Переключите пробник в режим измерения \"MEAS\"",
                                            "Калибровка не нужна", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return(true);
                        }
                        break;
                    }
                }
                catch (Exception ex)
                {
                    LastPortAnswer = inc?.Hex;
                    MessageBox.Show("Ошибка калибровки Cal-0.\n" + ex.Message,
                                    "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            MessageBox.Show("Время калибровки вышло (30с): ответ не получен => Нет соединения.",
                            "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return(false);
        }
Пример #2
0
        public bool Run()
        {
            LastPortIncome = null;
            UsePrevRead    = false;
            ifstate state         = ifstate.normal;
            bool    FirstSelected = false;

            failMsg = null;
            for (int i = 0; i < RunList.Count; i++)
            {
                if (StringToTestList.ContainsKey(RunList[i].Key))
                {
                    switch (state)
                    {
                    case ifstate.normal:
                        #region no
                        if (RunList[i].Key == "{")
                        {
                            state = ifstate.skip;
                            continue;
                        }
                        bool pass = StringToTestList[RunList[i].Key](RunList[i].Value);
                        if (!pass)
                        {
                            if (nextIf(i))
                            {
                                state = ifstate.go;
                            }
                            else
                            {
                                return(FailRun());
                            }
                        }
                        break;

                        #endregion
                    case ifstate.skip:
                        #region skip
                        if (RunList[i].Key == "}")
                        {
                            state = ifstate.normal;
                        }
                        //else
                        //{
                        //    continue;
                        //}
                        break;

                        #endregion
                    case ifstate.go:
                        #region go
                        if (RunList[i].Key == "}")
                        {
                            return(SuccessRun());
                        }
                        bool pass2 = StringToTestList[RunList[i].Key](RunList[i].Value);
                        if (!pass2)
                        {
                            return(FailRun());
                        }
                        break;
                        #endregion
                    }
                }
                else
                {
                    PublicData.write_info($"{display}: \"{RunList[i].Key}\" - программа не знает такого пункта. (F4 редактировать - \"{section.Name}\")");
                    if (!FirstSelected)
                    {
                        PublicData.SetFokusListView(this);
                    }
                    FirstSelected = true;
                    failMsg       = $"Неизвестная команда \"{RunList[i].Key}\" в тесте [{section.Name}]";
                    return(FailRun());
                }
            }
            return(SuccessRun());
        }