Mulfarion
@Mulfarion
НЛО

Как сделать доступным открытый COM порт внутри всего проекта wpf C#?

Доброго времени суток!

Прошу помощи в понимании, а может и в решении интересующего меня вопроса.

Я еще совсем зеленый в программировании (3 день изучения), до этого писал только на php сайты. Делаю небольшую программку (wpf) для работы с COM портом, есть главное окно, в коде которого открывается нужный COM порт и есть консоль, куда выводится ответ и поле с кнопкой для отправки команд. Появилась необходимость перенести консоль и поле ввода с кнопкой в другое окно. Т.е. в главном окне открыть порт, а в другом окне с ним работать.

MainWindow

SerialPort currentSerial = new SerialPort();
currentSerial.PortName = port_combobox.Text;
currentSerial.BaudRate = 115200;
currentSerial.Open(); 

ConsoleWindow

private void send_button_Click(object sender, RoutedEventArgs e)
{
      currentSerial.WriteLine(msg_textbox.Text); //Собственно здесь надо как-то инициализировать открытый порт, ругается что имя "currentSerial" не существует в данном контексте
}
  • Вопрос задан
  • 538 просмотров
Пригласить эксперта
Ответы на вопрос 3
petermzg
@petermzg
Самый лучший программист
Так напишите отдельный класс для работы с COM портом, создайте его инстанс и в конструкторы форм передавайте.
Ответ написан
Комментировать
Kubatai
@Kubatai
Техник-программист
Самый простой способ в лоб - сделать статический публичный класс с COM-портом и обернуть в методы основные инструменты работы с ним(по желанию).
public static class COM
{
	public static SerialPort CurrentSerial {get; private set; }

	public static InitSerialPort(string text, int baudRate)
	{
		CurrentSerial = new SerialPort();
		CurrentSerial.PortName = text;
		CurrentSerial.BaudRate = baudRate;
		CurrentSerial.Open(); 
	}
}


Если у вас много портов, то используйте IList;
Ответ написан
Комментировать
yarosroman
@yarosroman Куратор тега C#
C# the best
Dependency Injection вам в помощь, у многих IoC контейнеров есть возможность создавать синглтоны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы