Нужна помощь в создании строки - PullRequest
0 голосов
/ 26 августа 2010

Я новичок в Ruby и мне нужно взять 10-символьные серийные данные RFID-токена (из Arduino и Parallax RFID-ридера) и преобразовать их в строку.Не похоже, что что-то добавляется в строку.Я получаю данные токена 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 голосов
/ 27 августа 2010

Я не могу сказать, что происходит в вашем коде, но я вижу одно: вы постоянно назначаете rfid_token [0]. Строка не будет расти таким образом, вы просто заменяете первый символ снова и снова. Вместо этого вы захотите добавить к строке, как это.

rfid_token << sp_char

Я сделал несколько вещей с Arduino и Linux, о которых вы можете прочитать о здесь . Я просто использовал, чтобы читать строки. В зависимости от того, как Arduino отправляет данные, вы также можете сделать это.

0 голосов
/ 27 августа 2010

Вот код, который будет работать:

 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
0 голосов
/ 26 августа 2010

для создания строки с использованием getch это что-то вроде

a = ""; a << 36 # => "$"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...