def do_second_thread() -> None:
    """
    Waits until it hears a call from the other rasp pi zw. Joins the main thread when finished.
    :return: None
    """
    # Wait until the rasp pi zw hears a call from the first thread
    network.wait(whenHearCall=do_work)
コード例 #2
0
		def talk_to_home():		
			print 'Awaiting network connection'
			onboard.waitalert1()
			self.data_loop = False
			network.wait(whenHearCall=heard)
			print 'Network connection made' 
			onboard.waitalert2()
			onboard.connalert1()
			while True:
				if network.isConnected()==False:
					onboard.connalert2()
					print 'Disconnected. Waiting for connection'
					cut = False
					while cut==False:
						#print 'attempt hang up'	
						try:
							network.hangUp()
							onboard.waitalert1()
							network.wait(whenHearCall=heard)
							cut = True
							#print 'hang up successful'
						except:
							pass
							#print 'cannot hang up'
					print "Connection made"
					onboard.waitalert2()
					onboard.connalert1()
コード例 #3
0
 def __init__(self, receiveQueue, sendQueue, ip=None):
     self.daemon = True
     super().__init__()
     self.receiver = receiveQueue
     self.sender = sendQueue
     if ip:
         network.call(sys.argv[1], whenHearCall=self.receive)
     else:
         network.wait(whenHearCall=self.receive)
コード例 #4
0
ファイル: tsim.py プロジェクト: whaleygeek/mb_jb
def run_server():
    trace("run_server")
    start_ticker()
    
    while True:
        try:
            trace("waiting for connection...")
            network.wait(whenHearCall=incoming, port=PORT)
            trace("connected!")
            while network.isConnected():
                time.sleep(1)
                print("wasting time...")

            print("connection lost")
        finally:
            stop_status_reports()
            network.hangUp()
コード例 #5
0
ファイル: viewer.py プロジェクト: ryanteck/raspi-cake
     $$    $$$7       $$$$   $$D        
         $$$$$$$7   $$$$$$$$            
    $   $$$$$$$$$   $$$$$$$$$  $$       
  $$$  7$$$$$$$$$   $$$$$$$$$$ 7$$      
  $$$N 7$$$$$$$$7   $$$$$$$$$7 $$$$     
 $$$$  $$$$$$$$$     7$$$$$$7  7$$$     
  $$$   8$$$$$$       D$$$$7    $$$     
  7$           7$$$$$$          $$      
     7$$      7$$$$$$$$     $$$$        
    $$$$$7   $$$$$$$$$$$  D7$$$$$       
    $$$$$$$  $$$$$$$$$$7 $$$$$$$$       
     $$$$$$$  $$$$$$$$$  $$$$$$7        
     8$$$$$$   7$$$$$7  7$$$$$$N        
       $$$$$             $$$$7          
               $$$$$$$8                 
             $$$$$$$$$$$                
               $$$$$$$           """


if (len(sys.argv) >= 2):
  network.call(sys.argv[1], whenHearCall=heard)
else:  
  network.wait(whenHearCall=heard)



while network.isConnected():
  phrase = raw_input()
  print "me:" + phrase
  network.say(phrase)
コード例 #6
0
ファイル: chat.py プロジェクト: TurdOnTheRun/iliketurtles
#Github: raspberrypilearning/networking-lessons

import network
import sys


def heard(phrase):
    print('them:' + phrase)


if (len(sys.argv) >= 2):
    network.call(sys.argv[1], whenHearCall=heard)
else:
    network.wait(whenHearCall=heard)

while network.isConnected():
    phrase = input()
    print("me:" + phrase)
    network.say(phrase)
コード例 #7
0
ファイル: pichat.py プロジェクト: jrolan-hall/Honu-Clear-Blue
    def __init__(self):

		def heard(phrase):
			onboard.inalert1() #remove with eh
			print "INCOMING:" + phrase
			words = str(phrase)
			self.homemsg = eval(words)			
			onboard.inalert2()

			if network.isConnected():
				if self.homemsg['MSG'] == 'DATA'::
					onboard.outalert1()
					response = onboard.sense_DATA()
					print"RESPONSE:" + str(response)
					try:
						network.say(str(response))
					except:
						print 'could not send message'
					onboard.outalert2()
		  		else:
		  			print"NO CONNECTION TO RESPOND"


		def scale(val, src, dst):
		    """
		    Scale the given value from the scale of src to the scale of dst.

		    val: float or int
		    src: tuple
		    dst: tuple

		    example: print(scale(99, (0.0, 99.0), (-1.0, +1.0)))
		    """
		    return (float(val - src[0]) / (src[1] - src[0])) * (dst[1] - dst[0]) + dst[0]

		def scale_stick(value):
		    return scale(value,(0,255),(-1,1))

		def scale_trigger(value):
		    return int(scale(value,(0,255),(0,100)))

		def control_wait():
		    print 'Awaiting controller connection'
		    self.gamepad = None
		    while self.gamepad == None:
		        devices = [evdev.InputDevice(fn) for fn in evdev.list_devices()]
		        for device in devices:
		            if device.name == 'PLAYSTATION(R)3 Controller':
		                ps3dev = device.fn
		                self.gamepad = evdev.InputDevice(ps3dev)
		                print 'Controller connection made'

		def define_allkeys():
		    self.allkeys = { #control name: [event type, event code]
		      'CROSS_btn': [1, 302],	#cross button
		      'TRIAN_btn': [1, 300],	#triangle button
		      'CIRCL_btn': [1, 301],	#circle button
		      'SQUAR_btn': [1, 303],	#square button
		      'LEFTA_btn': [1, 295],	#left arrow button
		      'RIGHT_btn': [1, 293],	#right arrow button
		      'UPARR_btn': [1, 292],	#up arrow button
		      'DOWNA_btn': [1, 294],	#down arrow button
		      'SELCT_btn': [1, 288],	#select button
		      'START_btn': [1, 291],	#start button
		      'LEFT1_btn': [1, 298],	#L1 button
		      'LEFT2_btn': [1, 296],	#L2 button
		      'RIHT1_btn': [1, 299],	#R1 button
		      'RIHT2_btn': [1, 297],	#R2 button
		      'LSTCK_btn': [1, 289],	#left stick button
		      'RSTCK_btn': [1, 290],	#right stick button
		      'LEFTY_stk': [3, 1],	#left joystick y-axis
		      'RIHTY_stk': [3, 5],	#right joystick y-axis
		      'LEFTX_stk': [3, 0],	#left joystick x-axis
		      'RIHTX_stk': [3, 2],	#right joystick x-axis
		      'LEFT1_trg': [3, 50],	#L1 trigger
		      'LEFT2_trg': [3, 48],	#L2 trigger
		      'RIHT1_trg': [3, 51],	#R1 trigger
		      'RIHT2_trg': [3, 49]	#R2 trigger
		      #'XAXIS_acc': [3, 59],	#x-axis accelerometer
		      #'YAXIS_acc': [3, 60]	#y-axis accelerometer
		      }

		    self.command = 'CMO:0||LMO:0||RMO:0||DOOR:0'		

		def pass_command():
			acc = scale_trigger(self.keyval['RIHT2_trg'])-scale_trigger(self.keyval['LEFT2_trg'])
			turn = scale_stick(self.keyval['LEFTX_stk'])
			pivot = self.keyval['SQUAR_btn']

			#sensitivity threshold of 15% kept both motors turning okay
			if (abs(turn)>0.15) and (pivot==0): #no pivot turn - 1 wheel stationary
				if turn < 0: #left turn - right motor fwd/rev, left motor stationary
					l_acc = 0
					r_acc = int(acc*-1*turn)
				elif turn > 0: #right turn - right motor fwd/rev, right motor stationary
					r_acc = 0
					l_acc = int(acc*turn)
			elif (abs(turn)>0.15) and (pivot!=0):
				if turn < 0: #left turn - right motor fwd/rev, left motor oppose
					l_acc = int(turn*acc)
					r_acc = int(-1*turn*acc)
				elif turn > 0: #right turn - left motor fwd/rev, right motor oppose
					r_acc = int(turn*-1*acc)
					l_acc = int(turn*acc)
			else: #no turn
				l_acc = acc
				r_acc = acc

			string = 'CMO:0||'+'LMO:'+str(l_acc)+'||RMO:'+str(r_acc)+'||DOOR:0'
			if string != self.command:
				self.command = string
				print self.command

		def control():
		    control_wait()
		    define_allkeys()
		    self.keyval = {} #key values
		    for key in self.allkeys:
		    	self.keyval[key] = 0 #initialize all values to zero

		    try:
				for event in self.gamepad.read_loop():
					for key in self.allkeys:
						[etype, ecode] = self.allkeys[key]
						if event.type == etype and event.code == ecode:
							self.keyval[key] = event.value
					pass_command()
		    except:
				pass

	   	############ this is where the program starts its loop
	    			

		t = threading.Thread(target=control)# need to work on this some more
		t.start()

		print 'Awaiting network connection'
		onboard.waitalert1()
		network.wait(whenHearCall=heard)
		print 'Network connection made' 
		onboard.waitalert2()
		onboard.connalert1()
		while True:
			while network.isConnected():
				talk = True
			if network.isConnected()==False:
				onboard.connalert2()
				print 'Disconnected. Waiting for connection'
				network.hangUp()
				onboard.waitalert1()
				network.wait(whenHearCall=heard)
				print "Connection made"
				onboard.waitalert2()
				onboard.connalert1()
コード例 #8
0
if (len(sys.argv) < 2):
  sys.exit()

score=0
imagined_number=int(sys.argv[1])

def heard(phrase):
  global score

  print("them:" + phrase)
  guessed_number = int(phrase)
  #time.sleep(1) #pause here to make the Pi seem human
  if network.isConnected():
    if imagined_number > guessed_number:
       network.say("higher")
    elif imagined_number == guessed_number:
       network.say("CORRECT!!!")
       score = 1
    else:
       network.say("lower")  

network.wait(whenHearCall=heard) #wait for quiz taker to connect

if network.isConnected():
  network.say("Guess a number!")

while score == 0 and network.isConnected():
  time.sleep(3)

コード例 #9
0
ファイル: web_server.py プロジェクト: juangtzmejia/pibakeoff
    state = 1
    
  elif (state == 1): # headers
    if (len(line.strip()) == 0): # blank separator
      state = 2
    else:
      handleHeader(line)
      
  elif (state == 2): # body
    # This is a GET so just send the body
    handleBody(line)
    network.hangUp() # done
    

# main program starts here

while True:  
  network.wait(port=port, whenHearCall=heard)
  print("connected")

  while network.isConnected():
    # Nothing else to do, but could run other code here
    time.sleep(1)

  print("disconnected")





コード例 #10
0
ファイル: chatter.py プロジェクト: rusk-yhs/SocketExample
import sys
import time

task_num = 0


def do_work(data):  # "x y"
    global task_num
    task_num += 1
    print(f"doing work: |{task_num} {mode}| {data}")
    time.sleep(3)  # pretend to do work
    network.say("newx newy")


# First argument is the IP address of the other RPi
# Second argument is the starting mode
if (len(sys.argv) >= 2):
    ip_of_other_rpi = sys.argv[1]
    mode = sys.argv[2]
else:
    sys.exit("Bad arguments")

if mode == "first":
    network.call(ip_of_other_rpi, whenHearCall=do_work)
    do_work("0 0")
else:
    network.wait(whenHearCall=do_work)

while network.isConnected():
    time.sleep(20)