Fix send bytes TCP py2/3
parent
d163dfe7bd
commit
496feb0d30
|
@ -25,7 +25,6 @@ def send(r, s):
|
||||||
print(r.llen('new'))
|
print(r.llen('new'))
|
||||||
data = r.rpop('new')
|
data = r.rpop('new')
|
||||||
if data is not None and len(data) > 0:
|
if data is not None and len(data) > 0:
|
||||||
print(len(data))
|
|
||||||
now = time.time()
|
now = time.time()
|
||||||
end = now + wait_time
|
end = now + wait_time
|
||||||
a = bytes([ord('*')]) + bytearray(data) + bytes([ord('#')])
|
a = bytes([ord('*')]) + bytearray(data) + bytes([ord('#')])
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
import socketserver
|
import socketserver
|
||||||
import redis
|
import redis
|
||||||
import time
|
|
||||||
|
|
||||||
|
|
||||||
class MyTCPHandler(socketserver.BaseRequestHandler):
|
class MyTCPHandler(socketserver.BaseRequestHandler):
|
||||||
|
@ -26,14 +25,15 @@ class MyTCPHandler(socketserver.BaseRequestHandler):
|
||||||
self.imgsize = height * width * 24
|
self.imgsize = height * width * 24
|
||||||
|
|
||||||
def _send_config_to_client(self):
|
def _send_config_to_client(self):
|
||||||
self.request.sendall(bytearray([self.max_height]))
|
self.request.sendall(self.max_height.to_bytes(4, byteorder='little'))
|
||||||
self.request.sendall(bytearray([self.max_width]))
|
self.request.sendall(self.max_width.to_bytes(4, byteorder='little'))
|
||||||
self.request.sendall(bytearray([self.max_framerate]))
|
self.request.sendall(self.max_framerate.to_bytes(4, byteorder='little'))
|
||||||
|
|
||||||
def _receive_client_config(self):
|
def _receive_client_config(self):
|
||||||
height = int.from_bytes(self.request.recv(1), byteorder='little')
|
height = int.from_bytes(self.request.recv(4), byteorder='little')
|
||||||
width = int.from_bytes(self.request.recv(1), byteorder='little')
|
width = int.from_bytes(self.request.recv(4), byteorder='little')
|
||||||
framerate = int.from_bytes(self.request.recv(1), byteorder='little')
|
framerate = int.from_bytes(self.request.recv(4), byteorder='little')
|
||||||
|
print(height, width, framerate)
|
||||||
good, reason = self._check_config(height, width, framerate)
|
good, reason = self._check_config(height, width, framerate)
|
||||||
if good:
|
if good:
|
||||||
self._set_config(framerate, height, width)
|
self._set_config(framerate, height, width)
|
||||||
|
@ -57,17 +57,11 @@ class MyTCPHandler(socketserver.BaseRequestHandler):
|
||||||
print(reason)
|
print(reason)
|
||||||
return None
|
return None
|
||||||
print('Start receiving from {}...'.format(self.client_address[0]))
|
print('Start receiving from {}...'.format(self.client_address[0]))
|
||||||
got_one_frame = False
|
|
||||||
while True:
|
while True:
|
||||||
data = self.request.recv(self.imgsize)
|
data = self.request.recv(self.imgsize)
|
||||||
self.r.lpush('new', data)
|
|
||||||
if len(data) == 0:
|
if len(data) == 0:
|
||||||
if not got_one_frame:
|
|
||||||
time.sleep(1)
|
|
||||||
continue
|
|
||||||
break
|
break
|
||||||
else:
|
self.r.lpush('new', data)
|
||||||
got_one_frame = True
|
|
||||||
print('... Done with {}.'.format(self.client_address[0]))
|
print('... Done with {}.'.format(self.client_address[0]))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,11 @@ def TCPConfigure(server, port):
|
||||||
return Client(this, server, port)
|
return Client(this, server, port)
|
||||||
|
|
||||||
def check_config(max_height, max_width, max_framerate):
|
def check_config(max_height, max_width, max_framerate):
|
||||||
if height > max_height:
|
if height <= 0 or height > max_height:
|
||||||
return False, "height cannot be higher than {}. Current: {}.".format(max_height, height)
|
return False, "height cannot be higher than {}. Current: {}.".format(max_height, height)
|
||||||
if width > max_width:
|
if width <= 0 or width > max_width:
|
||||||
return False, "width cannot be higher than {}. Current: {}.".format(max_width, width)
|
return False, "width cannot be higher than {}. Current: {}.".format(max_width, width)
|
||||||
if framerate > max_framerate:
|
if framerate <= 0 or framerate > max_framerate:
|
||||||
return False, "framerate cannot be higher than {}. Current: {}.".format(max_framerate, framerate)
|
return False, "framerate cannot be higher than {}. Current: {}.".format(max_framerate, framerate)
|
||||||
return True, None
|
return True, None
|
||||||
|
|
||||||
|
@ -46,11 +46,10 @@ def setup():
|
||||||
|
|
||||||
ledTCP = TCPConfigure("127.0.0.1", 9999)
|
ledTCP = TCPConfigure("127.0.0.1", 9999)
|
||||||
max_height, max_width, max_framerate = receive_config(ledTCP)
|
max_height, max_width, max_framerate = receive_config(ledTCP)
|
||||||
print(max_height, max_width, max_framerate)
|
|
||||||
good, reason = check_config(max_height, max_width, max_framerate)
|
good, reason = check_config(max_height, max_width, max_framerate)
|
||||||
if not good:
|
if not good:
|
||||||
raise Exception(reason)
|
raise Exception(reason)
|
||||||
send_config(ledTCP)
|
send_config(ledTCP, height, width, framerate)
|
||||||
size(width, height)
|
size(width, height)
|
||||||
dimension = width * height
|
dimension = width * height
|
||||||
frameRate(framerate)
|
frameRate(framerate)
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import jarray
|
import jarray
|
||||||
import time
|
import time
|
||||||
|
import struct
|
||||||
from data_generator import image2data
|
from data_generator import image2data
|
||||||
|
|
||||||
def receive_config(socket):
|
def receive_config(socket):
|
||||||
max_height = jarray.zeros(1, "b")
|
max_height = jarray.zeros(4, "b")
|
||||||
max_width = jarray.zeros(1, "b")
|
max_width = jarray.zeros(4, "b")
|
||||||
max_framerate = jarray.zeros(1, "b")
|
max_framerate = jarray.zeros(4, "b")
|
||||||
while True:
|
while True:
|
||||||
available_bytes = socket.available()
|
available_bytes = socket.available()
|
||||||
if available_bytes > 0:
|
if available_bytes > 0:
|
||||||
|
@ -14,12 +15,15 @@ def receive_config(socket):
|
||||||
socket.readBytes(max_height)
|
socket.readBytes(max_height)
|
||||||
socket.readBytes(max_width)
|
socket.readBytes(max_width)
|
||||||
socket.readBytes(max_framerate)
|
socket.readBytes(max_framerate)
|
||||||
return max_height[0], max_width[0], max_framerate[0]
|
max_height = struct.unpack("<i", max_height)[0]
|
||||||
|
max_width = struct.unpack("<i", max_width)[0]
|
||||||
|
max_framerate = struct.unpack("<i", max_framerate)[0]
|
||||||
|
return max_height, max_width, max_framerate
|
||||||
|
|
||||||
def send_config(socket, height, width, framerate):
|
def send_config(socket, height, width, framerate):
|
||||||
socket.write(height)
|
socket.write(struct.pack('<i', height))
|
||||||
socket.write(width)
|
socket.write(struct.pack('<i', width))
|
||||||
socket.write(framerate)
|
socket.write(struct.pack('<i', framerate))
|
||||||
|
|
||||||
def send_TCP(socket, data, long_line, gammatable):
|
def send_TCP(socket, data, long_line, gammatable):
|
||||||
image2data(data, long_line, gammatable)
|
image2data(data, long_line, gammatable)
|
||||||
|
|
Loading…
Reference in New Issue