2010-12-28 5 views
0

Ich arbeite an einem Projekt, das einen RFID-Leser beteiligt. Ich habe eine einfache .rb-Datei geschrieben, die das RFID-Tag liest und die UID ausgibt. Nun möchte ich diese Daten in meine Ruby on Rails-Anwendung (2.3.x) bringen. Ich habe wirklich keine Ahnung, wie ich das machen soll. Ein anderes Problem ist, dass ich die Daten an bestimmten Punkten benötige, zum Beispiel: ich registriere einen Benutzer und ich möchte die UID des RFID-Tags diesem Benutzer zuordnen. Wie mache ich das? Muss ich die Eventmaschine benutzen? oder benötigen Sie einfach die .rb-Datei in meiner Anwendung?Daten von IRB-Datei an Ruby auf Schienen senden

.rb Skript (das Skript gibt das uid. Wie sende ich es meinem ror (2.3.x) app?

require 'rubygems' 
require 'nfc' 
NFC.instance.find do |tag| 
    p tag.uid 
end 

Dank.

+0

in der Regel diese Art von Geräten haben eine Möglichkeit, die Tastatur und geben Sie den Code direkt auf die Benutzeroberfläche zu ersetzen, ohne Prozess benötigt. Selbst wenn Sie in Ihrem Fall eine serverseitige Verarbeitung durchführen müssen, müssen Sie höchstwahrscheinlich die ursprünglichen Daten an das Benutzerformular senden. –

Antwort

2

Es scheint, dass Sie zwei Teile Ihre Anwendung - ein Web-fähiges Frontend für Ihren Dienst und ein Hardware-Frontend, das einen Benutzer mit einem physischen Gerät verbindet Ich liege möglicherweise falsch, aber ich bezweifle, dass Sie bei der Bereitstellung der App erwarten, dass der Benutzer zu Ihrem Gerät gelangt Rechenzentrum zum Einlesen ihres Etiketts!

Ich kann eine offensichtliche sep sehen - Sie benötigen ein RFID-Lesegerät, das sich physisch in der Nähe des Benutzers befindet, damit sie das RFID-Tag vor dem Lesegerät schwenken und eine Art von Aktion ausführen können. In einem zweiten Teil ist der Benutzer zu Hause und hat keinen Zugriff auf das RFID Leser.

Ich würde vorschlagen, diese beiden Teile als separate Anwendungen zu halten und einige Logik, die mehrere RFIDs zu einem Benutzer verbindet. In Rails/Active Record haben Sie möglicherweise ein Benutzermodell und eine has_many-Zuordnung zu einem Tag.

Sie müssen zwei Anwendungen erstellen - Ihre Rails-App und eine leichtgewichtige Desktop-Anwendung. Die Desktop-Anwendung wird lokal auf Ihrem 'Scan'-Computer ausgeführt. Um damit anzufangen könnte ein Daemon sein: Sieh dir die Daemons, Daemonize und Daemon Kits an.

In Ihrer Rails-App erstellen Sie dann eine Route zum Erstellen der Zuordnung zwischen einem Benutzer und einem RFID-Tag. Z.B. POST an/users /: id/tags

Die kleine Anwendung, die Sie oben geschrieben haben, muss einen POST an diese Adresse senden. Aber woher weiß die Anwendung, mit welchem ​​Benutzernamen das Tag verknüpft werden soll? Ohne genau zu wissen, was Sie tun, kann ich nicht beraten. Nach dem Erkennen eines RFID können Sie einfach nach dem Benutzernamen (STDIN.gets) fragen und ihn in der Befehlszeile eingeben oder in einer komplizierteren Anwendung eine Art Token generieren, das eindeutig ist und über ein GET von der Scan-Anwendung eingelesen wird .

Eg. Man könnte dies als Daemon ausführen, um eine RFID-Tag mit einem Benutzer zuzuordnen:

require 'rubygems' 
require 'nfc' 
require 'httparty' 

class TagAssociator 
    include HTTParty 
    base_uri 'example.com' 
end 

NFC.instance.find do |tag| 
    puts "What is your username?" 
    username = STDIN.gets 
    TagAssociator.post('/users/#{username}/tags', :query => {:uid => tag.uid}) 
end 
+0

Vielen Dank für Ihren Post, aber es ist für ein Schulprojekt, so dass der Benutzer tatsächlich in das Datenzentrum "gehen" wird. So könnte ich Ihr Beispiel verwenden, aber gibt es einen Weg ohne http-Post zu verwenden? Damit ich die uid vom Tag direkt in meinem Controller bekommen kann? –