Member 12941572 Ответов: 2

Как подключить последовательный порт в C# для проекта


всем привет,

я создал простой графический интерфейс, который связывает последовательный порт, если проект содержит одну веб-форму, он читает текст и выдает вывод (цикл назад) и выполняется идеально , но проблема в том, что когда у меня есть несколько форм в моем проекте, я не могу подключить порт. (Например: на первой странице у меня есть несколько кнопок, если мы нажмем на кнопку, она перейдет на следующую страницу, и на этой странице Я хочу сообщить порт). как я могу связаться с портом serail на следующих страницах

заранее спасибо

Что я уже пробовал:

я попробовал поставить последовательный разъем для каждой формы и но он не подключен

CHill60

Не видя вашего кода я даже не мог начать догадываться

PIEBALDconsult

Это не помогает. Пожалуйста, поместите соответствующие части (а не все) в свой вопрос-улучшите вопрос.

[no name]

Вы используете один и тот же объект для связи независимо от того, какая форма отображается.

PIEBALDconsult

У вас не должно быть коммуникационного кода в вашем графическом коде. Он должен быть в своем классе. Создайте экземпляр одного объекта этого класса и разрешите каждой форме использовать этот экземпляр.

Member 12941572

ПРОБЛЕМА РЕШЕНА СПАСИБО ВСЕМ

2 Ответов

Рейтинг:
16

OriginalGriff

Как только вы открываете сериальный порт, он блокируется, и вы не можете открыть второй экземпляр на том же оборудовании - только одна "вещь" одновременно может управлять портом. Поэтому создайте его в "самой внешней" из ваших форм и передайте экземпляр SerialPort (или его инкапсулирующий класс, если вы следуете указаниям PIEBALDconsult) каждой из форм по мере ее создания - самый простой способ сделать это-использовать конструктор, который принимает экземпляр и передает его при создании формы. (Вы можете использовать private конструктор, который не принимает никаких параметров, чтобы дизайнер был доволен, но гарантирует, что форма не может быть создана в вашем приложении без предоставления экземпляра).


Рейтинг:
0

Dave Kreskowiak

Проблема в том, что ваш экземпляр формы держит последовательный порт открытым. Только один процесс и один экземпляр SerialPort могут иметь открытый порт в любой момент времени. Итак, первый экземпляр вашей формы 1 получает последовательный порт. Если он не закроет порт, каждый новый экземпляр не сможет открыть порт. Он уже открыт первым экземпляром вашей формы.

Это действительно плохая идея-иметь код последовательного порта в вашем коде формы. Он должен быть в своем собственном классе, управляя подключением к последовательному порту и предоставляя методы, чтобы любой вызывающий объект (ваши экземпляры формы) мог сказать ему отправить данные или получить от него уведомления о том, что данные были получены.