C#: тайм-аут на SerialPort. Открытый?

@Alex ай это - лентяй. Что, если в Вашем iframe у Вас был документ HTML, который был похож:

<html>
  <head>
    <meta http-equiv="refresh" content="0;url=/pdfs/somepdf.pdf" />
  </head>
  <body>
  </body>
</html>

Определенно взлом, но это могло бы работать на Firefox. Хотя интересно, стреляло ли событие загрузки слишком скоро в этом случае.

6
задан gdario 8 November 2009 в 12:24
поделиться

3 ответа

Добавьте это в свой код:

commPort = new SerialPort();

commPort.ReadTimeout = 1000000;
commPort.WriteTimeout = 1000000;

И я предлагаю вам увидеть SerialPort.Open Method

1
ответ дан 17 December 2019 в 00:11
поделиться

Из MSDN
Для каждого объекта SerialPort может существовать только одно открытое соединение.

Лучшая практика для любого приложения - подождать некоторое время после вызова метода Close перед попыткой вызвать метод Open, поскольку порт не может быть закрыт мгновенно.

Когда вы вызываете Close (), этому рабочему потоку требуется время, чтобы замедлить темп и выйти. Необходимое количество времени не указано, и вы не можете проверить, что это было сделано. Все, что вы можете сделать, это подождать хотя бы одну секунду, прежде чем снова вызвать Open ().

3
ответ дан 17 December 2019 в 00:11
поделиться

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

Если да, то вы должны поймать TimeoutException и продолжить цикл. например, КОД MSDN

public static void Read()
{
    while (_continue)
    {
        try
        {
            string message = _serialPort.ReadLine();
            Console.WriteLine(message);
        }
        catch (TimeoutException) { }
    }
} 
1
ответ дан 17 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

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