# -*- coding: utf-8 -*-
import socket
import sys
import select
import os
from time import sleep
import threading
host = "localhost"
port = 10500
bufsize = 1024
timer_length = 20.0
Rst = "0"
standby = False
# GPIO オープン処理
os.system("gpio -g mode 9 out")
os.system("gpio -g mode 11 out")
os.system("gpio -g mode 8 out")
os.system("gpio -g mode 7 out")
os.system("gpio -g mode 23 out")
os.system("gpio -g mode 16 out")
os.system("/home/pi/jtalk.sh 音声リモコンを起動しました")
# 命令受付モード終了関数
def standbyOff():
global standby, timer_length
if standby == True:
os.system("gpio -g write 16 1")
os.system("/home/pi/jtalk.sh 命令受付モードを終了します")
os.system("gpio -g write 23 0")
os.system("gpio -g write 9 0")
os.system("gpio -g write 11 0")
os.system("gpio -g write 8 0")
os.system("gpio -g write 7 0")
os.system("gpio -g write 16 0")
Rst = "0"
standby = False
# julius 接続処理 -module Mode
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
# RasRobo 永久ループ処理
while True:
message = ""
inputready, outputready, exceptrdy = select.select([client_socket], [],[])
# 命令受付処理
for s in inputready:
if s == client_socket:
message = str(client_socket.recv(bufsize).decode('utf-8'))
print ("受信したメッセージ : ", message)
if "命令受付モードオン" in message: #"スタンバイ", "起動"
if standby == True:
os.system("/home/pi/jtalk.sh すでに命令受付モード中です")
else:
os.system("/home/pi/jtalk.sh 命令受付モードに入ります")
os.system("gpio -g write 23 1")
standby = True
t = threading.Timer(timer_length, standbyOff)
t.start()
elif "命令受付モードオフ" in message: #"ニュートラル", "解除"
os.system("amixer set Mic nocap")
os.system("/home/pi/jtalk.sh 命令受付モードを解除します")
os.system("amixer set Mic cap")
os.system("gpio -g write 23 0")
os.system("gpio -g write 9 0")
os.system("gpio -g write 11 0")
os.system("gpio -g write 8 0")
os.system("gpio -g write 7 0")
Rst = "0"
standby = False
elif "終了" in message: #"終了"
os.system("gpio -g write 23 0")
os.system("gpio -g write 9 0")
os.system("gpio -g write 11 0")
os.system("gpio -g write 8 0")
os.system("gpio -g write 7 0")
Rst = "0"
standby = False
# モーター駆動処理
if standby == True: #命令受付モード中
if Rst == "0": #起動命令受付可能
if "前進" in message: #"前","前進", "進め", "START"
os.system("amixer set Mic nocap")
os.system("/home/pi/jtalk.sh 前進します")
os.system("amixer set Mic cap")
os.system("gpio -g write 9 1")
os.system("gpio -g write 11 0")
os.system("gpio -g write 8 1")
os.system("gpio -g write 7 0")
Rst = "1"
if "後進" in message: #"後進", "後", "バック", "さがれ"
os.system("amixer set Mic nocap")
os.system("/home/pi/jtalk.sh バックします、バックします")
os.system("amixer set Mic cap")
os.system("gpio -g write 9 0")
os.system("gpio -g write 11 1")
os.system("gpio -g write 8 0")
os.system("gpio -g write 7 1")
Rst = "1"
if "左前" in message:
os.system("amixer set Mic nocap")
os.system("/home/pi/jtalk.sh 前進して左に曲がります")
os.system("amixer set Mic cap")
os.system("gpio -g write 9 1")
sleep(0.5) #0.5秒片側回転
os.system("gpio -g write 11 0")
os.system("gpio -g write 8 1")
os.system("gpio -g write 7 0")
Rst = "1"
if "左後" in message:
os.system("amixer set Mic nocap")
os.system("/home/pi/jtalk.sh バックで左に曲がります")
os.system("amixer set Mic cap")
os.system("gpio -g write 11 1")
sleep(0.5) #0.5秒片側回転
os.system("gpio -g write 9 0")
os.system("gpio -g write 8 0")
os.system("gpio -g write 7 1")
Rst = "1"
if "右前" in message:
os.system("amixer set Mic nocap")
os.system("/home/pi/jtalk.sh 前進して右に曲がります")
os.system("amixer set Mic cap")
os.system("gpio -g write 8 1")
sleep(0.5) #0.5秒片側回転
os.system("gpio -g write 9 1")
os.system("gpio -g write 11 0")
os.system("gpio -g write 7 0")
Rst = "1"
if "右後" in message:
os.system("amixer set Mic nocap")
os.system("/home/pi/jtalk.sh バックで右に曲がります")
os.system("amixer set Mic cap")
os.system("gpio -g write 7 1")
sleep(0.5) #0.5秒片側回転
os.system("gpio -g write 9 0")
os.system("gpio -g write 11 1")
os.system("gpio -g write 8 0")
Rst = "1"
# モーター停止処理
if Rst == "1": #停止命令受付可能
if "停止" in message: #"停止", "止まれ", "STOP"
os.system("gpio -g write 16 1")
os.system("gpio -g write 9 0")
os.system("gpio -g write 11 0")
os.system("gpio -g write 8 0")
os.system("gpio -g write 7 0")
os.system("gpio -g write 23 0")
os.system("gpio -g write 16 0")
Rst = "0"
client_socket.close()