phpRPC + Ruby + Arduino = 遠端控制

來源:互聯網
上載者:User
phpRPC + Ruby + Arduino = 遠程式控制制LED開關(?)嗯,我知道這是個很無聊的Sample
關於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的資料夾

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.