137 lines
3.2 KiB
Python
137 lines
3.2 KiB
Python
import logging
|
|
import multiprocessing
|
|
import time
|
|
from pathlib import Path
|
|
|
|
import cv2
|
|
import numpy as np
|
|
from tqdm import tqdm
|
|
|
|
from nodes.Beamformer import Beamformer
|
|
from nodes.Broker import Broker
|
|
from nodes.ImageCV import ImageCV
|
|
from nodes.Loader import Loader
|
|
from nodes.MainUI import MainUI
|
|
from nodes.Node import Node
|
|
from BusClient import BusClient
|
|
from utils.Msg import Msg1, Msg2, BMMsg, TickMsg, StrMsg, KillMsg
|
|
from nodes.WebRTC import WebRTC
|
|
|
|
|
|
class M1(Node):
|
|
def loop(self):
|
|
cnt = 0
|
|
while True:
|
|
cnt += 1
|
|
self.send(str(cnt).encode())
|
|
time.sleep(1)
|
|
|
|
|
|
class M2(Node):
|
|
def loop(self):
|
|
while True:
|
|
print(self.recv())
|
|
|
|
|
|
class M3(Node):
|
|
topics = [StrMsg]
|
|
def loop(self):
|
|
arr = []
|
|
for img in tqdm(list(Path('/home/lambda/Videos/pngs/New Folder/').glob('*.png'))):
|
|
img = cv2.imread(str(img))
|
|
# img = cv2.resize(img, (1920 // 2, 1080 // 2))
|
|
img = img.reshape(1080, 1920, 3)
|
|
|
|
z = np.zeros((1080, 1920, 4), dtype=np.uint8)
|
|
z[:, :, :3] = img
|
|
img = z
|
|
img = cv2.cvtColor(img, cv2.COLOR_BGRA2RGBA)
|
|
arr.append(img.tobytes())
|
|
|
|
# while self.isalive:
|
|
# for b in arr:
|
|
# self.send(BMMsg(0, b))
|
|
# # self.pub_socket.send(b)
|
|
# # self.send(b)
|
|
# r = self.c.poller.poll(int(1000 / 60))
|
|
# # print(r)
|
|
# if r and Msg.decode_msg(r[0][0].recv()).name == '':
|
|
# self.isalive = False
|
|
# break
|
|
# # time.sleep(1 / 60)
|
|
while self.isalive:
|
|
for b in arr:
|
|
msg = self.recv()
|
|
if isinstance(msg, KillMsg):
|
|
if msg.name == '':
|
|
self.isalive = False
|
|
break
|
|
self.send(BMMsg(0, b))
|
|
|
|
# if r and Msg.decode_msg(r[0][0].recv()).name == '':
|
|
|
|
|
|
class M4(Node):
|
|
def loop(self):
|
|
while True:
|
|
self.send(Msg1())
|
|
time.sleep(1)
|
|
|
|
|
|
class MTIME(Node):
|
|
def loop(self):
|
|
while True:
|
|
t = time.time()
|
|
self.send(TickMsg(t))
|
|
time.sleep(10)
|
|
# print(t)
|
|
|
|
|
|
class MLISTEN(Node):
|
|
topics = [StrMsg]
|
|
|
|
def loop(self):
|
|
while self.isalive:
|
|
r = self.recv()
|
|
print(r)
|
|
if isinstance(r, KillMsg) and r.name == '':
|
|
self.isalive = False
|
|
break
|
|
self.send(TickMsg(time.time()))
|
|
|
|
|
|
class M6(Node):
|
|
topics = [Msg2.eid()]
|
|
|
|
def loop(self):
|
|
while True:
|
|
print(self.recv())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
logging.basicConfig(level=logging.INFO)
|
|
multiprocessing.set_start_method('spawn')
|
|
pps = []
|
|
ps = [
|
|
Broker(),
|
|
WebRTC(),
|
|
# M3(),
|
|
MainUI(),
|
|
ImageCV(),
|
|
MLISTEN(),
|
|
Beamformer(),
|
|
Loader(),
|
|
]
|
|
for p in ps:
|
|
pps.append(multiprocessing.Process(target=p))
|
|
for p in pps:
|
|
p.start()
|
|
|
|
c = BusClient(KillMsg)
|
|
while True:
|
|
x: KillMsg = c.recv()
|
|
if x.name == '':
|
|
break
|
|
for p in pps:
|
|
p.kill()
|