0

我正在从事一个涉及 RFID 阅读器的项目。我编写了一个简单的 .rb 文件来读取 RFID 标签并输出 uid。我现在要做的是将这些数据获取到我的 Ruby on Rails 应用程序(2.3.x)。我真的不知道该怎么做。另一个问题是我需要特定点的数据,例如:我注册了一个用户,我希望将 RFID 标签的 uid 与该用户相关联。我怎么做?我必须使用事件机器吗?还是简单地在我的应用程序中需要 .rb 文件?

.rb 脚本(此脚本输出 uid。如何将其发送到我的 ror (2.3.x) 应用程序?

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

谢谢。

4

1 回答 1

2

您的应用程序似乎有两个部分 - 一个支持 Web 的服务前端,以及一个将用户与物理设备相关联的硬件前端。我可能是错的,但我怀疑当您部署应用程序时,您会期望用户走到您的数据中心扫描他们的标签!

我可以看到一个明显的分离——你需要在用户附近有一个 RFID 阅读器,这样他们就可以在阅读器前面挥动 RFID 标签并执行某种操作,然后是用户在家并且拥有的第二部分无法访问 RFID 阅读器。

我建议将这两个部分保留为单独的应用程序,并具有一些将多个 RFID 与用户相关联的逻辑。在 Rails / Active Record 中,您可能有一个用户模型和一个与标签的 has_many 关联。

您需要创建两个应用程序 - 您的 Rails 应用程序和一个轻量级桌面应用程序。桌面应用程序在您的“扫描”机器上本地运行。首先可能是一个守护进程:查看“daemons”、“daemonize”和“daemon-kit” gems。

然后,在您的 Rails 应用程序中,您为创建用户和 RFID 标签之间的关联创建路线。例如。发布到 /users/:id/tags

您在上面编写的小型应用程序必须向该地址发送 POST。但是应用程序如何知道将标签与哪个用户名关联?在不知道你在做什么的情况下,我无法提供建议。识别出 RFID 后,您只需询问用户名 ( STDIN.gets ) 并在命令行中输入,或者在更复杂的应用程序中生成某种唯一的令牌,并通过扫描应用程序的 GET 读取.

例如。您可以将其作为守护程序运行以将 RFID 标签与用户关联:

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
于 2010-12-28T18:23:28.460 回答