我正在尝试使用串行端口 gem 读取 Ruby 中的串行端口。问题是有时没有数据要读取,当我告诉程序读取串行端口时,程序挂起......我试过使用sp.read
,sp.readline
和sp.readlines
; 它们都会导致程序阻塞(在 Windows 下)。
有谁知道是否有一种不会导致阻塞的方法?基本上,我希望如果没有要读取的数据,
读取结果为零。
谢谢。
您可以使用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