我正在尝试使用Ruby对串口进行简单的读写操作。
以下是我目前拥有的代码。我使用了 serialport
gem。
require 'rubygems'
require 'serialport'
ser = SerialPort.new("/dev/ttyACM0", 9600, 8, 1, SerialPort::NONE)
ser.write "ab\r\n"
puts ser.read
但是当运行该脚本时,它会卡住。
我正在尝试使用Ruby对串口进行简单的读写操作。
以下是我目前拥有的代码。我使用了 serialport
gem。
require 'rubygems'
require 'serialport'
ser = SerialPort.new("/dev/ttyACM0", 9600, 8, 1, SerialPort::NONE)
ser.write "ab\r\n"
puts ser.read
但是当运行该脚本时,它会卡住。
我也遇到了这个问题。问题出在使用ser.read命令,它告诉Ruby一直读取并因此使脚本挂起。解决方法是只读取特定数量的字符。
例如:
ser.readline(5)
回应用户user968243的话,ser.read调用会一直等待EOF。如果您的设备没有发送EOF,则会永远等待。建议您只读取一定数量的字符。
您的设备可能会在每个响应结束时添加换行符。请尝试读取到下一个回车符:
response = ser.readline("\r")
response.chomp!
print "#{response}\n"
我遇到了同样的问题并找到了解决方法。使用Ruby IO方法readlines。
puts ser.readlines