需要帮助创建一个字符串

时间:2010-08-26 18:11:39

标签: ruby

我是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

3 个答案:

答案 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