少しだけ書き換えて、Linuxコマンド全般を使えるようにしてみる。
※言うまでもないですが、Scratchの改造・シェルスクリプトの実行は自己責任で!※
通常は、直接Linuxコマンドを動かすためのブロックは用意されていないので、
ScratchをSmalltalkのレベルで改造する必要があり、以下を参考にして、
ブロックの追加を行った。情報を公開してくださった方々に感謝。
参考
http://itpro.nikkeibp.co.jp/article/COLUMN/20111019/371085/
http://oohito.com/nqthm/archives/2243
http://d.hatena.ne.jp/minekoa/20080314/1205484707
ブロックの追加。
('shell %s' #- #shell: '')
メソッドで、保存するファイル名を変更。
(ホームディレクトリは私の環境の場合なので、そこは御自分の環境に読み替えて下さい)
shell: t1 | file | file _ FileStream fileNamed: '/home/o10yan/Scratch/shell'. file nextPutAll: t1. file close. (Delay forMilliseconds: 100) wait
シェルスクリプトの指定ファイルも変更。
読み込んだ文字列(コマンド)をそのまま"eval"で評価して実行。
#!/bin/bash if [ ! -e /home/o10yan/Scratch/shell ]; then touch /home/o10yan/Scratch/shell fi while inotifywait -e modify /home/o10yan/Scratch/shell; do text_line=$(cat /home/o10yan/Scratch/shell) if [ -n '$text_line' ]; then echo '' > /home//o10yan/Scratch/shell eval $text_line fi done
Scratchから"gpio readall"を送って見たところ |
SLを走らせてみた |
まとめ
やってることは非常に単純。
Scratchから文字列をファイルに保存する。
シェルスクリプトで、文字列をコマンドとして実行する。
現実的には、「遠隔センサー接続」を利用したり、scratchClient と言うソフトで
できるようなので、そちらを使った方が楽だと思います。
が、実験としては、面白かったです。
0 件のコメント :
コメントを投稿