读取I / O(在本例中为串行端口)而不阻塞(Ruby)

时间:2012-11-28 10:51:52

标签: ruby io

我正在尝试使用串口gem读取Ruby中的串口。问题是,有时候没有数据需要读取,当我告诉程序读取串口时,程序挂起......我尝试使用sp.readsp.readline和{{1 }};它们都会导致程序阻塞(在Windows下)。

有人知道是否有办法不会导致阻塞?基本上,我希望如果没有数据要读,

读取结果为零。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用IO#read_nonblock

begin
  result = io.read_nonblock(maxlen)
rescue IO::WaitReadable # this is raised when there's no data in the stream
  # don't wait and return nil
  result = nil
end