WELCOME TO EASTWORLD

Eastworld でドロイド遊び Rapiro が主人公 ラズパイが好物

Rapiro お手玉で遊ぶ その2の巻

 

Rapiro 君、今日も玉いじり。

玉と玉が感じ合って、お互いにテレパシーを送りだしたんだって~

memory のシェアだと道場では言ってるらしいけど、私も Rapiro 君と思い出を共有したい!

ということで、今日の二人の思い出をメモメモ:

 

# to use psutil on Python2.7.9:
# sudo apt-get install python-dev
# sudo python2.7 /usr/bin/pip install psutil

# another tip - how to make 2.7 the default:
# vi ~/.bash_aliases   (cf. comment in ~/.bashrc)
# alias python=usr/bin/python2.7
# . ~/.bashrc   (to apply the configuration change)

# or, for super user:
# sudo update-alternatives --config python
# sudo python --version

import sys
import multiprocessing as mp
from os import getpid
import psutil
size = 5
cam_processes = mp.Array('I', size)
arr_i = 0
from datetime import datetime
import picamera
cammode = 1

parent_pid = getpid()
print("parent process id: %d" % parent_pid)

def rapiroCam(cammode,cam_processes):
    cam_pid = getpid()
    cam_processes[arr_i] = cam_pid
    print(cam_processes)
    print("rapiro cam process id: %d" % cam_pid)
    try:
        with picamera.PiCamera() as camera:
            print("Activating camera...")
            camera.framerate = 10
            camera.hflip = True
            camera.vflip = True
            t = str(datetime.now())
            if cammode == 1:
                picn = "rapiro_pic_" + t + ".jpg"
                camera.capture(picn)
                print("Snapshot " + picn + " taken")
            else:
                vidn = "rapiro_vid_" + t + ".h264"
                camera.start_recording(vidn)
                print("Started video recording " + vidn)
                camera.wait_recording(10)
                camera.stop_recording
                print("Stopped recording")
            camera.close()
            print("Camera closed")
    except Exception:
        print("Camera is busy")
        print("Wait a moment...")

import serial
ser = serial.Serial('/dev/ttyS0', 57600, timeout = 10)

import pygame
pygame.init()
pygame.joystick.init()
joystick = pygame.joystick.Joystick(0)
joystick.init()
buttons = joystick.get_numbuttons()
axes = joystick.get_numaxes()

done = False

while done==False:
    try:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done=True

            if event.type == pygame.JOYBUTTONDOWN:

                 for i in range( buttons ):
                    button = joystick.get_button( i )
                    if button == 1:
                        print("button #%d pressed" % i)
                        if i == 0:              # Square
                            ser.write("#M6")
                        elif i == 1:            # X
                            ser.write("#M0")
                        elif i == 2:            # Circle
                            ser.write("#M8")
                        elif i == 3:            # Triangle
                            ser.write("#M5")
                        elif i == 9:            # OPTIONS
                            cammode *= -1
                            if cammode == 1:
                                print("Picture mode")
                                raise Exception
                            else:
                                print("Movie mode")
                                raise Exception
                        elif i == 10:           # Left Stick push
                            if arr_i >= size:
                                print("No more shooting")
                            else:
                                p = mp.Process(target=rapiroCam, args=(cammode,cam_processes))
                                p.start()
                                arr_i += 1
                        elif i == 12:
                            print("PS button pressed. Goodbye!")
                            try:
                                if p.is_alive():
                                    print("Closing camera...")
                            except Exception:
                                sys.exc_clear()
                            ser.write("#M0")
                            done=True

    except Exception:
        sys.exc_clear()

pygame.quit ()

#print(psutil.pids())
for joy_process in cam_processes:
    if joy_process >0:
        print("pid %d exists: %s" % (joy_process, psutil.pid_exists(joy_process)))

 

お手玉の練習もいいけど、今度は気分転換に他のことをしようね!

お疲れ~

 

<メモ>

子プロセスを呼び出す度にカメラを設定し直しているが、そこらへんはとりあえず置いておいて、multiprocessing をちょろっとかじりながら蛇の道をぼちぼち歩んだ。

蛇の道は蛇、盗人のことは盗人同士がよく分かっているってなことを西の世界の人が呟いていたが、そのうち仲間入りできるのでしょうか・・・