public FormMain() { bool portExist = false; // Найден ли существующий последовательный порт InitializeComponent(); buttonOpenClose.Location = new Point(Width / 2 - buttonOpenClose.Width / 2, buttonOpenClose.Location.Y); // Размещаем кнопку открытия/закрытия порта по центру окна // Перебераем все существующие порты foreach (var port in SerialPort.GetPortNames()) { portExist = true; // Существующий порт найден SerialPortSettings.SetStringPortName(port); // Сохраняем имя порта break; // Перестаем перебирать если нашли хоть один существующий порт } SerialPortSettings.SetIsChanged(true); // Установить в true чтобы применить начальные настройки serialPortUART = SerialPortSettings.ReadSettings(serialPortUART); // Задаем новые настройки порта // Проверяем был ли найден хоть один порт if (portExist) { try { serialPortUART.Open(); // Попытка открыть порт richTextBoxMainOut.AppendText(DateTime.Now.ToString("G") + ": Центральный узел подключен, узел расположен на порту " + serialPortUART.PortName + Environment.NewLine); // Вывод в лог сообщения с указанием текущей даты и времени richTextBoxMainOut.SelectionStart = richTextBoxMainOut.Text.Length; // Перенос каретки в конец текста richTextBoxMainOut.ScrollToCaret(); // Прокрутка текстового поля к каретке portExist = false; // Сбрасываем найденый порт } catch (Exception ex) { richTextBoxMainOut.AppendText(DateTime.Now.ToString("G") + ": Невозможно открыть последовательный порт: " + ex.Message + Environment.NewLine); // Вывод в лог сообщения с указанием текущей даты и времени richTextBoxMainOut.SelectionStart = richTextBoxMainOut.Text.Length; // Перенос каретки в конец текста richTextBoxMainOut.ScrollToCaret(); // Прокрутка текстового поля к каретке } } else { richTextBoxMainOut.AppendText(DateTime.Now.ToString("G") + ": Центральный узел системы не подключен к компьютеру, подключите центральный узел и выполните настройку программы" + Environment.NewLine); // Вывод в лог сообщения с указанием текущей даты и времени richTextBoxMainOut.SelectionStart = richTextBoxMainOut.Text.Length; // Перенос каретки в конец текста richTextBoxMainOut.ScrollToCaret(); // Прокрутка текстового поля к каретке } // Проверяем открыт ли последовательный порт if (serialPortUART.IsOpen) { buttonOpenClose.Text = "Закрыть порт"; // Если порт открыт выводим на кнопке надпись о закрытии порта } else { buttonOpenClose.Text = "Открыть порт"; // Если порт закрыт выводим на кнопке надпись об открытии порта } }
/// <summary> /// Обработчик нажатия кнопки "Сохранить" /// </summary> /// <param name="sender">Отправитель события</param> /// <param name="e">Аргументы события</param> private void buttonSave_Click(object sender, EventArgs e) { SerialPortSettings.WriteSettings(comboBoxPortName.Items[comboBoxPortName.SelectedIndex], comboBoxParity.Items[comboBoxParity.SelectedIndex], comboBoxStopBits.Items[comboBoxStopBits.SelectedIndex], comboBoxBaudRate.Items[comboBoxBaudRate.SelectedIndex], comboBoxDataBits.Items[comboBoxDataBits.SelectedIndex], comboBoxBufferSize.Items[comboBoxBufferSize.SelectedIndex]); // Запись новых настроек Close(); // Закрытие окна }
public FormSettings() { InitializeComponent(); // ---------- Инициализация начальных значений ---------- comboBoxPortName.SelectedIndex = comboBoxPortName.Items.IndexOf(SerialPortSettings.GetStringPortName()); comboBoxParity.SelectedIndex = comboBoxParity.Items.IndexOf(SerialPortSettings.GetStringParity()); comboBoxStopBits.SelectedIndex = comboBoxStopBits.Items.IndexOf(SerialPortSettings.GetStringStopBits()); comboBoxDataBits.SelectedIndex = comboBoxDataBits.Items.IndexOf(SerialPortSettings.GetStringDataBits()); comboBoxBaudRate.SelectedIndex = comboBoxBaudRate.Items.IndexOf(SerialPortSettings.GetStringBaudRate()); comboBoxBufferSize.SelectedIndex = comboBoxBufferSize.Items.IndexOf(SerialPortSettings.GetStringBufferSize()); // ------------------------------------------------------ }
private void buttonSettings_Click(object sender, EventArgs e) { if (serialPortUART.IsOpen) { serialPortUART.Close(); } FormSettings formSettings = new FormSettings(); formSettings.ShowDialog(); // Отображение окна для настройки последовательного порта serialPortUART = SerialPortSettings.ReadSettings(serialPortUART); // Применение новых настроек try { serialPortUART.Open(); } catch (System.IO.IOException ex) { richTextBoxMainOut.AppendText("Невозможно открыть последовательный порт: " + ex.Message + Environment.NewLine); } }
/// <summary> /// Обработчик нажатия кнопки "Настройки" /// </summary> /// <param name="sender">Отправитель события</param> /// <param name="e">>Аргументы события</param> private void buttonSettings_Click(object sender, EventArgs e) { // Проверка открыт ли порт if (serialPortUART.IsOpen) { serialPortUART.Close(); // Закрытие порта если он открыт buttonOpenClose.Text = "Закрыть порт"; // Если порт открыт выводим на кнопке надпись о закрытии порта } FormSettings formSettings = new FormSettings(); // Создание нового экземпляра окна настроек formSettings.ShowDialog(); // Отображение окна для настройки последовательного порта serialPortUART = SerialPortSettings.ReadSettings(serialPortUART); // Применение новых настроек try { serialPortUART.Open(); // Попытка открытия последовательного порта с новыми настройками richTextBoxMainOut.AppendText(DateTime.Now.ToString("G") + ": Центральный узел подключен, узел расположен на порту " + serialPortUART.PortName + Environment.NewLine); // Вывод в лог сообщения с указанием текущей даты и времени richTextBoxMainOut.SelectionStart = richTextBoxMainOut.Text.Length; // Перенос каретки в конец текста richTextBoxMainOut.ScrollToCaret(); // Прокрутка текстового поля к каретке } catch (Exception ex) { richTextBoxMainOut.AppendText(DateTime.Now.ToString("G") + ": Невозможно открыть последовательный порт: " + ex.Message + Environment.NewLine); // Вывод в лог сообщения с указанием текущей даты и времени richTextBoxMainOut.SelectionStart = richTextBoxMainOut.Text.Length; // Перенос каретки в конец текста richTextBoxMainOut.ScrollToCaret(); // Прокрутка текстового поля к каретке } // Проверяем открыт ли последовательный порт и необходимо ли изменить надпись на кнопке if (serialPortUART.IsOpen && buttonOpenClose.Text.Equals("Открыть порт")) { buttonOpenClose.Text = "Закрыть порт"; // Если порт открыт выводим на кнопке надпись о закрытии порта } else if (!serialPortUART.IsOpen && buttonOpenClose.Text.Equals("Закрыть порт")) { buttonOpenClose.Text = "Открыть порт"; // Если порт закрыт выводим на кнопке надпись об открытии порта } }