Merge pull request #7 from CodePanter/master
Changed a few small things to improve ease of use.
This commit is contained in:
commit
5d4c250f89
2 changed files with 27 additions and 23 deletions
22
client.py
22
client.py
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/python
|
||||
"""This is an udp / binary client
|
||||
|
||||
Inspired by the PixelFlut beamer on eth0:winter 2016 and
|
||||
Inspired by the PixelFlut projector on eth0:winter 2016 and
|
||||
code from https://github.com/defnull/pixelflut/
|
||||
"""
|
||||
|
||||
|
|
@ -9,11 +9,11 @@ __version__ = 0.3
|
|||
__author__ = "Jan Klopper <jan@underdark.nl>"
|
||||
|
||||
import random
|
||||
from vloed import PixelVloedClient, NewMessage, RGBPixel
|
||||
from vloed import PixelVloedClient, NewMessage, RGBPixel, MAX_PIXELS
|
||||
|
||||
def RandomFill(message, width, height):
|
||||
"""Generates a random number of pixels with a random color"""
|
||||
for pixel in xrange(0, random.randint(10, 140)):
|
||||
for pixel in xrange(0, random.randint(10, MAX_PIXELS)):
|
||||
pixel = RGBPixel(random.randint(0, width),
|
||||
random.randint(0, height),
|
||||
random.randint(0, 255),
|
||||
|
|
@ -23,7 +23,7 @@ def RandomFill(message, width, height):
|
|||
message.append(pixel)
|
||||
except IndexError:
|
||||
yield ''.join(message)
|
||||
message[2:] = []
|
||||
message[2:] = [pixel]
|
||||
yield ''.join(message)
|
||||
|
||||
def RunClient():
|
||||
|
|
@ -33,20 +33,20 @@ def RunClient():
|
|||
False, # show debugging output
|
||||
None, # ip of the server, None for autodetect
|
||||
None, # port of the server None for autodetect
|
||||
None, # Screen pixels wide, or Autodetect
|
||||
None # Screen pixels height, or Autodetect
|
||||
None, # Screen pixels wide, None for autodetect
|
||||
None # Screen pixels height, None for autodetect
|
||||
)
|
||||
message = NewMessage() #create a new message that buffers the output etc
|
||||
|
||||
# loop the effect untill we cancel by pressing ctrl+c / exit the program
|
||||
# loop the effect until we cancel by pressing ctrl+c / exit the program
|
||||
while True:
|
||||
# create a new message and send if everytime the buffer is full
|
||||
# create a new message and send it every time the buffer is full
|
||||
# the width/height are read from the client's config
|
||||
for packet in RandomFill(message, client.width, client.height):
|
||||
# send the message we just filled with random pixelfs
|
||||
# send the message we just filled with random pixels
|
||||
client.SendPacket(packet)
|
||||
|
||||
if __name__ == '__main__':
|
||||
# if this script is called from the commandline, and thus not imported
|
||||
# Start a client and start sending messages
|
||||
# if this script is called from the command line, and thus not imported
|
||||
# start a client and start sending messages
|
||||
RunClient()
|
||||
|
|
|
|||
28
vloed.py
28
vloed.py
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/python
|
||||
"""This is a udp / binary version of PixelFlut
|
||||
|
||||
Inspired by the PixelFlut beamer on eth0:winter 2016 and
|
||||
Inspired by the PixelFlut projector on eth0:winter 2016 and
|
||||
code from https://github.com/defnull/pixelflut/
|
||||
"""
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ class Canvas(object):
|
|||
def Draw(self):
|
||||
"""Draws pixels specified in the received packages in the queue"""
|
||||
if self.queue.empty():
|
||||
# indicat that nothing was done, and w can skip flipping the screen
|
||||
# indicate that nothing was done, and we can skip flipping the screen
|
||||
return False
|
||||
#access the pixel array and lock it
|
||||
self.pixels = pygame.surfarray.pixels2d(self.screen)
|
||||
|
|
@ -145,13 +145,17 @@ class Canvas(object):
|
|||
|
||||
def SendDiscoveryPacket(self):
|
||||
"""Lets send out our ip/port/resolution to any listening clients"""
|
||||
self.broadcastsocket.sendto(
|
||||
'%s:%f %s:%d %d*%d' % (PROTOCOL_PREAMBLE, PROTOCOL_VERSION,
|
||||
UDP_IP, UDP_PORT,
|
||||
self.width, self.height),
|
||||
('<broadcast>', DISCOVER_PORT))
|
||||
if self.debug:
|
||||
print 'sending discovery packet'
|
||||
try:
|
||||
self.broadcastsocket.sendto(
|
||||
'%s:%f %s:%d %d*%d' % (PROTOCOL_PREAMBLE, PROTOCOL_VERSION,
|
||||
UDP_IP, UDP_PORT,
|
||||
self.width, self.height),
|
||||
('<broadcast>', DISCOVER_PORT))
|
||||
if self.debug:
|
||||
print 'sending discovery packet'
|
||||
except Exception as error:
|
||||
if self.debug:
|
||||
print error
|
||||
|
||||
def __del__(self):
|
||||
"""Clean up any sockets we created"""
|
||||
|
|
@ -204,7 +208,7 @@ class PixelVloedClient(object):
|
|||
servers[0])
|
||||
else:
|
||||
self.ipaddress = ip
|
||||
self.port = port
|
||||
self.port = port if port else UDP_IP
|
||||
self.width = width
|
||||
self.height = height
|
||||
if self.debug:
|
||||
|
|
@ -230,7 +234,7 @@ class PixelVloedClient(object):
|
|||
|
||||
@staticmethod
|
||||
def DiscoverServers(returnfirst=False, timeout=5):
|
||||
"""Discover servers that send out the pixelfvloed preample"""
|
||||
"""Discover servers that send out the pixelvloed preample"""
|
||||
discoverysock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
discoverysock.bind(('', DISCOVER_PORT))
|
||||
starttime = time.time()
|
||||
|
|
@ -296,9 +300,9 @@ class MaxSizeList(list):
|
|||
|
||||
def append(self, item):
|
||||
"""Appends an item to the list"""
|
||||
super(MaxSizeList, self).append(item)
|
||||
if self.__len__() == self.maxsize:
|
||||
raise IndexError('max size reached')
|
||||
super(MaxSizeList, self).append(item)
|
||||
|
||||
def RunServer():
|
||||
"""Runs a pixelvloed server"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue