開発ブログ

第16回 パペロ起動時にプログラムを自動的に実行してみた

投稿日時:2019年4月8日 09:04

こんにちは。ピャペロンです!
今回はパペロ起動時にプログラムを自動的に実行してみた!

使用するハード
・PaPeRo i実機

使用するソフト
・Windows 10
・テキストエディタ(Visual Studio Code
・Python 3.4(PaPeRo i)
・WinSCP
・Tera Term


トピック: 独立実行方法について | PaPeRo i [非公式] Developer Forum
のソースコードを参考に[start][stop][restart]で制御できるように改造したよ。

Linux起動の仕組みを理解しよう[rcスクリプト編]:Windowsユーザーに教えるLinuxの常識(最終回) – @IT
を参考にファイル名を[S99z-app]で作成しよう。

  1. #!/bin/sh
  2. # アプリケーションの場所と名前を指定
  3. APPDIR=/Extension/apps/
  4. APP=app
  5. # 一定時間待ってもWebsocket制御シナリオが起動しない場合に、起動を中止するか否か
  6. # (0:中止しない、数値:待機秒数)
  7. SCA_TIMEOUT=0
  8. # ----
  9. . /Extension/local/etc/sh.profile
  10. . /Extension/local/etc/sh.rc
  11. start() {
  12.     while ! pgrep sys_mgr > /dev/null; do sleep 1; done #シスマネが起動していない場合
  13.         i=0
  14.     while ! grep "00000000:1F98" /proc/net/tcp > /dev/null; do
  15.         if [ ${SCA_TIMEOUT} -gt 0 ]; then #SCA_TIMEOUTが0より大きければ
  16.             : $((i++)) #算術式 i+1
  17.             if [ $i -ge ${SCA_TIMEOUT} ]; then #iの値がSCA_TIMEOUT以上なら
  18.                 exit 1 #タイムアウト
  19.             fi
  20.         fi
  21.         sleep 1
  22.     done
  23.     echo starting ${APP}
  24.     python3 ${exec_name} -wssvr ws://127.0.0.1:8088/papero >/var/log/${APP}.log 2>/var/log/${APP}_error.log & #アプリケーションをバックグラウンドで実行
  25. }
  26. stop() {
  27.     i=0
  28.     while pgrep -f "python3 ${exec_name}" > /dev/null; do #アプリケーションが起動している場合
  29.         pid=`pgrep -f "python3 ${exec_name}"` #プロセスIDを取得
  30.         if [ $i -ge 7 ]; then #iが7以上なら
  31.             kill -KILL ${pid} #アプリケーションを強制キル
  32.         else
  33.             kill -TERM ${pid} #アプリケーションをキル
  34.         fi
  35.     sleep 2
  36.     : $((i++))
  37.     done
  38. }
  39. restart() {
  40.     stop
  41.     start
  42. }
  43. cd $APPDIR
  44. if [ -f ${APP}.py ]; then
  45.   exec_name=${APP}.py
  46. elif [ -f ${APP}.pyc ]; then
  47.   exec_name=${APP}.pyc
  48. else
  49.   echo "Application not found: `pwd`/$APP.[py|pyc]" > /var/log/app.sh.error.log
  50.   exit 1
  51. fi
  52. case "$1" in
  53. start)
  54.     start
  55.     ;;
  56. stop)
  57.     stop
  58.     ;;
  59. restart)
  60.     restart
  61.     ;;
  62. *)
  63.     echo "usage: $0 { start | stop | restart }" >&2
  64.     exit 1
  65.     ;;
  66. esac
  67. exit 0

作成したスクリプトをWinSCPで[/tmp/]に転送してTera Termで[/Extension/script/]に移動させたら、[S99z-app]と[app.py]を
[chown root ファイル名]
[chmod 755 ファイル名]
と実行して、所有者と権限を変更しよう。

これで[app.py]がパペロ起動時に実行されるはずだ!

 


0

最新開発ブログ一覧  (一覧で確認
2020年8月19日 14:08
開発ブログ
第30回 パペロで赤外線アレイセンサを動かしてみよう!【中編:顔の表面温度を測ってみよう】
by 管理者
2020年7月22日 16:07
開発ブログ
第29回 パペロで赤外線アレイセンサを動かしてみよう!【前編:簡易サーモグラフィを作ろう】
by 管理者
2019年11月20日 17:11
開発ブログ
第28回 パペロでJulius4.5を実行してみた
by 管理者
2019年11月13日 09:11
開発ブログ
第27回 JuliusをPaPeRoi向けにクロスコンパイルしてみた
by 管理者
2019年9月19日 17:09
開発ブログ
第26回Linaro Toolchainでクロスコンパイルしてみた
by 管理者

コメントは受け付けていません。