/// <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 }
public FormTestCreation(TestParams tp) { InitializeComponent(); IndexesOfLights = tp.IndexesOfLights; tbTestName.Text = tp.TestName; tbTestName.Enabled = false; btnSave.Enabled = true; #if DEBUG TopMost = false; #endif }
/// <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); } }
/// <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); }
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 }
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); }