忍者ブログ
たんなるメモです。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

先日友人から「シェルスクリプトでよくねー?」って言われたので、上記プログラムをシェルスクリプト移植してみた。

※動作実験してません
※このままコピペしても動かないと思います。
※エラい人添削お願いします。
#!/bin/sh
NUM = 0
PRG = "sudo PROGRAM -OPTION "

# GPIOのポート2,3,4,17を入力でオープン
#
echo 2 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio2/direction
echo low > /sys/class/gpio/gpio2/direction
echo 3 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio3/direction
echo low > /sys/class/gpio/gpio3/direction
echo 4 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio4/direction
echo low > /sys/class/gpio/gpio4/direction
echo 17 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio17/direction
echo low > /sys/class/gpio/gpio17/direction

# GPIOポートの入力状態を調べ数値に変更
#
if cat /sys/class/gpio/gpio2/value -eq 1
then
  NUM = `expr $NUM + 1`
fi
if cat /sys/class/gpio/gpio3/value -eq 1
then
  NUM = `expr $NUM + 2`
fi
if cat /sys/class/gpio/gpio4/value -eq 1
then
  NUM = `expr $NUM + 4`
fi
if cat /sys/class/gpio/gpio17/value -eq 1
then
  NUM = `expr $NUM + 8`
fi

# GPIOのポートを閉じる
#
echo 2 > /sys/class/gpio/unexport
echo 3 > /sys/class/gpio/unexport
echo 4 > /sys/class/gpio/unexport
echo 17 > /sys/class/gpio/unexport

# 条件に応じて実行データを設定
#
case $NUM in
   0 ) EXE = "OBJECT01";;
   1 ) EXE = "OBJECT02";;
   2 ) EXE = "OBJECT03";;
   3 ) EXE = "OBJECT04";;
   4 ) EXE = "OBJECT05";;
   5 ) EXE = "OBJECT06";;
   6 ) EXE = "OBJECT07";;
   7 ) EXE = "OBJECT08";;
   8 ) EXE = "OBJECT09";;
   9 ) EXE = "OBJECT10";;
  10 ) EXE = "OBJECT11";;
  11 ) EXE = "OBJECT12";;
  12 ) EXE = "OBJECT13";;
  13 ) EXE = "OBJECT14";;
  14 ) EXE = "OBJECT15";;
  15 ) EXE = "OBJECT16";;
esac

# プログラム オプションと結合
#
EXE = `expr $PRG + $EXE`

# 表示と実行
#
echo ${EXE}
${EXE}


# v0.0.0 Oct. 26 2015
PR
マイラズパイ



マイブレボ



実行部分を入れてみました。
添削お願いします。
# -*- coding: shift-jis -*-

# 初期設定
#
import subprocess
import RPi.GPIO as GPIO


# BCMをBOARDにするちピンの配置番号 
#
GPIO.setmode(GPIO.BCM)

# GPIOのポートを入力でオープン
#
GPIO.setup(  2 , GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(  3 , GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(  4 , GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup( 17 , GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

# 実行データのテーブルを定義
#
gname_dict_1  = { 0 : 'OBJECT01',
                  1 : 'OBJECT02',
                  2 : 'OBJECT03',
                  3 : 'OBJECT04',
                  4 : 'OBJECT05',
                  5 : 'OBJECT06',
                  6 : 'OBJECT07',
                  7 : 'OBJECT08',
                  8 : 'OBJECT09',
                  9 : 'OBJECT10',
                 10 : 'OBJECT11',
                 11 : 'OBJECT12',
                 12 : 'OBJECT13',
                 13 : 'OBJECT14',
                 14 : 'OBJECT15',
                 15 : 'OBJECT16' }

# 変数の設定
#
exec_str = 'sudo PROGRAM -OPTION '
number_integer = 0

# GPIOポートの入力状態を調べ数値に変更
#
if GPIO.input(2) == 0:
else:
  number_integer = number_integer + 1
if GPIO.input(3) == 0:
else:
  number_integer = number_integer + 2
if GPIO.input(4) == 0:
else:
  number_integer = number_integer + 4
if GPIO.input(17) == 0:
else:
  number_integer = number_integer + 8

# GPIOのポートを閉じる
#
GPIO.cleanup()

# 変数(実行コマンドライン)の設定
#
command_str = exec_str + gname_dict_1[number_integer]


# 実行コマンドラインを表示
#
print command_str

# コマンドラインを実行
#
return_integer = subprocess.check_output( command_str.split(" ") )

# v0.0.3 Oct. 22 2015


レベル1が



いきなりレベル39に!!!
プロフィール
HN:
ぽんかん
性別:
非公開
P R
忍者カウンター
忍者ブログ [PR]