Merge pull request #7 from CodePanter/master

Changed a few small things to improve ease of use.
This commit is contained in:
JanKlopper 2016-04-28 21:44:34 +02:00
commit 5d4c250f89
2 changed files with 27 additions and 23 deletions

View file

@ -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()

View file

@ -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"""