Как найти последовательные порты, которые получают ответ после отправки MSG с помощью C #? - PullRequest
0 голосов
/ 13 апреля 2010

Цель состоит в том, чтобы найти, какой последовательный порт физически связан с другой машиной. Я хочу найти мою систему, чтобы найти доступные последовательные порты и отправить тестовое сообщение, используя все порты, и ждать ответа. И получить номера портов, которые когда-либо порты получают ответ, подключен к другой машине. Как сделать?? Благодарю.

Ответы [ 3 ]

3 голосов
/ 13 апреля 2010

Метод SerialPort.GetPortNames () возвращает массив имен COM-портов всех доступных последовательных портов. Вы можете повторить это и попытаться открыть () их. Ожидается сбой, порт может быть уже открыт другой программой.

Вы не хотите отправлять что-то на устройство, которое этого не ожидает. Использование свойства DsrHolding является разумным тестом, чтобы проверить, подключено ли устройство, которое включено.

Твой конечный заклятый враг будет собственностью Бодрата. Вы не можете угадать правильное значение. Последовательные порты слишком примитивны, чтобы поддерживать обнаружение устройств в режиме plug-and-play. Избегайте использования чего-либо, что не может работать надежно, разрешите пользователю настраивать вашу программу с нужными вам настройками. Это нормальная практика.

0 голосов
/ 13 апреля 2010

Метод SerialPort.GetPortNames () является статическим методом для SerialPort. Вы уверены, что связь между ними имеет управление потоком?

0 голосов
/ 13 апреля 2010

Используйте System.IO.Ports.

public static void OnSerialDataReceived(object sender, 
                                        SerialDataReceivedEventArgs args)
{
  string data = ComPort.ReadExisting();
  Console.Write(data.Replace("\r", "\n"));
}


private static void InitializeComPort(string port, int baud)
{
  ComPort = new SerialPort(port, baud);
  // ComPort.PortName = port;
  // ComPort.BaudRate = baud;
  ComPort.Parity = Parity.None;
  ComPort.StopBits = StopBits.One;
  ComPort.DataBits = 8;
  ComPort.Handshake = Handshake.None;
  ComPort.DataReceived += OnSerialDataReceived;
  ComPort.Open();
}

больше в блоге Марка Михаэлиса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...