我正在使用 Ruby 成功读取串行端口。串行数据来自带有 GSM 屏蔽的 Arduino,所以我从 GSM 屏蔽中获得了很多额外的字符串。为了过滤我想要的 SMS 消息,我尝试使用 start_with? 方法。我已经在 IRB 中对此进行了测试,它正确地返回了 true 或 false。
rb(main):006:0> 'Timedgf'.start_with? 'Time'
=> true
irb(main):007:0> 'AT'.start_with? 'Time'
=> false
当我不使用 start_with 时?所有的串行数据都来自包括 SMS。当我使用 start_with 时?如下面的代码所示,即使我发送以 Time 开头的内容,我也一无所获。我的代码如下:
require "rubygems"
require "serialport"
require "data_mapper"
#params for serial port
port_str = "/dev/ttyACM0"
baud_rate = 19200
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE
sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity)
loop do
sp_char = sp.getc
if sp_char.start_with? 'Time'
printf("%c", sp_char)
end
end
红宝石版本 1.9.3p194