コード例 #1
0
'''Listen to SCOP streams for commands and render some turtles.'''

from Tkinter import *
from Arena import Arena
from WalkingTurtle import WalkingTurtle
from Vector import *
import scop
import os

scopserver = os.getenv("SCOPCTRLSERVER", "www.srcf.ucam.org")

sock1 = scop.scop_open(scopserver, "viewp1")
sock2 = scop.scop_open(scopserver, "viewp2")

scop.scop_listen(sock1, "p1ctrl")
scop.scop_listen(sock2, "p2ctrl")

tk = Tk()
arena = Arena(tk, sock1, sock2)
arena.pack()
arena.add(WalkingTurtle(Vector(200, 300), 0, 1, fill='turquoise'))
arena.add(WalkingTurtle(Vector(600, 300), 0, 1, fill='purple'))
tk.mainloop()
コード例 #2
0
ファイル: client.py プロジェクト: neuroph12/cambridge
#!/usr/bin/python
# client.py - DMI - 8-11-03

# Usage: client [ <query> ]   (default query is "Hello world!")

import scop, sys

if len(sys.argv) > 1:
    query = sys.argv[1]
else:
    query = "Hello world!"
sock = scop.scop_open("localhost", "client")
reply = scop.scop_rpc(sock, "server", query)
print "Query <" + query + ">, Reply <" + reply + ">"
scop.scop_close(sock)
コード例 #3
0
ファイル: status.py プロジェクト: neuroph12/cambridge
#!/usr/bin/python
# status.py - DMI - 8-11-03

import scop

sock = scop.scop_open("localhost", "status")
v = scop.scop_list(sock)
print len(v), "clients connected."
for tuple in v:
	name, interest, src_hint = tuple
	print "Client connection <" + name + "> listening to <" + interest + \
		">, source hint <" + src_hint + ">"
scop.scop_close(sock)
コード例 #4
0
#!/usr/bin/python
# xml_sender.py - DMI - 11-11-03

import scop


def marshall(dict):
    l = []
    keys = dict.keys()
    for k in keys:
        l.append([k, dict[k]])
    return l


ab = {"Poirot": "Belgium", "Morse": "Oxford, UK", "Danger Mouse": "London, UK"}
v = marshall(ab)
sock = scop.scop_open("localhost", "xml_sender")
scop.scop_send_struct(sock, "xml_receiver", v)
scop.scop_close(sock)
コード例 #5
0
ファイル: receiver.py プロジェクト: neuroph12/cambridge
#!/usr/bin/python
# receiver.py - DMI - 29-10-03

import scop, sys

sock = scop.scop_open("localhost", "receiver")
if sock == None:
    print "Error on open"
    sys.exit()
while 1:
    msg, rpc_flag = scop.scop_get_message(sock)
    print "Received <" + msg + ">"
    if msg == "quit":
        break
scop.scop_close(sock)
コード例 #6
0
ファイル: event_source.py プロジェクト: neuroph12/cambridge
#!/usr/bin/python
# event_source.py - DMI - 7-11-03

# Usage: event_source [ <source> ]   (default source is "news")

import scop, sys, time

count = 1
sock = scop.scop_open("localhost", "event_source")
if sock == None:
    print "Error on open"
    sys.exit()
if len(sys.argv) > 1:
    source = sys.argv[1]
else:
    source = "news"
scop.scop_set_source_hint(sock, source)
while 1:
    msg = "Item " + str(count)
    scop.scop_emit(sock, msg)
    count = count + 1
    time.sleep(1)
コード例 #7
0
ファイル: feedback.py プロジェクト: neuroph12/cambridge
'''GUI for listening to status messages'''

from feedbackGUI import *
from Tkinter import *
import scop

sock1 = scop.scop_open("www.srcf.ucam.org", "feedbackp1")
sock2 = scop.scop_open("www.srcf.ucam.org", "feedbackp2")

scop.scop_listen(sock1, "p1status")
scop.scop_listen(sock2, "p2status")

tk = Tk()

defaultwidth = 600
defaultheight = 800

gui = feedbackGUI(tk, sock1, sock2, defaultwidth, defaultheight)
gui.pack

mainloop()
コード例 #8
0
    sys.exit()

# p1ctrl or p2ctrl
endpoint = "p" + str(playerno) + "ctrl"
print("Using endpoint " + endpoint)

for i in range(1, len(sys.argv)):
    if sys.argv[i] == "norobot":
        robotmode = False
    elif sys.argv[i] == "localscop":
        scophost = "localhost"
    else:
        print "Usage: relay [norobot] [localscop]"
        sys.exit()

sock = scop.scop_open(scophost, host)
if sock == None:
    print "Cannot connect to scopserver"
    sys.exit()
scop.scop_listen(sock, endpoint)

speed = 0
turn = 0

if robotmode == True:
    r = Roomba()
    r.sci.Wake()
    r.Control()
    time.sleep(0.25)

while 1:
コード例 #9
0
ファイル: multi_listener.py プロジェクト: neuroph12/cambridge
#!/usr/bin/python
# multi_listener.cpp - DMI - 7-11-03

# Usage: multi_listener [ <source-one> <source-two> ]
#    (default sources are "news" and "updates")

import scop, sys, select

sock = []
for i in range(2):
    sock.append(scop.scop_open("localhost", "multi_listener"))

if len(sys.argv) == 3:
    scop.scop_listen(sock[0], argv[1])
    scop.scop_listen(sock[1], argv[2])
else:
    scop.scop_listen(sock[0], "news")
    scop.scop_listen(sock[1], "updates")

while 1:
    read_fds = [sock[0], sock[1]]
    r, w, e = select.select(read_fds, [], [])
    for fd in r:
        msg, rpc_flag = scop.scop_get_message(fd)
        print "Received <" + msg + "> from ",
        if fd == sock[1]:
            print "updates"
        else:
            print "news"
コード例 #10
0
ファイル: control.py プロジェクト: neuroph12/cambridge
from Tkinter import *
from ControlGUI import Controls
import scop, os


def usage():
    print("Usage: python control.py [2]")
    sys.exit()


scopserver = os.getenv("SCOPCTRLSERVER", "www.srcf.ucam.org")

player = 1

argv = sys.argv[1:]

for arg in argv:
    if arg == '2':
        player = 2
    else:
        usage()

sock = scop.scop_open(scopserver, "controlp" + str(player))
scop.scop_set_source_hint(sock, "p" + str(player) + "ctrl")

tk = Tk()
controls = Controls(tk, sock, player)
controls.pack()
tk.mainloop()
コード例 #11
0
ファイル: server.py プロジェクト: neuroph12/cambridge
#!/usr/bin/python
# server.py - DMI - 8-11-03

import scop

sock = scop.scop_open("localhost", "server")
while 1:
	query, rpc_flag = scop.scop_get_message(sock)
	length = len(query)
	reply = ""
	for i in range(length):
		reply = reply + query[i] + query[i]
	scop.scop_send_reply(sock, reply)
scop.scop_close(sock)
コード例 #12
0
#!/usr/bin/python
# event_listener.py - DMI - 7-11-03

import scop, sys

sock = scop.scop_open("localhost", "event_listener")
scop.scop_listen(sock, "news")
while 1:
    msg, rpc_flag = scop.scop_get_message(sock)
    print "Received <" + msg + ">"
コード例 #13
0
ファイル: method_client.py プロジェクト: neuroph12/cambridge
#!/usr/bin/python
# method_client.py - DMI - 11-11-03

import scop

def cent_to_faren(sock, c):
	return scop.scop_rpc(sock, "method_server", c, "ctof")

def faren_to_cent(sock, f):
	return scop.scop_rpc(sock, "method_server", f, "ftoc")

def count_uses(sock):
	return scop.scop_rpc(sock, "method_server", None, "stats")

sock = scop.scop_open("localhost", "method_client")
print str(0.0) + " deg C = " + str(cent_to_faren(sock, 0.0)) + " deg F."
print str(20.0) + " deg C = " + str(cent_to_faren(sock, 20.0)) + " deg F."
print str(60.0) + " deg F = " + str(faren_to_cent(sock, 60.0)) + " deg C."
print "The server has been accessed " + str(count_uses(sock)) + " times."
scop.scop_close(sock)
コード例 #14
0
ファイル: sos.py プロジェクト: neuroph12/cambridge
#!/usr/bin/python
# sos.py - DMI - 8-11-03

import scop, sys, syslog, os

sock = scop.scop_open("localhost", "sos", 1)
if sock == None:
    print "Can't connect to scopserver."
    sys.exit()

if os.fork() > 0:
    sys.exit()  # Detach

while 1:
    buf, rpc_flag = scop.scop_get_message(sock)
    if buf == None:
        syslog.syslog(syslog.LOG_INFO, "Lost connection to scopserver.")
        sys.exit()
    syslog.syslog(syslog.LOG_INFO, buf)
scop.scop_close(sock)