neděle 29. září 2013

Little Wire a Ruby na MAC OS X

Aktuální firmware Little Wire ve verzi 1.2 v současné době oficiálně podporuje pouze C (dřívější firmware podporoval navíc Processing, C# a C++). Neoficiálně je však podporována Ruby knihovna littlewire.rb, která je funkční s aktuální verzí firmware Little Wire, ale nepodporuje zatím všechny funkce (například programování AVR procesorů). Tuto knihovnu udržuje @Bluebie a link na stažení je v odkazech na konci článku.

Mac OS X 10.8.x obsahuje nativně instalaci ruby 1.8.x, kterou je nutné pro správnou funkčnost littlewire.rb povýšit na verzi minimálně 1.9.1. Nejprve ověříme instalovanou verzi ruby pomocí příkazu

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

Pokud nemáme verzi 1.9.1 a vyšší provedeme upgrade ruby na vyšší verzi. Asi nejjednodušší cesta je použít RVM (“Ruby Version Manager”). Pokud rvm nemáme nainstalovaný, instalaci spustíme příkazem

$  \curl -L https://get.rvm.io | bash -s stable

 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   184  100   184    0     0    123      0  0:00:01  0:00:01 --:--:--   206
100 15779  100 15779    0     0   6919      0  0:00:02  0:00:02 --:--:-- 42302
Downloading RVM from wayneeseguin branch master
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   124  100   124    0     0    148      0 --:--:-- --:--:-- --:--:--   349
100 1082k  100 1082k    0     0   339k      0  0:00:03  0:00:03 --:--:--  662k

Upgrading the RVM installation in /Users/test/.rvm/
    RVM PATH line found in /Users/test/.bashrc /Users/test/.zshrc.
    RVM sourcing line found in /Users/test/.bash_profile /Users/test/.zlogin.
Upgrade of RVM in /Users/test/.rvm/ is complete.

Po úspěšné instalaci rvm si můžeme zobrazit dostupné verze Ruby.

rvm list known

Nyní spustíme samotnou instalaci poslední (stable) verze Ruby.

\curl -L https://get.rvm.io | bash -s -- --version latest

Samotná instalace Ruby neobsahuje knihovnu littlewire. Pomocí gem si vypíšeme instalované knihovny a případně vyhledáme potřebnou knihovnu na serveru.

$ gem list

*** LOCAL GEMS ***

$ gem search -r littlewire

*** REMOTE GEMS ***
littlewire (0.9.10)

Pokud knihovnu littlewire nemáme v naší instalaci musíme ji nainstalovat.

$ sudo gem install littlewire
Fetching: ffi-1.9.0.gem (100%)
Building native extensions.  This could take a while...
Successfully installed ffi-1.9.0
Fetching: libusb-0.3.4.gem (100%)
Building native extensions.  This could take a while...
Successfully installed libusb-0.3.4
Fetching: colorist-0.0.2.gem (100%)
Successfully installed colorist-0.0.2
Fetching: thor-0.18.1.gem (100%)
Successfully installed thor-0.18.1
Fetching: littlewire-0.9.10.gem (100%)
Successfully installed littlewire-0.9.10
Parsing documentation for colorist-0.0.2
Installing ri documentation for colorist-0.0.2
Parsing documentation for ffi-1.9.0
Installing ri documentation for ffi-1.9.0
Parsing documentation for libusb-0.3.4
unable to convert "\xCF" from ASCII-8BIT to UTF-8 for lib/libusb-1.0.0.dylib, skipping
unable to convert "\xA0" from ASCII-8BIT to UTF-8 for lib/libusb-1.0.a, skipping
unable to convert "\xCF" from ASCII-8BIT to UTF-8 for lib/libusb-1.0.dylib, skipping
Installing ri documentation for libusb-0.3.4
Parsing documentation for littlewire-0.9.10
Installing ri documentation for littlewire-0.9.10
Parsing documentation for thor-0.18.1
Installing ri documentation for thor-0.18.1
5 gems installed

Ruby library: littlewire.rb

Stručně řečeno littlewire.rb potřebuje minimálně Ruby verze 1.9.1 a instalovanou knihovnu littlewire. Nyní máme vše potřebné pro vyzkoušení přístupu z ruby na Little Wire. Pro oveření si uděláme malý testovací program vypisující verzi firmware Little Wire.

# program vypise verzi firmware Little Wire - bere prvni desticku zasunutou v USB portu 
require 'littlewire'
puts "Inicializuji pripojeni na LittleWire!"
wire = LittleWire.connect
puts "Verze fw je : "+ wire.version

Pokud program uložíme do souboru test.rb, můžeme následujícím příkazem soubor spustit a podívat se na výstup.

$ ruby test.rb 
Inicializuji pripojeni na LittleWire!
Verze fw je : 1.2

Takto vypadá úspěšné spuštění programu. V případě, že Litte Wire není detekován dostaneme následující výstup (stejně tak pokud program spustíme bez Little Wire v USB portu).

$ ruby test.rb 
Inicializuji pripojeni na LittleWire!
test.rb:14:in `<main>': undefined method `version' for nil:NilClass (NoMethodError)


Odkazy
Ruby knihovna pro Little Wire
Installing RVM
https://www.ruby-lang.org/en/libraries/

Žádné komentáře:

Okomentovat