少しだけ書き換えて、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 件のコメント :
コメントを投稿