Skip to content
Snippets Groups Projects
Commit ff774e36 authored by Jan Luebbe's avatar Jan Luebbe
Browse files

Update python code for multi messages and test-server for blit.

parent 8170f199
No related branches found
No related tags found
No related merge requests found
......@@ -21,9 +21,15 @@ socket = context.socket(zmq.REQ)
socket.connect(SERVER)
def set_pixel(x, y, v):
tx = bytearray(9)
struct.pack_into('iiB', tx, 0, x, y, v)
socket.send(tx)
tx = struct.pack('<BiiB', 0, x, y, v)
socket.send_multipart([tx, b''])
rx = socket.recv()
#print("Received reply %s [%r]" % ((x, y, v), rx))
def set_pixels(pixels):
msg = []
for x, y, v in pixels:
msg.append(struct.pack('<BiiB', 0, x, y, v))
socket.send_multipart(msg + [b''])
rx = socket.recv()
......@@ -7,10 +7,12 @@ SIZE = 1
import time
def rect(x,y,w,h,r,g,b):
pixels = []
for i in xrange(x,x+w):
for j in xrange(y,y+h):
#pixel(i,j,r,g,b)
client.set_pixel(i, j, r)
pixels.append((i, j, r))
client.set_pixels(pixels)
def draw(x, y, v):
rect(x*SIZE, y*SIZE, SIZE, SIZE, 255*v, 255*v, 255*v)
......
#!/usr/bin/python
import sys
import sys, client
SERVER = "tcp://localhost:5571"
XOFF = 0
YOFF = 0
TEXT = "Hello World!"
if __name__=="__main__":
if len(sys.argv) >= 2:
SERVER = sys.argv[1]
if len(sys.argv) >= 4:
XOFF = int(sys.argv[2])
YOFF = int(sys.argv[3])
if len(sys.argv) >= 5:
TEXT = sys.argv[4]
import struct
import zmq
# Prepare our context and sockets
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect(SERVER)
def set_pixel(x, y, v):
tx = bytearray(9)
struct.pack_into('iiB', tx, 0, x, y, v)
socket.send(tx)
rx = socket.recv()
#print("Received reply %s [%r]" % ((x, y, v), rx))
import pygame
pygame.init()
font = pygame.font.Font("/usr/share/fonts/X11/misc/5x7.pcf.gz", 7)
text = font.render(TEXT, True, (255, 255, 255), (0, 0, 0))
pxarray = pygame.PixelArray(text)
pixels = []
for x in range(text.get_width()):
for y in range(text.get_height()):
set_pixel(XOFF+x, YOFF+y, pxarray[x][y])
pixels.append((XOFF+x, YOFF+y, pxarray[x][y]))
del pxarray
client.set_pixels(pixels)
......@@ -42,8 +42,24 @@ while True:
pygame.display.update()
continue
message = socket.recv()
x, y, v = struct.unpack_from('iiB', message)
# print("Received request: %r, %r, %r" % (x, y, v))
set_pixel(x, y, v)
socket.send(b"")
messages = socket.recv_multipart()
#print("New multimessage")
for message in messages:
if not message:
break
cmd, = struct.unpack_from('<B', message)
#print repr(message)
if cmd == 0: # set pixel
cmd, x, y, v = struct.unpack_from('<BiiB', message)
#print("Received set pixel: %r, %r, %r, %r" % (cmd, x, y, v))
set_pixel(x, y, v)
elif cmd == 1: # blit
cmd, x, y, w, h = struct.unpack_from('<Biiii', message)
#print("Received blit: %r, %r, %r, %r, %r" % (cmd, x, y, w, h))
for r in range(h):
for c in range(w):
set_pixel(x+c, y+r, ord(message[17+r*w+c]))
else:
cmd, = struct.unpack_from('<B', message)
print("Received unknown: %r" % (cmd,))
socket.send(b'')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment