"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

pythonからscratchへデータ送信方法(pythonからのメッセージ内容に応じて分岐)



スポンサーリンク

f:id:azumami:20140129222724p:plain
pythonで得たセンサー情報をscratchへ送る方法

参考

1) Scratchの設定

以下の設定をする。左側の「遠隔センサーを有効にする」ってことろ。(右クリックででるよ)
f:id:azumami:20140111181747p:plain

OKを押す
f:id:azumami:20140111181802p:plain

スクリプトを組む。以下は、「b]をキーボード入力したら、「Hello!」と表示するスクリプト例です。
f:id:azumami:20140115115550p:plain

2) pythonスクリプトの作成

ソース。テキストエディタで、program.pyで保存。

from array import array
import socket
import time
import sys

 
from Tkinter import Tk
from tkSimpleDialog import askstring
root = Tk()
root.withdraw()

PORT = 42001
#HOST = askstring('Scratch Connector', 'IP:')
HOST = 'localhost'

if not HOST:
    sys.exit()
   
print("connecting...")
scratchSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
scratchSock.connect((HOST, PORT))
print("connected")


def sendScratchCommand(cmd):
    n = len(cmd)
    a = array('c')
    a.append(chr((n >> 24) & 0xFF))
    a.append(chr((n >> 16) & 0xFF))
    a.append(chr((n >>  8) & 0xFF))
    a.append(chr(n & 0xFF))
    scratchSock.send(a.tostring() + cmd)

while True:
    msg = askstring('Scratch Connector', 'Send Broadcast:')
    if msg:
        sendScratchCommand('broadcast "' + msg + '"')

3) pythonスクリプトの実行

コマンドプロンプトで以下を実行。まずは「connected」と表示されればOK.

>python program.py
connecting...
connected

次に、以下の画面が出るので「b」と入力。
f:id:azumami:20140115120000p:plain

「Hello!」って出るよ。
f:id:azumami:20140115120024p:plain