Beispiel #1
0
        /// <summary>
        /// Кнопка "Сохранить"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, EventArgs e)
        {
            TestParams tp = new TestParams();

            tp.IndexesOfLights = getIndexesOfChekedLights();
            tp.TestName        = tbTestName.Text.Trim();
            if (tp.IndexesOfLights.Length == 0)
            {
                MessageBox.Show("Не выбраны светодиоды.", "Ошибка!");
                return;
            }
            if (tp.TestName == "")
            {
                MessageBox.Show("Не указано название теста.", "Ошибка!");
                return;
            }
            try
            {
                TestManager.SaveTest(tp);
                TestManager.Reset();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
            Close();
        }
        public FormResult(TestParams testParams)
        {
            InitializeComponent();
            tp = testParams;
#if DEBUG
            TopMost = false;
#endif
        }
Beispiel #3
0
        public FormTestCreation(TestParams tp)
        {
            InitializeComponent();
            IndexesOfLights    = tp.IndexesOfLights;
            tbTestName.Text    = tp.TestName;
            tbTestName.Enabled = false;
            btnSave.Enabled    = true;
#if DEBUG
            TopMost = false;
#endif
        }
Beispiel #4
0
        /// <summary>
        /// Сохранение параметров теста в файл
        /// </summary>
        /// <param name="tp"></param>
        public static void SaveTest(TestParams tp)
        {
            BinaryFormatter bf = new BinaryFormatter();

            try
            {
                using (FileStream sw = new FileStream(testsFolder.FullName + '\\' + DeleteUnsupportedCharacters(tp.TestName) + ".testparams", FileMode.OpenOrCreate))
                {
                    bf.Serialize(sw, tp);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Невозможно сохранить тест в файл.\n" + ex.Message);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Получить параметры теста по его названию
        /// </summary>
        /// <param name="testName"></param>
        /// <returns></returns>
        public static TestParams GetTestParams(string testName)
        {
            BinaryFormatter bf = new BinaryFormatter();
            TestParams      tp = null;

            try
            {
                using (FileStream sw = new FileStream(testsFolder.FullName + '\\' + testName + ".testparams", FileMode.Open))
                {
                    tp = (TestParams)bf.Deserialize(sw);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Невозможно открыть файл теста.\n" + ex.Message);
            }
            return(tp);
        }
Beispiel #6
0
        public FormTest(TestParams tp)
        {
            InitializeComponent();
            this.testParams = tp;
            printTestName(testParams);
            PrintProgress();
            //создание объекта для сохранения результата
            testParams.Results = new TestResults()
            {
                IntensityResults = new ResultOfLight[testParams.IndexesOfLights.Length]
            };

#if DEBUG
            TopMost = false;
#else
            try
            {
                spw = new SerialPortWorker.SerialPortWorker();
            }catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
#endif
        }
Beispiel #7
0
 private void printTestName(TestParams testParams)
 {
     this.Text = testParams.ToString();
 }
        /// <summary>
        /// Формирование отчета
        /// </summary>
        /// <param name="tp"></param>
        /// <returns></returns>
        private Bitmap DrawResult(TestParams tp)
        {
            Bitmap   bm = new Bitmap(840, 1188);
            Graphics gr = Graphics.FromImage(bm);
            //создание шрифтов
            Font       font      = new Font("Times New Roman", 14);
            Font       fontSmall = new Font("Times New Roman", 7);
            Font       fontBold  = new Font("Times New Roman", 14, FontStyle.Bold);
            SolidBrush brush     = new SolidBrush(Color.Black);

            //заливка фона белым цветом
            gr.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, 840, 1188));
            //Название учреждения
            gr.DrawString(FormSettings.GetInfo()[0], fontBold, brush, new PointF(150, 15));
            //Пациент
            gr.DrawString(String.Format("Пациент: " + tp.Patient.FIO), font, brush, new PointF(30, 50));
            gr.DrawString(String.Format("Пол: " + tp.Patient.Sex), font, brush, new PointF(30, 75));
            gr.DrawString(String.Format("Дата рождения: " + tp.Patient.DateOfBirth.ToShortDateString()), font, brush, new PointF(30, 100));
            //возраст
            int age = DateTime.Now.Subtract(tp.Patient.DateOfBirth).Days / 365;

            gr.DrawString(String.Format("Возраст: " + age), font, brush, new PointF(30, 125));
            //дата теста
            gr.DrawString(String.Format("Дата проведения теста: " + tp.DateOfTest.ToShortDateString()), font, brush, new PointF(30, 150));
            gr.DrawString(String.Format("Время проведения теста: " + tp.DateOfTest.ToShortTimeString()), font, brush, new PointF(30, 175));
            //глаз
            gr.DrawString(String.Format("Глаз: " + Eyes.GetString(tp.CurrentEye)), font, brush, new PointF(480, 50));
            //Время теста
            gr.DrawString(String.Format("Длительность теста: " + tp.Results.TestTime), font, brush, new PointF(480, 75));
            //импульсы
            gr.DrawString(String.Format("Длительность импульса: " + tp.Results.Duration + " мс"), font, brush, new PointF(480, 100));
            gr.DrawString(String.Format("Интервал импульса: " + tp.Results.Interval + " мс"), font, brush, new PointF(480, 125));
            //точки
            gr.DrawString(String.Format("Количество точек: " + tp.Results.IntensityResults.Length), font, brush, new PointF(480, 150));
            //стратегия
            gr.DrawString(String.Format("Стратегия: " + TestMethods.GetString(tp.TestMethod)), font, brush, new PointF(480, 175));
            //название теста
            gr.DrawString(String.Format("Тест: " + tp.TestName), fontBold, brush, new PointF(150, 210));
            #region График светочувствительности
            Pen   pen     = new Pen(Color.Black, 1);
            Point center  = new Point(420, 670);
            int   diametr = 800;

            //рисование осей
            gr.DrawLine(pen, center.X - diametr / 2, center.Y, center.X + diametr / 2, center.Y);
            gr.DrawLine(pen, center.X, center.Y - diametr / 2, center.X, center.Y + diametr / 2);
            //определение самой отдаленной точки от центра координат
            int MaxAngle = 0;
            for (int i = 0; i < tp.IndexesOfLights.Length; i++)
            {
                if (MaxAngle < LibraryOfLights.RadialLights[tp.IndexesOfLights[i]].Distance)
                {
                    MaxAngle = LibraryOfLights.RadialLights[tp.IndexesOfLights[i]].Distance;
                }
            }
            //определение максимального угла, написанного на осях
            int MaxAxisAngle = MaxAngle;
            if (MaxAngle % 10 != 0)
            {
                float val = MaxAngle / 10f + 1f;
                MaxAxisAngle = (int)val * 10;
            }
            if (MaxAxisAngle == 0)
            {
                MaxAxisAngle = 10;
            }
            int numberOfCircles = MaxAxisAngle / 10;
            //коэффициент растяжения точек
            float koef = (diametr / 2) / MaxAxisAngle;
            //рисование окружностей
            Pen pen2 = new Pen(new System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.Percent90, Color.WhiteSmoke), 0.5f);
            for (int i = 1; i <= numberOfCircles; i++)
            {
                int rad = (int)(koef * 10f * i);
                gr.DrawEllipse(pen2, new Rectangle(center.X - rad, center.Y - rad, rad * 2, rad * 2));
                gr.DrawString((i * 10).ToString(), fontSmall,
                              new System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.Percent20, Color.WhiteSmoke),
                              new PointF(center.X + koef * i * 10, center.Y));
            }
            //рисование интенсивностей
            for (int i = 0; i < tp.IndexesOfLights.Length; i++)
            {
                //определение положения
                Point loc = getLocationOfLabel(LibraryOfLights.RadialLights[tp.IndexesOfLights[i]], center, koef);
                //рисование
                gr.DrawString(tp.Results.IntensityResults[i].IntensityLevel.ToString(), fontSmall, brush, loc);
            }
            //график светочувствительности
            gr.DrawString("График светочувствительности, Дб", font, brush, new PointF(250, 1080));
            #endregion
            //врач
            gr.DrawString(String.Format("Врач: " + FormSettings.GetInfo()[1]), font, brush, new PointF(30, 1130));
            return(bm);
        }