用樹莓派控制小蜜蜂之自動全屏運行Scratch程序
最近我在忙于由小學發(fā)起的、和孩子們合作的一個基于樹莓派的項目。我女兒用Scratch寫好了代碼,下面我需要做的是使其自動運行。本來僅僅通過一個自動啟動文件和Scratch演示模式就可實現(xiàn),但可惜它只支持GOPI端口。同時使用Scratch語言和另一種編程語言(這里是用Python與GPIO通信)時會彈出一個消息框“取消選定‘傳感器連接’”。如果有鼠標和顯示器,那操作起來就方便的多了。可本項目最初設(shè)計時就不需鼠標,即使顯示器也是任選部件,因此需要找到實現(xiàn)Scratch與GPIO通訊的方法,以便Scratch運行自啟動“演示模式”,接下來一切就可以自動運行了。
本文引用地址:http://www.ex-cimer.com/article/267106.htm用樹莓派控制小蜜蜂:實現(xiàn)Scratch與樹莓派GPIO的通訊
盡管Scratch不識別樹莓派上的GPIO端口,好在能夠和其他程序通訊。因此需要后臺運行一個python程序,作為連接到GPIO的接口。對此能找到不少有用的資源。
Scratch Wiki對Scratch如何與Python應用程序通訊做了詳細闡釋:
Scratch Wiki: Communicating between Scratch and Python.
你可以從兩個示例RPI:GPIO和WiringPi參考如何實現(xiàn)python與樹莓派GPIO的通訊。值得慶幸的是Simplesi 已經(jīng)將其實現(xiàn),并對如何安裝逐步詳解,我們只需按照說明操作就可以了,在此我極力推薦:
演示模式下Scratch自啟動運行
演示模式下Scratch名副其實地全屏自啟動運行應用程序。除了在scratch命令中啟用演示選項,首先還需要啟動scratch處理程序。
如果你是CympleCy用戶,首先需要運行下列代碼:
sudo ps aux | grep 'python.*scratch_gpio_handler.py' | grep -v grep | awk '{print $2}' | xargs sudo kill -9
sudo python /home/pi/simplesi_scratch_handler/scratch_gpio_handler.py &
第一行阻止當前處理程序運行,第二行重新啟動處理程序。如果當前正在啟動(我之后會加以解釋)則不需要運行第一行命令。
通過如下命令使Scratch進入演示模式:
scratch presentation /home/pi/Documents/Scratch/scratchApp.sb
注意,Scratch使用的缺省目錄叫做“Scratch Projects”。將其添加至腳本時(因為還有其他情況下需要無空格命名,因此操作并非簡單地去掉空格),名字中的空格會造成一些麻煩,所以我直接去掉空格,將其放入了另一個目錄。
為了簡化可以將其放入一單獨的腳本。
首先修改directory /home/pi/Scratch
cd ~/Scratch
(注意,這里我使用回到主目錄的快捷鍵)
然后在如下目錄(leafpad ScratchApp.sh) 中建一個名為ScratchApp.sh的文件。
#!/bin/bash
sudo ps aux | grep 'python.*scratch_gpio_handler.py' | grep -v grep | awk '{print $2}' | xargs sudo kill -9
sudo python /home/pi/simplesi_scratch_handler/scratch_gpio_handler.py &
scratch presentation /home/pi/Scratch/scratchApp.sb
授予執(zhí)行許可
chmod +x ScratchApp.sh
然后創(chuàng)建一自啟動腳本
創(chuàng)建目錄(如果目錄不存在)
mkdir ~/.config/autostart
改為如下目錄
cd ~/.config/autostart
輸入下列命令結(jié)束文件
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Exec=/home/pi/Scratch/scratchApp.sh
Icon=scratch
Terminal=false
Name=Program name
Comment=About the program
Categories=Application;Education;Development;
MimeType=application/x-scratch-project
這樣無論何時登陸(假設(shè)無論何時啟動樹莓派,GUI自啟動和自動登錄都能正常運行),程序都可以運行了。
樹莓派文章專題:樹莓派是什么?你不知道樹莓派的知識和應用
評論