Отключенный кабель последовательного порта

Никто не заботится о вашем коде

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

8
задан hlovdal 7 August 2009 в 10:50
поделиться

5 ответов

В отличие от USB, последовательный порт не имеет встроенного способа обнаружения физического изменения статуса соединения. Ограниченная форма сигнализации «устройство готово / не готово» может быть выполнено с использованием некоторых контактов (а именно DTR, DSR и иногда DCD), но это не похоже на то, что вы ищете (это не встроено в к RS232 - устройство должно его поддерживать, вы в основном используете его для разговора с модемами.)

Итак, короче: нет, в общем случае. Если вы знаете / можете запрограммировать устройство, с которым пытаетесь связаться, и вы знаете, что оно будет поддерживать определенную линию на высоком уровне (например), вы можете опросить его, ища, чтобы эта линия поднялась на высокий уровень. Но если вы подключаете устройство, которое не запрограммировано на выполнение чего-то такого предсказуемого, то на самом деле нет никакого способа сказать это. (Некоторые устройства могут поддерживать высокий уровень DSR по умолчанию, но это

14
ответ дан 5 December 2019 в 08:54
поделиться

Большинство последовательных устройств имеют тот или иной тип ответа подтверждения на запрос. просто отправьте простой запрос и дождитесь ответа. Если вы его не понимаете, устройство отсутствует или, по крайней мере, не отвечает.

2
ответ дан 5 December 2019 в 08:54
поделиться

Я не пробовал, но посмотрите на событие SerialPort.PinChanged и DsrChanged .

Когда подключено какое-либо нормальное устройство к последовательному порту и включен, тогда я ожидаю, что будет подтвержден вывод DSR порта; и наоборот, если это устройство отключено от сети или когда оно выключено, я ожидаю, что состояние вывода DSR изменится / упадет.


Обычное значение различных контактов:

  • DSR: устройство подключено и включен
  • CTS: устройство готово к приему данных (оно может быть отключено, даже когда устройство подключено, например, когда устройство имеет ограниченный встроенный буфер и использует этот вывод для передачи данных управления потоком с ПК )
  • DCD:
1
ответ дан 5 December 2019 в 08:54
поделиться

вы можете обнаружить доступные последовательные порты, вы можете попытаться связаться с ними внутри блока 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
}
0
ответ дан 5 December 2019 в 08:54
поделиться

Это будет зависеть от того, какое устройство вы подключаете с помощью какого кабеля.

Лучше всего попробовать обработать обработчик событий PinChanged.

Некоторые устройства будут повышать DSR, когда подключены и включены, другие CTS, другие будут использовать их для подтверждения связи.

0
ответ дан 5 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: