pogcat5000 Ответов: 2

Отображение сообщения об ошибке при отключении последовательного com-устройства от компьютера


Привет ребята

Я создаю приложение WinForms для доступа к последовательному порту(я использую arduino nano)

Это просто пользовательский интерфейс для изменения портов, установки скорости передачи данных и т. д. Я в основном следил за учебниками youtube, и это почти сделано.

Но теперь я хотел бы добавить функцию, в которой MessageBox появляется, когда последовательное com - устройство отключается от компьютера. Я предполагаю, что я должен использовать событие PinChanged? Но как мне это написать?

Спасибо за чтение! Любой ответ приветствуется!

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

private void SerialPinChangedEventHandler(object sender, SerialPinChangedEventArgs e)
        {
            if (SerialPinChange)
            {
                MessageBox.Show("Hardware disconnected", "Serial Port interface", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
        }

2 Ответов

Рейтинг:
1

OriginalGriff

Вы не можете определенно обнаружить физическое разъединение, если только какой - то сигнал не удерживается аппаратным обеспечением на другом конце провода - а большинство проводов этого не делают, они используют "локальную петлю", физически подключая RTS к CTS на штекере, например, если они даже делают это-многие последовательные интерфейсы буквально просто имеют физические провода, подключенные к контактам 2, 3 и 5 (TD, RD и земля) в качестве минимального требуемого соединения.

Начните с просмотра ваших фактических физических соединений: если вы подключены через USB, вы можете сказать, когда штекер отключен с вашего конца, но как только он доберется до фактической проводки RS232 / RS485, вам нужно точно знать, что к чему подключено от конца до конца.

Более простой способ, вероятно, состоит в том, чтобы поместить "сторожевой таймер" в программное обеспечение, чтобы обнаружить, когда не было никакой связи между ними в течение определенного периода времени, и попытаться запросить удаленное устройство, чтобы увидеть, отвечает ли оно. (Большинство протоколов включают в себя: "вы живы?" запрос обратного вызова для этой цели, но вам придется посмотреть в руководстве по связи для фактического устройства, чтобы проверить)


pogcat5000

Я вижу, поэтому физическая связь не может быть обнаружена...
Попробую заглянуть в таймер. Спасибо!

OriginalGriff

Всегда пожалуйста!

Рейтинг:
0

Sandeep Mewara

Вы можете использовать следующие две информации:
Последовательный порт.Событие PinChanged (Системы.ИО.Порта) | Майкрософт Документы[^]
Перечисление SerialPinChange (System.IO.Ports) | Microsoft Docs[^]

Похожий вопрос задали и ответили: Как определить, когда оборудование, подключенное к последовательному com-порту, удалено (отключено)?[^].

Обсуждался другой подход здесь[^] где вы можете использовать SerialPort.GetPortNames() возвращайте только те порты, которые доступны. Затем сделайте вывод.


pogcat5000

Я уже читал эти документы заранее, но все еще не уверен...
Не знал, что об этом спрашивали раньше, извините всех
Попробуем взглянуть на альтернативный подход. Спасибо!