我正在尝试使用串口gem读取Ruby中的串口。问题是,有时候没有数据需要读取,当我告诉程序读取串口时,程序挂起......我尝试使用sp.read
,sp.readline
和{{1 }};它们都会导致程序阻塞(在Windows下)。
有人知道是否有办法不会导致阻塞?基本上,我希望如果没有数据要读,
读取结果为零。
感谢。
答案 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