Никто не заботится о вашем коде
Если вы не работаете над проектом по государственной проверке безопасности и не занимаетесь финансами, никому нет дела до того, над чем вы работаете за пределами вашей компании / клиентской базы. Никто не перехватывает пакеты и не пытается взломать ваш компьютер, чтобы прочитать ваш исходный код. Это не означает, что мы должны заботиться о безопасности, потому что определенно есть ряд людей, которые просто хотят нанести общий ущерб и разрушить вашу тяжелую работу или получить доступ к хранимой информации вашей компании, такой как данные кредитной карты или идентификационные данные в масса. Тем не менее, я думаю, что люди чрезмерно обеспокоены тем, что другие люди получают доступ к вашему исходному коду и воспринимают ваши идеи.
В отличие от USB, последовательный порт не имеет встроенного способа обнаружения физического изменения статуса соединения. Ограниченная форма сигнализации «устройство готово / не готово» может быть выполнено с использованием некоторых контактов (а именно DTR, DSR и иногда DCD), но это не похоже на то, что вы ищете (это не встроено в к RS232 - устройство должно его поддерживать, вы в основном используете его для разговора с модемами.)
Итак, короче: нет, в общем случае. Если вы знаете / можете запрограммировать устройство, с которым пытаетесь связаться, и вы знаете, что оно будет поддерживать определенную линию на высоком уровне (например), вы можете опросить его, ища, чтобы эта линия поднялась на высокий уровень. Но если вы подключаете устройство, которое не запрограммировано на выполнение чего-то такого предсказуемого, то на самом деле нет никакого способа сказать это. (Некоторые устройства могут поддерживать высокий уровень DSR по умолчанию, но это
Большинство последовательных устройств имеют тот или иной тип ответа подтверждения на запрос. просто отправьте простой запрос и дождитесь ответа. Если вы его не понимаете, устройство отсутствует или, по крайней мере, не отвечает.
Я не пробовал, но посмотрите на событие SerialPort.PinChanged и DsrChanged .
Когда подключено какое-либо нормальное устройство к последовательному порту и включен, тогда я ожидаю, что будет подтвержден вывод DSR порта; и наоборот, если это устройство отключено от сети или когда оно выключено, я ожидаю, что состояние вывода DSR изменится / упадет.
Обычное значение различных контактов:
вы можете обнаружить доступные последовательные порты, вы можете попытаться связаться с ними внутри блока try ... catch.
Это пример обнаружения портов в C #
using System;
using System.Collections.Generic;
using System.IO.Ports;
public class MyClass
{
public static void Main()
{
string[] sPorts = SerialPort.GetPortNames();
foreach(string port in sPorts)
WL(port);
RL();
}
#region Helper methods
private static void WL(object text, params object[] args)
{
Console.WriteLine(text.ToString(), args);
}
private static void RL()
{
Console.ReadLine();
}
private static void Break()
{
System.Diagnostics.Debugger.Break();
}
#endregion
}
Это будет зависеть от того, какое устройство вы подключаете с помощью какого кабеля.
Лучше всего попробовать обработать обработчик событий PinChanged.
Некоторые устройства будут повышать DSR, когда подключены и включены, другие CTS, другие будут использовать их для подтверждения связи.