0

シリアルポートジェムを使用して、Ruby でシリアルポートを読み取ろうとしています。問題は、読み取るデータがない場合があり、プログラムにシリアルポートを読み取るように指示すると、プログラムがハングするsp.readことsp.readlineですsp.readlines... これらはすべて、プログラムをブロックします (Windows の場合)。

ブロッキングを引き起こさない方法があるかどうかは誰にもわかりませんか? 基本的に、読み取るデータがない場合は、

読み取り結果は nil です。

ありがとう。

4

1 に答える 1

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
于 2012-11-28T10:55:32.177 に答える