тайм-аут с использованием TCL - PullRequest
2 голосов
/ 05 марта 2010

Есть ли способ в TCL заключить кусок кода в блок тайм-аута?Под этим я подразумеваю, что блок выйдет после определенного времени ожидания, даже если выполнение не завершено.Например: -

timeout (interval) {
#wait for socket connection here

}

Если за интервал времени соединение не установлено, блок завершается.

Спасибо и С уважением, Анджали

1 Ответ

5 голосов
/ 05 марта 2010

Анджали, Вы ищете vwait.

Вот пример: подождите пять секунд для подключения к серверному сокету, в противном случае закройте сокет и продолжите выполнение сценария:

# Initialise the state
after 5000 set state timeout
set server [socket -server accept 12345]
proc accept {args} {
   global state connectionInfo
   set state accepted
   set connectionInfo $args
}

# Wait for something to happen
vwait state

# Clean up events that could have happened
close $server
after cancel set state timeout

# Do something based on how the vwait finished...
switch $state {
   timeout {
      puts "no connection on port 12345"
   }
   accepted {
      puts "connection: $connectionInfo"
      puts [lindex $connectionInfo 0] "Hello there!"
   }
}

Редактировать Вам нужно будет связаться с вашим устройством UART, используя неблокирующий ввод / вывод .

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