Я общаюсь с клавиатурой RS232 с ЖК-дисплеем. При каждом нажатии клавиши я пишу клавишу, которая была нажата на ЖК-дисплее, чтобы обеспечить обратную связь с пользователем.
Если в течение 10 секунд не будет нажата ни одна клавиша, я бы хотел отказаться от ожидания ввода.
Я написал некоторый код, который прервется по таймауту, если пользователь не введет многосимвольное значение в течение 10 секунд. Я бы предпочел дать ему еще 10 секунд для завершения ввода после каждого нажатия клавиши. 1005 *
Возможно ли это с помощью timeout.rb
?
require 'rubygems'
require 'serialport'
require 'timeout'
sp = SerialPort.new('/dev/tty.usbserial', 9600, 8, 1, SerialPort::NONE)
sp.write("Input:")
begin
timeout(10) do
input = ""
sp.each_byte do |byte|
#call to increase timeout.rb timer would go here
input << byte.chr
sp.write("Input:" + input)
end
end
rescue Timeout::Error
puts "Timed out!"
exit
end
puts input