Как правильно установить тайм-аут при обмене данными с устройством с последовательным портом? - PullRequest
0 голосов
/ 07 апреля 2009

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

У меня вопрос, если устройство не включено, источник питания отключен или устройство не отвечает на команды в течение длительного времени, как я узнаю? В моей программе я написал для нормального потока выполнения. Но если долгое время нет ответа, программа долго ждет. Я использовал таймер, но он не работает должным образом.

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 3 ]

4 голосов
/ 07 апреля 2009

Если вы используете объект «SerialPort» в C #, то вы можете использовать свойства ReadTimeOut и WriteTimeOut.

0 голосов
/ 07 апреля 2009

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

Если вы используете неизвестные кабели и общаетесь с устройствами, над которыми у вас нет контроля, вам придется использовать .Timeout.

0 голосов
/ 07 апреля 2009

У вас есть два варианта:

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

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

...