phpRPC + Ruby + Arduino = 远程控制

phpRPC + Ruby + Arduino = 遠程控制LED開關(?)

嗯,我知道這是個很無聊的Sample :P
關於phpRPC與Arduino請自行 Google
觀看此demo之前請先安裝另外一篇所提到的 serialport 與另外一個 Gem 套件:phprpc

在這個範例中,我透過PHPRPC建立一個Server,並且透過RPC呼叫一些method去控制USB Serial Port
而在實現這個demo時,我們必須建立Server&Client兩端
底下是Source code:
複製內容到剪貼板
代碼:
# Server
#!/usr/bin/env ruby

require 'rubygems'
require 'serialport'
require 'phprpc'

class Cloud
  def initialize
    @@sp ||= SerialPort.new("/dev/cu.usb serial-A600bMiv", {:baudrate => 9600})
  end
  
  def write(color)
    @@sp.write("##{color}")
  end
  
  def close
    @@sp.close
  end
  
end

def randomColor
  r = rand(256).to_s(16)
  g = rand(256).to_s(16)
  b = rand(256).to_s(16)
  
  r = "0" + r if r.size == 1
  g = "0" + g if g.size == 1
  b = "0" + b if b.size == 1
  
  color = r+b+g
  cloud = Cloud.new
  cloud.write(color)
  "Color #{color} has been set."
end

def setColor(color)
  cloud = Cloud.new
  cloud.write(color)
  
  "Color #{color} has been set."
end

def setRGBColor(r,g,b)
  cloud = Cloud.new
  cloud.write((r+g+b).to_s)
  
  "Color #{(r+g+b)} has been set."
end

methods = %w"randomColor setColor setRGBColor"

server = PHPRPC::Server.new
server.debug = true
server.add(methods)
server.start

at_exit{
  cloud.close
}
複製內容到剪貼板
代碼:
# Client
#!/usr/bin/env ruby
require 'rubygems'
require 'phprpc'

rpc_url = "http://localhost:3000/"

client = PHPRPC::Client.new(rpc_url)

cmd = nil

while cmd = gets.chomp
  case cmd.downcase
  when "on"
    client.setColor("FFFFFF")
    puts "LEDs On"
  when "off"
    client.setColor("000000")
    puts "LEDs Off"
  when "rand", "random"
    puts client.randomColor
  when "setcolor"
    print "Please give me a color: "
    color = gets.chomp
    puts client.setColor(color)
  when "setrgbcolor"
    puts "Please give me the color red: "
    red = gets.chomp
    puts "Please give me the color green: "
    green = gets.chomp
    puts "Please give me the color blue: "
    blue = gets.chomp
    puts client.setRGBColor(red, green, blue)
  when "exit"
    exit
  end
end
接著,運行Server的方式:
引用:
ruby server.rb mongrel
你可以安裝Mongrel也可以安裝Thin,但我想大家都有Mongrel可以用
在啟動Mongrel若有發生錯誤,請在同目錄下建立一個叫做log的資料夾
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值