Блокирует ли задержку получения данных - PullRequest
0 голосов
/ 09 сентября 2011

Я работаю над проектом в Visual Studio C #.

Я собираю данные с устройства, подключенного к ПК через последовательный порт.Сначала я отправляю запрос команды, и жду ответа.После отправки команды запроса устройство реагирует на задержку в 1 секунду.Дело в том, что устройство не может быть достигнуто и иногда может не реагировать.Чтобы дождаться ответа (если есть) и не отправлять следующую команду запроса данных раньше, я делаю задержку с помощью: System.Threading.Thread метода.

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

Используемая мной функция задержки:

    private void Delay(byte WaitMiliSec)
    {
        // WaitTime here is increased by a WaitTimer ticking at every 100msec

        WaitTime = 0;
        while (WaitTime < WaitMiliSec)
        {
            System.Threading.Thread.Sleep(25);
            Application.DoEvents();
        }
    }

1 Ответ

2 голосов
/ 09 сентября 2011

нет - вы не потеряете данные - у последовательного порта есть собственный буфер, который вообще не зависит от вашего приложения.Операционная система и аппаратное обеспечение будут обрабатывать это для вашего.

Я бы предложил реорганизовать передачу / прием данных в свою собственную задачу / поток.Таким образом, вам не нужно Application.DoEvents();

Если вы опубликуете еще немного своего кода отправки / получения, я мог бы помочь вам в этом.

PS: мне кажется, что ваш кодвсе равно не будет работать (WaitTime всегда равно нулю), но я думаю, это просто фрагмент, верно?

...