我是Ruby的新手,需要使用10个字符的rfid令牌串行数据(来自arduino和amp; parallax rfid reader)并将其转换为字符串。看起来没有任何东西被添加到字符串中。当我扫描令牌时,我在终端窗口中获取rfid令牌数据,如果这有帮助的话。
require 'rubygems'
require 'serialport'
#params for serial port
port_str = "/dev/tty.usbserial-A4000ORO"
baud_rate = 2400
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE
sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity)
rfid_token = String.new
while true do
sp_char = sp.getc
rfid_token[0] = sp_char
if sp_char
printf("%c", sp_char)
end
if rfid_token.size == 10
puts "full token"
end
end
puts rfid_token
答案 0 :(得分:0)
使用getch创建一个字符串,类似于
a = ""; a << 36 # => "$"
答案 1 :(得分:0)
我不知道你的代码中出了什么问题,但我看到的一件事是你不断分配给rfid_token [0]。字符串不会以这种方式增长,你只是一遍又一遍地替换第一个字符。相反,你会想要像这样附加到字符串。
rfid_token << sp_char
我已经使用Arduino和Linux做了一些关于here的内容。我只是用来读取字符串。根据Arduino发送数据的方式,您也可以这样做。
答案 2 :(得分:0)
这是一个可行的代码:
require 'rubygems'
require 'serialport'
#params for serial port
port_str = "/dev/tty.usbserial-A4000ORO"
baud_rate = 2400
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE
sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity)
rfid_token = ""
while true do
rfid_token << sp.getc
printf("%c", rfid_token[-1])
if rfid_token.size == 10
puts "full token"
break; #exits loop if you don't want to add more than 10 chars
end
end
puts rfid_token