big fix #1
This commit is contained in:
parent
97e6eab5df
commit
253516bb5b
@ -10,6 +10,8 @@ LIVE_SOCKET_IP = '11.6.1.71'
|
||||
LIVE_REP_SOCKET_PORT = 5556
|
||||
LIVE_SOCKET = f'{LIVE_SOCKET_IP}:5555'
|
||||
LIVE_REP_SOCKET = f'{LIVE_SOCKET_IP}:{LIVE_REP_SOCKET_PORT}'
|
||||
MI_REP_SOCKET_PORT = 5557
|
||||
DEVICE_PY_REP_SOCKET_PORT = 5558
|
||||
VIDEO_HEIGHT = 1920
|
||||
VIDEO_WIDTH = 1080
|
||||
|
||||
@ -22,6 +24,7 @@ BASE = Path(__file__).parent.parent
|
||||
DS = BASE / '@DS'
|
||||
DOC = BASE / 'doc'
|
||||
CONFIG = BASE / 'config'
|
||||
ASSETS = BASE / 'assets'
|
||||
DS.mkdir(exist_ok=True, parents=True)
|
||||
DOC.mkdir(exist_ok=True, parents=True)
|
||||
DEVICE_CONFIG = CONFIG / 'device'
|
||||
|
||||
@ -2,46 +2,95 @@ import logging
|
||||
import struct
|
||||
import subprocess
|
||||
import time
|
||||
from enum import Enum, auto
|
||||
from threading import Thread
|
||||
|
||||
import zmq
|
||||
|
||||
from BusClient import BusClient
|
||||
from config import LIVE_REP_SOCKET, CONFIG, DEVICE_CONFIG
|
||||
from nodes.Node import Node
|
||||
from utils.Msg import ImageArgMsg, KillMsg, SetDeviceConnectedMsg, SetDeviceEnabledMsg, DeviceEnabledMsg, \
|
||||
DeviceConnectedMsg, SetDeviceConfigMsg, DeviceOnlineMsg, DeviceConfigListMsg, RequestRfFrameMsg, RfFrameMsg, \
|
||||
RfFrameWithMetaMsg, DeviceZero
|
||||
RfFrameWithMetaMsg, DeviceZero, SetDeviceSwitchMsg, DeviceSwitchMsg, SeqMetaMsg, RefreshDeviceMsg
|
||||
from utils.RfMeta import RfFrameMeta
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DeviceCmd(Enum):
|
||||
Exit = 0
|
||||
|
||||
GetName = auto()
|
||||
GetData = auto()
|
||||
GetConnection = auto()
|
||||
GetEnable = auto()
|
||||
|
||||
SetNameAndFileOnly = auto()
|
||||
SetConnectionOn = auto()
|
||||
SetConnectionOff = auto()
|
||||
SetEnableOn = auto()
|
||||
SetEnableOff = auto()
|
||||
SetZero = auto()
|
||||
|
||||
class Device(Node):
|
||||
topics = [SetDeviceConnectedMsg, SetDeviceEnabledMsg, SetDeviceConfigMsg, RequestRfFrameMsg, DeviceZero]
|
||||
magic = 7355608
|
||||
topics = [SetDeviceConnectedMsg, SetDeviceEnabledMsg, SetDeviceConfigMsg, RequestRfFrameMsg, DeviceZero,
|
||||
DeviceSwitchMsg
|
||||
]
|
||||
|
||||
def __init__(self, level=logging.INFO):
|
||||
super(Device, self).__init__(level=level)
|
||||
self.arg = ImageArgMsg('', t_start=0, t_end=1499)
|
||||
self.seq_meta = None
|
||||
self.device_rep_socket = None
|
||||
self.device_rep_socket: zmq.Socket = None
|
||||
self.ok = b'ok\x00'
|
||||
self.loop2_t = None
|
||||
self.switch = False
|
||||
|
||||
def loop2(self):
|
||||
while True:
|
||||
self.online()
|
||||
time.sleep(1)
|
||||
|
||||
def device_cmd(self, cmd: DeviceCmd, v: bytes = b''):
|
||||
self.device_rep_socket.send(struct.pack('i', self.magic) + struct.pack('i', cmd.value) + v)
|
||||
|
||||
def connect(self):
|
||||
self.device_rep_socket.send(b'connect')
|
||||
temp_client = BusClient(SetDeviceSwitchMsg,RefreshDeviceMsg, poller=True)
|
||||
temp_client.poller.register(self.device_rep_socket, zmq.POLLIN)
|
||||
self.device_cmd(DeviceCmd.SetConnectionOn)
|
||||
logger.warning('onn')
|
||||
d = dict(temp_client.poller.poll())
|
||||
|
||||
if self.device_rep_socket in d:
|
||||
rb = self.device_rep_socket.recv()
|
||||
if rb == self.ok:
|
||||
self.send(DeviceConnectedMsg(True))
|
||||
else:
|
||||
logger.error(f"Device msg: {rb}")
|
||||
if temp_client.sub in d:
|
||||
msg = temp_client.recv()
|
||||
if isinstance(msg, SetDeviceSwitchMsg):
|
||||
if not msg.value:
|
||||
self.switch = False
|
||||
logger.warning(f"interrupt connecting")
|
||||
self.device_rep_socket.close()
|
||||
self.context.term()
|
||||
self.context = zmq.Context()
|
||||
self.device_rep_socket = self.context.socket(zmq.REQ)
|
||||
self.device_rep_socket.connect(f"tcp://{LIVE_REP_SOCKET}")
|
||||
if isinstance(msg,RefreshDeviceMsg):
|
||||
self.switch = False
|
||||
logger.warning(f"interrupt connecting")
|
||||
self.device_rep_socket.close()
|
||||
self.context.term()
|
||||
self.context = zmq.Context()
|
||||
self.device_rep_socket = self.context.socket(zmq.REQ)
|
||||
self.device_rep_socket.connect(f"tcp://{LIVE_REP_SOCKET}")
|
||||
|
||||
def disconnect(self):
|
||||
self.device_rep_socket.send(b'disconnect')
|
||||
self.device_cmd(DeviceCmd.SetConnectionOff)
|
||||
rb = self.device_rep_socket.recv()
|
||||
if rb == self.ok:
|
||||
self.send(DeviceConnectedMsg(False))
|
||||
@ -49,7 +98,7 @@ class Device(Node):
|
||||
logger.error(f"Device msg: {rb}")
|
||||
|
||||
def enable(self):
|
||||
self.device_rep_socket.send(b'enable')
|
||||
self.device_cmd(DeviceCmd.SetEnableOn)
|
||||
rb = self.device_rep_socket.recv()
|
||||
if rb == self.ok:
|
||||
self.send(DeviceEnabledMsg(True))
|
||||
@ -59,7 +108,7 @@ class Device(Node):
|
||||
return False
|
||||
|
||||
def disable(self):
|
||||
self.device_rep_socket.send(b'disable')
|
||||
self.device_cmd(DeviceCmd.SetEnableOff)
|
||||
rb = self.device_rep_socket.recv()
|
||||
if rb == self.ok:
|
||||
self.send(DeviceEnabledMsg(False))
|
||||
@ -80,8 +129,8 @@ class Device(Node):
|
||||
self.send(DeviceOnlineMsg(True))
|
||||
return True
|
||||
|
||||
def enabled(self):
|
||||
self.device_rep_socket.send(b'enabled')
|
||||
def get_enable(self):
|
||||
self.device_cmd(DeviceCmd.GetEnable)
|
||||
rb = self.device_rep_socket.recv()
|
||||
match rb:
|
||||
case b'true':
|
||||
@ -93,8 +142,14 @@ class Device(Node):
|
||||
case _:
|
||||
logger.error(f"Device msg: {rb}")
|
||||
|
||||
def connected(self):
|
||||
self.device_rep_socket.send(b'connected')
|
||||
def get_seq_meta_name(self):
|
||||
self.device_cmd(DeviceCmd.GetName)
|
||||
rb = self.device_rep_socket.recv()
|
||||
if rb != b'':
|
||||
self.send(SeqMetaMsg('live', rb.decode()))
|
||||
|
||||
def get_connection(self):
|
||||
self.device_cmd(DeviceCmd.GetConnection)
|
||||
rb = self.device_rep_socket.recv()
|
||||
match rb:
|
||||
case b'true':
|
||||
@ -106,18 +161,20 @@ class Device(Node):
|
||||
case _:
|
||||
logger.error(f"Device msg: {rb}")
|
||||
|
||||
def setfile(self, config_str: str):
|
||||
if self.enabled():
|
||||
def set_name_and_file(self, name: str, config_str: str):
|
||||
if self.get_enable():
|
||||
self.disable()
|
||||
self.setfileonly(config_str)
|
||||
self.set_name_and_file_only(name, config_str)
|
||||
self.enable()
|
||||
elif self.connected():
|
||||
self.setfileonly(config_str)
|
||||
elif self.get_connection():
|
||||
self.set_name_and_file_only(name, config_str)
|
||||
else:
|
||||
logger.warning(f"Device not connect, cannot set config")
|
||||
|
||||
def setfileonly(self, s: str):
|
||||
self.device_rep_socket.send(b'fileonly' + s.encode())
|
||||
def set_name_and_file_only(self, name: str, txt: str):
|
||||
name_encoded = name.encode()
|
||||
self.device_cmd(DeviceCmd.SetNameAndFileOnly,
|
||||
struct.pack('I', name_encoded.__len__()) + name.encode() + txt.encode())
|
||||
rb = self.device_rep_socket.recv()
|
||||
if rb == self.ok:
|
||||
return True
|
||||
@ -125,12 +182,12 @@ class Device(Node):
|
||||
logger.error(f"Device msg: {rb}")
|
||||
return False
|
||||
|
||||
def data(self):
|
||||
self.device_rep_socket.send(b'data')
|
||||
def get_data(self):
|
||||
self.device_cmd(DeviceCmd.GetData)
|
||||
return self.device_rep_socket.recv()
|
||||
|
||||
def zero(self):
|
||||
self.device_rep_socket.send(b'zero')
|
||||
def set_zero(self):
|
||||
self.device_cmd(DeviceCmd.SetZero)
|
||||
return self.device_rep_socket.recv()
|
||||
|
||||
def custom_setup(self):
|
||||
@ -141,10 +198,11 @@ class Device(Node):
|
||||
|
||||
def loop(self):
|
||||
arr = []
|
||||
time.sleep(1)
|
||||
time.sleep(3)
|
||||
if self.online():
|
||||
self.connected()
|
||||
self.enabled()
|
||||
self.get_connection()
|
||||
self.get_enable()
|
||||
self.get_seq_meta_name()
|
||||
for f in DEVICE_CONFIG.glob('*.txt'):
|
||||
arr.append((f.stem, f.read_text()))
|
||||
self.send(DeviceConfigListMsg(arr))
|
||||
@ -162,15 +220,19 @@ class Device(Node):
|
||||
else:
|
||||
self.disable()
|
||||
elif isinstance(msg, SetDeviceConnectedMsg):
|
||||
logger.info('connecting to device')
|
||||
if msg.value:
|
||||
self.connect()
|
||||
else:
|
||||
self.disconnect()
|
||||
elif isinstance(msg, SetDeviceConfigMsg):
|
||||
self.setfile(msg.value)
|
||||
self.set_name_and_file(msg.name, msg.txt)
|
||||
self.send(SeqMetaMsg('live', msg.name))
|
||||
elif isinstance(msg, RequestRfFrameMsg):
|
||||
braw = self.data()
|
||||
if self.switch:
|
||||
braw = self.get_data()
|
||||
if braw == b'':
|
||||
logger.warning('empty msg!')
|
||||
continue
|
||||
_, sequence_id, encoder = struct.unpack_from('=iqi', braw)
|
||||
buffer = braw[4 + 8 + 4:]
|
||||
@ -178,5 +240,15 @@ class Device(Node):
|
||||
self.send(RfFrameWithMetaMsg(0, RfFrameMeta(
|
||||
encoder=encoder, sequence_id=sequence_id
|
||||
), buffer))
|
||||
else:
|
||||
logger.warning('device not online')
|
||||
elif isinstance(msg, DeviceZero):
|
||||
self.zero()
|
||||
self.set_zero()
|
||||
elif isinstance(msg, DeviceSwitchMsg):
|
||||
self.switch = msg.value == 'GREEN'
|
||||
# elif isinstance(msg, SetDeviceSwitchMsg):
|
||||
# logger.info(f'{msg.value}')
|
||||
# if msg.value:
|
||||
# self.device_rep_socket.connect(f"tcp://{LIVE_REP_SOCKET}")
|
||||
# else:
|
||||
# self.device_rep_socket.close()
|
||||
|
||||
@ -14,7 +14,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ImageFFMPEG(Node):
|
||||
topics = [BMMsg, SetWindowVisibleMsg]
|
||||
topics = [BMMsg]
|
||||
|
||||
def __init__(self, level=logging.INFO):
|
||||
super().__init__(level=level)
|
||||
|
||||
@ -7,18 +7,19 @@ from enum import Enum, auto
|
||||
from pathlib import Path
|
||||
|
||||
import zmq
|
||||
from PyQt6 import QtCore, QtWidgets
|
||||
from PyQt6 import QtCore, QtWidgets, QtGui
|
||||
from PyQt6.QtCore import QByteArray
|
||||
from PyQt6.QtWidgets import QMainWindow, QApplication, QFrame, QMessageBox, QFileDialog, QLineEdit
|
||||
|
||||
from Main import Ui_MainWindow
|
||||
from ZMQReceiver import ZMQReceiver
|
||||
from config import DS, SOFTWARE_CONFIG, IMAGING_CONFIG
|
||||
from config import DS, SOFTWARE_CONFIG, IMAGING_CONFIG, ASSETS, MI_REP_SOCKET_PORT
|
||||
from nodes.Node import Node
|
||||
from utils.Msg import KillMsg, Msg, ImageArgMsg, SeqIdMinMax, MoveAxisMsg, SeqListMsg, SetBaseMsg, \
|
||||
SetSeqMetaMsg, SetPlayMode, DeviceConnectedMsg, DeviceEnabledMsg, DeviceOnlineMsg, SetDeviceEnabledMsg, \
|
||||
SetDeviceConnectedMsg, DeviceConfigListMsg, SetDeviceConfigMsg, SetRecordMsg, RobotRtsiMsg, RecordFrameMsg, \
|
||||
SeqIdList, SetWindowVisibleMsg, SetSidMsg, ImagingConfigNameListMsg, DeviceZero
|
||||
SeqIdList, SetWindowVisibleMsg, SetSidMsg, ImagingConfigNameListMsg, DeviceZero, DeviceSwitchMsg, \
|
||||
SetDeviceSwitchMsg, SeqMetaMsg, RefreshDeviceMsg
|
||||
from utils.RfMeta import RfSequenceMeta
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -28,6 +29,16 @@ class LinkStatus(Enum):
|
||||
RED = auto()
|
||||
YELLOW = auto()
|
||||
GREEN = auto()
|
||||
ORANGE = auto()
|
||||
|
||||
|
||||
def get_style_sheet(name, color):
|
||||
return f"""
|
||||
#{name}{{
|
||||
background: {color};
|
||||
border-radius: 7px;
|
||||
}}
|
||||
""".strip()
|
||||
|
||||
|
||||
def humanbytes(B):
|
||||
@ -55,6 +66,15 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
super(Adv, self).__init__(parent)
|
||||
self.p = p
|
||||
self.setupUi(self)
|
||||
self.device_switch_state: LinkStatus = LinkStatus.RED
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap(str(ASSETS / 'switch_button.png')))
|
||||
self.b_probe_head_switch.setIcon(icon)
|
||||
self.b_us_switch.setIcon(icon)
|
||||
self.b_cobot_switch.setIcon(icon)
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap(str(ASSETS / 'refresh_button.png')))
|
||||
self.b_us_refresh.setIcon(icon)
|
||||
zmq_receiver = ZMQReceiver(self)
|
||||
zmq_receiver.zmq_event.connect(self.on_zmq_event)
|
||||
zmq_receiver.start()
|
||||
@ -66,15 +86,19 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.arg = ImageArgMsg('ui', t_start=0, t_end=1499)
|
||||
self.b_base.clicked.connect(self.on_base_open)
|
||||
self.seq_meta: RfSequenceMeta | None = None
|
||||
self.b_play_live.clicked.connect(self.on_play_live)
|
||||
self.b_play_playback.clicked.connect(self.on_play_playback)
|
||||
# self.b_play_live.clicked.connect(self.on_play_live)
|
||||
# self.b_play_playback.clicked.connect(self.on_play_playback)
|
||||
self.g_playback.clicked.connect(self.on_play_playback)
|
||||
self.g_live.clicked.connect(self.on_play_live)
|
||||
|
||||
self.b_record.clicked.connect(self.on_record)
|
||||
self.record = False
|
||||
self.device_connected = False
|
||||
self.device_enabled = False
|
||||
# self.b_device_enabled.clicked.connect(lambda: self.p.send(SetDeviceEnabledMsg(not self.device_enabled)))
|
||||
# self.b_device_connected.clicked.connect(lambda: self.p.send(SetDeviceConnectedMsg(not self.device_connected)))
|
||||
self.c_live_seq_name.currentIndexChanged.connect(self.on_seq_meta)
|
||||
# self.c_live_seq_name.currentIndexChanged.connect(self.on_seq_meta)
|
||||
self.b_live_seq_apply.clicked.connect(self.on_seq_meta)
|
||||
self.l_base.setText(SOFTWARE_CONFIG.base_dir.__str__())
|
||||
self.l_base.textChanged.connect(lambda e:
|
||||
self.l_base.setStyleSheet("")
|
||||
@ -105,6 +129,45 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.b_probe_stop.clicked.connect(self.on_probe('stop'))
|
||||
|
||||
self.b_device_zero.clicked.connect(lambda: self.p.send(DeviceZero()))
|
||||
self.b_us_switch.clicked.connect(self.on_deivce_switch)
|
||||
self.b_us_refresh.clicked.connect(self.on_deivce_refresh)
|
||||
|
||||
self.mi_req_socket = zmq.Context().socket(zmq.REQ)
|
||||
self.mi_req_socket.connect(f"tcp://127.0.0.1:{MI_REP_SOCKET_PORT}")
|
||||
|
||||
def on_deivce_switch(self):
|
||||
match self.device_switch_state:
|
||||
case LinkStatus.RED:
|
||||
self.p.send(SetDeviceSwitchMsg(True))
|
||||
self.p.send(DeviceSwitchMsg('YELLOW'))
|
||||
case LinkStatus.GREEN | LinkStatus.YELLOW | LinkStatus.ORANGE:
|
||||
self.p.send(SetDeviceSwitchMsg(False))
|
||||
|
||||
def on_deivce_refresh(self):
|
||||
match self.device_switch_state:
|
||||
case LinkStatus.GREEN | LinkStatus.YELLOW | LinkStatus.ORANGE:
|
||||
self.p.send(RefreshDeviceMsg())
|
||||
self.set_device_enable(LinkStatus.RED)
|
||||
self.set_device_connection(LinkStatus.RED)
|
||||
self.update_device_buttons()
|
||||
|
||||
def on_device_switch_state(self):
|
||||
match self.device_switch_state:
|
||||
case LinkStatus.RED:
|
||||
self.g_device.setEnabled(False)
|
||||
self.g_us.setStyleSheet(get_style_sheet('g_us', 'pink'))
|
||||
self.set_device_enable(LinkStatus.RED)
|
||||
self.set_device_connection(LinkStatus.RED)
|
||||
self.update_device_buttons()
|
||||
case LinkStatus.YELLOW:
|
||||
self.g_device.setEnabled(False)
|
||||
self.g_us.setStyleSheet(get_style_sheet('g_us', 'yellow'))
|
||||
case LinkStatus.GREEN:
|
||||
self.g_device.setEnabled(True)
|
||||
self.g_us.setStyleSheet(get_style_sheet('g_us', 'LightGreen'))
|
||||
case LinkStatus.ORANGE:
|
||||
self.g_device.setEnabled(False)
|
||||
self.g_us.setStyleSheet(get_style_sheet('g_us', 'orange'))
|
||||
|
||||
def on_probe(self, arg):
|
||||
def f():
|
||||
@ -134,14 +197,15 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
base = QFileDialog.getExistingDirectory(self, 'Select Base Folder', DS.__str__())
|
||||
self.l_base.setText(Path(base).__str__())
|
||||
|
||||
def update_b_play_live_enabled(self):
|
||||
self.b_play_live.setEnabled(all([self.b1, self.b2]))
|
||||
# def update_b_play_live_enabled(self):
|
||||
# self.b_play_live.setEnabled(all([self.b1, self.b2]))
|
||||
|
||||
def on_base_open(self):
|
||||
if Path(self.l_base.text()):
|
||||
self.p.send(SetBaseMsg(self.l_base.text()))
|
||||
self.b1 = True
|
||||
self.update_b_play_live_enabled()
|
||||
self.g_cap.setEnabled(True)
|
||||
# self.b1 = True
|
||||
# self.update_b_play_live_enabled()
|
||||
|
||||
def set_device_connection(self, status: LinkStatus):
|
||||
match status:
|
||||
@ -176,23 +240,27 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
def update_c_playback_seq_name_enable(self):
|
||||
self.c_playback_seq_name.setEnabled(all([self.b3, self.b4]))
|
||||
|
||||
def on_play_live(self):
|
||||
self.s_sid.setEnabled(False)
|
||||
self.b_play_live.setStyleSheet('background-color: red;')
|
||||
self.b_play_playback.setStyleSheet('')
|
||||
self.b_record.setEnabled(True)
|
||||
self.l_record_commit.setEnabled(True)
|
||||
self.p.send(SetSeqMetaMsg('live', self.c_live_seq_name.itemText(self.c_live_seq_name.currentIndex())))
|
||||
def on_play_live(self, b):
|
||||
if b:
|
||||
self.g_playback.setChecked(False)
|
||||
# self.s_sid.setEnabled(False)
|
||||
# self.b_play_live.setStyleSheet('background-color: red;')
|
||||
# self.b_play_playback.setStyleSheet('')
|
||||
# self.b_record.setEnabled(True)
|
||||
# self.l_record_commit.setEnabled(True)
|
||||
# self.p.send(SetSeqMetaMsg('live', self.c_live_seq_name.itemText(self.c_live_seq_name.currentIndex())))
|
||||
self.p.send(SetPlayMode('live'))
|
||||
self.b3 = False
|
||||
self.update_c_playback_seq_name_enable()
|
||||
|
||||
def on_play_playback(self):
|
||||
self.s_sid.setEnabled(True)
|
||||
self.b_play_live.setStyleSheet('')
|
||||
self.b_play_playback.setStyleSheet('background-color: red;')
|
||||
self.b_record.setEnabled(False)
|
||||
self.l_record_commit.setEnabled(False)
|
||||
def on_play_playback(self, b):
|
||||
if b:
|
||||
self.g_live.setChecked(False)
|
||||
# self.s_sid.setEnabled(True)
|
||||
# self.b_play_live.setStyleSheet('')
|
||||
# self.b_play_playback.setStyleSheet('background-color: red;')
|
||||
# self.b_record.setEnabled(False)
|
||||
# self.l_record_commit.setEnabled(False)
|
||||
self.p.send(
|
||||
SetSeqMetaMsg('playback', self.c_playback_seq_name.itemText(self.c_playback_seq_name.currentIndex())))
|
||||
self.p.send(SetPlayMode('playback'))
|
||||
@ -216,6 +284,7 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.set_device_connection(LinkStatus.YELLOW)
|
||||
|
||||
def on_device_connect(self):
|
||||
logger.info('btn pre')
|
||||
self.p.send(SetDeviceConnectedMsg(True))
|
||||
self.b_device_connection.setEnabled(False)
|
||||
self.set_device_connection(LinkStatus.YELLOW)
|
||||
@ -320,7 +389,7 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
if msg.value.__len__() > 0:
|
||||
self.p.send(SetSeqMetaMsg('playback', self.c_playback_seq_name.itemText(
|
||||
self.c_playback_seq_name.currentIndex())))
|
||||
self.b_play_playback.setEnabled(True)
|
||||
# self.b_play_playback.setEnabled(True)
|
||||
elif isinstance(msg, SetSeqMetaMsg):
|
||||
self.seq_meta = RfSequenceMeta.from_name(msg.name)
|
||||
mmax_shape0 = max(self.seq_meta.shape)
|
||||
@ -338,15 +407,19 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
else:
|
||||
self.set_device_enable(LinkStatus.RED)
|
||||
self.update_device_buttons()
|
||||
elif isinstance(msg, DeviceOnlineMsg):
|
||||
if msg.value:
|
||||
self.l_online.setStyleSheet("")
|
||||
self.l_online.setText("Device Online")
|
||||
self.g_device.setDisabled(False)
|
||||
else:
|
||||
self.l_online.setStyleSheet("background-color: pink;")
|
||||
self.l_online.setText("Device Offline")
|
||||
self.g_device.setDisabled(True)
|
||||
elif isinstance(msg, SeqMetaMsg):
|
||||
if msg.target == 'live':
|
||||
self.l_live_seq_name.setText(msg.name)
|
||||
self.b_live_seq_apply.setEnabled(True)
|
||||
# elif isinstance(msg, DeviceOnlineMsg):
|
||||
# if msg.value:
|
||||
# # self.l_online.setStyleSheet("")
|
||||
# # self.l_online.setText("Device Online")
|
||||
# self.g_device.setEnabled(True)
|
||||
# else:
|
||||
# # self.l_online.setStyleSheet("background-color: pink;")
|
||||
# # self.l_online.setText("Device Offline")
|
||||
# self.g_device.setEnabled(False)
|
||||
elif isinstance(msg, DeviceConfigListMsg):
|
||||
for name, txt in msg.arr:
|
||||
self.c_live_seq_name.addItem(name, txt)
|
||||
@ -380,6 +453,9 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.c_imaging_config.clear()
|
||||
for name in msg.value:
|
||||
self.c_imaging_config.addItem(name)
|
||||
elif isinstance(msg, DeviceSwitchMsg):
|
||||
self.device_switch_state = LinkStatus[msg.value]
|
||||
self.on_device_switch_state()
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
traceback.print_exception(e)
|
||||
@ -421,14 +497,21 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
if self.sp_sid.sender() is None:
|
||||
self.p.send(SetSidMsg(v))
|
||||
|
||||
@QtCore.pyqtSlot(int)
|
||||
def on_seq_meta(self, v):
|
||||
if self.c_live_seq_name.sender() is None or isinstance(self.c_live_seq_name.sender(), QFrame):
|
||||
if self.c_live_seq_name.itemText(v) != 'Empty':
|
||||
self.b2 = True
|
||||
self.update_b_play_live_enabled()
|
||||
self.p.send(SetDeviceConfigMsg(self.c_live_seq_name.itemData(v)))
|
||||
self.p.send(SetSeqMetaMsg('live', self.c_live_seq_name.itemText(v)))
|
||||
# @QtCore.pyqtSlot(int)
|
||||
def on_seq_meta(self):
|
||||
v = self.c_live_seq_name.currentIndex()
|
||||
name = self.c_live_seq_name.currentText()
|
||||
if name != 'Empty':
|
||||
self.b_live_seq_apply.setEnabled(False)
|
||||
self.p.send(SetDeviceConfigMsg(name, self.c_live_seq_name.itemData(v)))
|
||||
# self.p.send(SetSeqMetaMsg('live', self.c_live_seq_name.itemText(v)))
|
||||
|
||||
# if self.c_live_seq_name.sender() is None or isinstance(self.c_live_seq_name.sender(), QFrame):
|
||||
# if self.c_live_seq_name.itemText(v) != 'Empty':
|
||||
# self.b2 = True
|
||||
# # self.update_b_play_live_enabled()
|
||||
# self.p.send(SetDeviceConfigMsg(self.c_live_seq_name.itemData(v)))
|
||||
# self.p.send(SetSeqMetaMsg('live', self.c_live_seq_name.itemText(v)))
|
||||
|
||||
|
||||
class MainUI(Node):
|
||||
@ -436,8 +519,8 @@ class MainUI(Node):
|
||||
ImagingConfigNameListMsg,
|
||||
SeqListMsg, SetSeqMetaMsg, SeqIdList, SetWindowVisibleMsg, SetSidMsg,
|
||||
DeviceConnectedMsg, DeviceEnabledMsg, DeviceOnlineMsg, DeviceConfigListMsg,
|
||||
RobotRtsiMsg,
|
||||
RecordFrameMsg]
|
||||
RobotRtsiMsg, DeviceSwitchMsg,
|
||||
RecordFrameMsg, SeqMetaMsg]
|
||||
|
||||
def __init__(self, level=logging.INFO):
|
||||
super().__init__(level=level)
|
||||
|
||||
131
src/nodes/Mi.py
Normal file
131
src/nodes/Mi.py
Normal file
@ -0,0 +1,131 @@
|
||||
import logging
|
||||
import struct
|
||||
import subprocess
|
||||
import time
|
||||
from threading import Thread
|
||||
|
||||
import zmq
|
||||
|
||||
from config import LIVE_REP_SOCKET, CONFIG, DEVICE_CONFIG, MI_REP_SOCKET_PORT, DEVICE_PY_REP_SOCKET_PORT, LIVE_SOCKET_IP
|
||||
from nodes.Node import Node
|
||||
from utils.Msg import ImageArgMsg, KillMsg, SetDeviceConnectedMsg, SetDeviceEnabledMsg, DeviceEnabledMsg, \
|
||||
DeviceConnectedMsg, SetDeviceConfigMsg, DeviceOnlineMsg, DeviceConfigListMsg, RequestRfFrameMsg, RfFrameMsg, \
|
||||
RfFrameWithMetaMsg, DeviceZero, SetDeviceSwitchMsg, DeviceSwitchMsg, RefreshDeviceMsg
|
||||
from utils.RfMeta import RfFrameMeta
|
||||
from utils.mi import c1_connect, c1_connected, c1_disconnect
|
||||
from utils.network import check_port
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Mi(Node):
|
||||
topics = [SetDeviceSwitchMsg,RefreshDeviceMsg]
|
||||
|
||||
def __init__(self, level=logging.INFO):
|
||||
super(Mi, self).__init__(level=level)
|
||||
self.ping1enable = False
|
||||
self.ping60enable = False
|
||||
|
||||
def custom_setup(self):
|
||||
self.mi_rep_socket = self.context.socket(zmq.REP)
|
||||
self.mi_rep_socket.bind(f"tcp://*:{MI_REP_SOCKET_PORT}")
|
||||
|
||||
self.device_py_req_socket = self.context.socket(zmq.REQ)
|
||||
self.device_py_req_socket.connect(f"tcp://{LIVE_SOCKET_IP}:{DEVICE_PY_REP_SOCKET_PORT}")
|
||||
|
||||
self.device_py_req_socket1s = self.context.socket(zmq.REQ)
|
||||
self.device_py_req_socket1s.connect(f"tcp://{LIVE_SOCKET_IP}:{DEVICE_PY_REP_SOCKET_PORT}")
|
||||
|
||||
self.device_py_req_socket60s = self.context.socket(zmq.REQ)
|
||||
self.device_py_req_socket60s.connect(f"tcp://{LIVE_SOCKET_IP}:{DEVICE_PY_REP_SOCKET_PORT}")
|
||||
|
||||
self.ping1s_thread = Thread(target=self.ping1s)
|
||||
self.ping1s_thread.start()
|
||||
self.ping60s_thread = Thread(target=self.ping60s)
|
||||
self.ping60s_thread.start()
|
||||
|
||||
self.c.poller.register(self.mi_rep_socket, zmq.POLLIN)
|
||||
|
||||
def ping1s(self):
|
||||
while True:
|
||||
if self.ping1enable:
|
||||
self.device_py_req_socket1s.send(b'get_device_status')
|
||||
match self.device_py_req_socket1s.recv():
|
||||
case b'on':
|
||||
self.send(DeviceSwitchMsg('GREEN'))
|
||||
self.ping1enable = False
|
||||
self.ping60enable = True
|
||||
self.device_py_req_socket1s.send(b'start')
|
||||
self.device_py_req_socket1s.recv()
|
||||
case b'off':
|
||||
pass
|
||||
case b'err':
|
||||
self.send(DeviceSwitchMsg('ORANGE'))
|
||||
self.ping1enable = False
|
||||
time.sleep(1)
|
||||
|
||||
def ping60s(self):
|
||||
while True:
|
||||
if self.ping60enable:
|
||||
self.device_py_req_socket60s.send(b'get_device_status')
|
||||
match self.device_py_req_socket60s.recv():
|
||||
case b'off' | b'err':
|
||||
self.send(DeviceSwitchMsg('ORANGE'))
|
||||
self.ping60enable = False
|
||||
self.device_py_req_socket60s.send(b'get_driver_status')
|
||||
match self.device_py_req_socket60s.recv():
|
||||
case b'off' | b'err':
|
||||
self.send(DeviceSwitchMsg('ORANGE'))
|
||||
self.ping60enable = False
|
||||
time.sleep(10)
|
||||
|
||||
def loop(self):
|
||||
if c1_connected() and check_port(LIVE_SOCKET_IP, DEVICE_PY_REP_SOCKET_PORT):
|
||||
self.device_py_req_socket.send(b'get_device_status')
|
||||
r = self.device_py_req_socket.recv()
|
||||
if r == b'on':
|
||||
self.device_py_req_socket.send(b'get_driver_status')
|
||||
r = self.device_py_req_socket.recv()
|
||||
if r == b'on':
|
||||
self.send(DeviceSwitchMsg('GREEN'))
|
||||
else:
|
||||
self.send(DeviceSwitchMsg('ORANGE'))
|
||||
else:
|
||||
self.send(DeviceSwitchMsg('YELLOW'))
|
||||
self.ping1enable = True
|
||||
while True:
|
||||
r = dict(self.c.poller.poll())
|
||||
# if self.mi_rep_socket in r:
|
||||
# msg = self.mi_rep_socket.recv()
|
||||
# if msg == b'c1_connected':
|
||||
# c1_connected()
|
||||
#
|
||||
# if msg == b'c1_connect':
|
||||
# c1_connect()
|
||||
# if msg == b'c1_disconnect':
|
||||
# c1_disconnect()
|
||||
# self.mi_rep_socket.send(b'ok')
|
||||
if self.c.sub in r:
|
||||
msg = self.recv()
|
||||
logger.info(f'{msg}')
|
||||
if isinstance(msg, KillMsg):
|
||||
if msg.name == '':
|
||||
return
|
||||
if isinstance(msg, SetDeviceSwitchMsg):
|
||||
if msg.value:
|
||||
c1_connect()
|
||||
self.ping1enable = True
|
||||
else:
|
||||
self.ping60enable = False
|
||||
c1_disconnect()
|
||||
self.device_py_req_socket.send(b'kill')
|
||||
self.device_py_req_socket.recv()
|
||||
self.send(DeviceSwitchMsg('RED'))
|
||||
elif isinstance(msg,RefreshDeviceMsg):
|
||||
self.device_py_req_socket.send(b'kill')
|
||||
self.device_py_req_socket.recv()
|
||||
self.device_py_req_socket.send(b'start')
|
||||
self.device_py_req_socket.recv()
|
||||
self.send(DeviceSwitchMsg('GREEN'))
|
||||
self.ping60enable = True
|
||||
|
||||
@ -8,7 +8,7 @@ import zmq
|
||||
from config import IMAGING_CONFIG
|
||||
from nodes.Node import Node
|
||||
from utils.Msg import ImageArgMsg, KillMsg, SetSeqMetaMsg, SetPlayMode, SetDeviceConfigMsg, \
|
||||
ImagingConfigNameListMsg, RfFrameWithMetaMsg, BeamformerMsg, RequestRfFrameMsg, RobotRtsiMsg
|
||||
ImagingConfigNameListMsg, RfFrameWithMetaMsg, BeamformerMsg, RequestRfFrameMsg, RobotRtsiMsg, SeqMetaMsg
|
||||
from utils.RfFile import RfSequenceMeta
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -16,7 +16,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class Muxer(Node):
|
||||
topics = [SetSeqMetaMsg, SetPlayMode, SetDeviceConfigMsg, RfFrameWithMetaMsg, RequestRfFrameMsg,
|
||||
ImageArgMsg, RobotRtsiMsg]
|
||||
ImageArgMsg, RobotRtsiMsg, SeqMetaMsg]
|
||||
|
||||
def __init__(self, level=logging.INFO):
|
||||
super(Muxer, self).__init__(level=level)
|
||||
@ -93,10 +93,13 @@ class Muxer(Node):
|
||||
self.arg = msg
|
||||
elif isinstance(msg, SetSeqMetaMsg):
|
||||
match msg.target:
|
||||
case 'live':
|
||||
self.seq_meta_live = RfSequenceMeta.from_name(msg.name)
|
||||
case 'playback':
|
||||
self.seq_meta_playback = RfSequenceMeta.from_name(msg.name)
|
||||
elif isinstance(msg, SeqMetaMsg):
|
||||
logger.info(f'use live {msg}')
|
||||
match msg.target:
|
||||
case 'live':
|
||||
self.seq_meta_live = RfSequenceMeta.from_name(msg.name)
|
||||
elif isinstance(msg, SetPlayMode):
|
||||
logger.debug(f'set playmode {msg}')
|
||||
self.play_mode = msg.value
|
||||
|
||||
@ -39,6 +39,17 @@ class Node:
|
||||
FORMAT = '[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s'
|
||||
FORMAT = '"%(pathname)s:%(lineno)d" [%(asctime)s.%(msecs)03d] %(levelname)s - %(message)s'
|
||||
logging.basicConfig(level=self.level, format=FORMAT,datefmt = '%Y-%m-%d %H:%M:%S',)
|
||||
rootLogger = logging.getLogger()
|
||||
|
||||
logFormatter = logging.Formatter(FORMAT,datefmt = '%Y-%m-%d %H:%M:%S',)
|
||||
|
||||
fileHandler = logging.FileHandler("log.log")
|
||||
fileHandler.setFormatter(logFormatter)
|
||||
rootLogger.addHandler(fileHandler)
|
||||
|
||||
# consoleHandler = logging.StreamHandler()
|
||||
# consoleHandler.setFormatter(logFormatter)
|
||||
# rootLogger.addHandler(consoleHandler)
|
||||
|
||||
self.context = zmq.Context()
|
||||
if self.enable_init:
|
||||
|
||||
618
src/ui/Main.py
618
src/ui/Main.py
@ -12,24 +12,44 @@ from PyQt6 import QtCore, QtGui, QtWidgets
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(1158, 998)
|
||||
MainWindow.resize(1238, 999)
|
||||
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.g_device = QtWidgets.QGroupBox(parent=self.centralwidget)
|
||||
self.g_us = QtWidgets.QGroupBox(parent=self.centralwidget)
|
||||
self.g_us.setStyleSheet("#g_us{\n"
|
||||
" background: pink;\n"
|
||||
"border-radius: 7px;\n"
|
||||
"}")
|
||||
self.g_us.setObjectName("g_us")
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.g_us)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
|
||||
self.label_30 = QtWidgets.QLabel(parent=self.g_us)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(15)
|
||||
self.label_30.setFont(font)
|
||||
self.label_30.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.label_30.setObjectName("label_30")
|
||||
self.horizontalLayout_9.addWidget(self.label_30)
|
||||
self.b_us_refresh = QtWidgets.QPushButton(parent=self.g_us)
|
||||
self.b_us_refresh.setText("")
|
||||
self.b_us_refresh.setObjectName("b_us_refresh")
|
||||
self.horizontalLayout_9.addWidget(self.b_us_refresh)
|
||||
self.b_us_switch = QtWidgets.QPushButton(parent=self.g_us)
|
||||
self.b_us_switch.setText("")
|
||||
self.b_us_switch.setObjectName("b_us_switch")
|
||||
self.horizontalLayout_9.addWidget(self.b_us_switch)
|
||||
self.horizontalLayout_9.setStretch(0, 1)
|
||||
self.verticalLayout_2.addLayout(self.horizontalLayout_9)
|
||||
self.g_device = QtWidgets.QGroupBox(parent=self.g_us)
|
||||
self.g_device.setEnabled(True)
|
||||
self.g_device.setTitle("")
|
||||
self.g_device.setObjectName("g_device")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.g_device)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.l_online = QtWidgets.QLabel(parent=self.g_device)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(15)
|
||||
self.l_online.setFont(font)
|
||||
self.l_online.setStyleSheet("background-color: pink;")
|
||||
self.l_online.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.l_online.setObjectName("l_online")
|
||||
self.verticalLayout.addWidget(self.l_online)
|
||||
self.gridLayout_8 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_8.setObjectName("gridLayout_8")
|
||||
self.b_device_connection = QtWidgets.QPushButton(parent=self.g_device)
|
||||
@ -58,22 +78,34 @@ class Ui_MainWindow(object):
|
||||
self.gridLayout_8.setColumnStretch(1, 1)
|
||||
self.gridLayout_8.setColumnStretch(3, 1)
|
||||
self.verticalLayout.addLayout(self.gridLayout_8)
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.label_20 = QtWidgets.QLabel(parent=self.g_device)
|
||||
self.label_20.setObjectName("label_20")
|
||||
self.horizontalLayout.addWidget(self.label_20)
|
||||
self.gridLayout_7 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_7.setObjectName("gridLayout_7")
|
||||
self.label_32 = QtWidgets.QLabel(parent=self.g_device)
|
||||
self.label_32.setObjectName("label_32")
|
||||
self.gridLayout_7.addWidget(self.label_32, 1, 0, 1, 1)
|
||||
self.c_live_seq_name = QtWidgets.QComboBox(parent=self.g_device)
|
||||
self.c_live_seq_name.setEnabled(False)
|
||||
self.c_live_seq_name.setObjectName("c_live_seq_name")
|
||||
self.c_live_seq_name.addItem("")
|
||||
self.horizontalLayout.addWidget(self.c_live_seq_name)
|
||||
self.horizontalLayout.setStretch(1, 1)
|
||||
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||
self.gridLayout_7.addWidget(self.c_live_seq_name, 0, 1, 1, 1)
|
||||
self.label_20 = QtWidgets.QLabel(parent=self.g_device)
|
||||
self.label_20.setObjectName("label_20")
|
||||
self.gridLayout_7.addWidget(self.label_20, 0, 0, 1, 1)
|
||||
self.b_live_seq_apply = QtWidgets.QPushButton(parent=self.g_device)
|
||||
self.b_live_seq_apply.setObjectName("b_live_seq_apply")
|
||||
self.gridLayout_7.addWidget(self.b_live_seq_apply, 0, 2, 1, 1)
|
||||
self.l_live_seq_name = QtWidgets.QLabel(parent=self.g_device)
|
||||
self.l_live_seq_name.setObjectName("l_live_seq_name")
|
||||
self.gridLayout_7.addWidget(self.l_live_seq_name, 1, 1, 1, 2)
|
||||
self.gridLayout_7.setColumnStretch(1, 1)
|
||||
self.verticalLayout.addLayout(self.gridLayout_7)
|
||||
self.b_device_zero = QtWidgets.QPushButton(parent=self.g_device)
|
||||
self.b_device_zero.setObjectName("b_device_zero")
|
||||
self.verticalLayout.addWidget(self.b_device_zero)
|
||||
self.gridLayout.addWidget(self.g_device, 0, 0, 1, 1)
|
||||
self.verticalLayout.setStretch(1, 1)
|
||||
self.verticalLayout_2.addWidget(self.g_device)
|
||||
self.verticalLayout_2.setStretch(1, 1)
|
||||
self.gridLayout.addWidget(self.g_us, 0, 0, 1, 1)
|
||||
self.gridLayout_4 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_4.setObjectName("gridLayout_4")
|
||||
self.label_14 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
@ -157,22 +189,220 @@ class Ui_MainWindow(object):
|
||||
self.horizontalSlider_8.setObjectName("horizontalSlider_8")
|
||||
self.gridLayout_4.addWidget(self.horizontalSlider_8, 6, 1, 1, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_4, 3, 1, 1, 1)
|
||||
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
||||
self.label = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label.setObjectName("label")
|
||||
self.horizontalLayout_4.addWidget(self.label)
|
||||
self.l_base = QtWidgets.QLineEdit(parent=self.centralwidget)
|
||||
self.l_base.setText("")
|
||||
self.l_base.setObjectName("l_base")
|
||||
self.horizontalLayout_4.addWidget(self.l_base)
|
||||
self.b_select_base = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_select_base.setObjectName("b_select_base")
|
||||
self.horizontalLayout_4.addWidget(self.b_select_base)
|
||||
self.b_base = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_base.setObjectName("b_base")
|
||||
self.horizontalLayout_4.addWidget(self.b_base)
|
||||
self.gridLayout.addLayout(self.horizontalLayout_4, 4, 0, 1, 2)
|
||||
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
|
||||
self.cb_bscan = QtWidgets.QCheckBox(parent=self.centralwidget)
|
||||
self.cb_bscan.setChecked(True)
|
||||
self.cb_bscan.setObjectName("cb_bscan")
|
||||
self.horizontalLayout_6.addWidget(self.cb_bscan)
|
||||
self.checkBox = QtWidgets.QCheckBox(parent=self.centralwidget)
|
||||
self.checkBox.setObjectName("checkBox")
|
||||
self.horizontalLayout_6.addWidget(self.checkBox)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
|
||||
self.horizontalLayout_6.addItem(spacerItem1)
|
||||
self.gridLayout.addLayout(self.horizontalLayout_6, 5, 0, 1, 2)
|
||||
self.g_cap = QtWidgets.QGroupBox(parent=self.centralwidget)
|
||||
self.g_cap.setEnabled(False)
|
||||
self.g_cap.setObjectName("g_cap")
|
||||
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.g_cap)
|
||||
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
||||
self.g_live = QtWidgets.QGroupBox(parent=self.g_cap)
|
||||
self.g_live.setCheckable(True)
|
||||
self.g_live.setChecked(False)
|
||||
self.g_live.setObjectName("g_live")
|
||||
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.g_live)
|
||||
self.verticalLayout_6.setObjectName("verticalLayout_6")
|
||||
self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
|
||||
self.label_17 = QtWidgets.QLabel(parent=self.g_live)
|
||||
self.label_17.setObjectName("label_17")
|
||||
self.horizontalLayout_12.addWidget(self.label_17)
|
||||
self.l_record_commit = QtWidgets.QLineEdit(parent=self.g_live)
|
||||
self.l_record_commit.setEnabled(False)
|
||||
self.l_record_commit.setObjectName("l_record_commit")
|
||||
self.horizontalLayout_12.addWidget(self.l_record_commit)
|
||||
self.b_record = QtWidgets.QPushButton(parent=self.g_live)
|
||||
self.b_record.setEnabled(False)
|
||||
self.b_record.setObjectName("b_record")
|
||||
self.horizontalLayout_12.addWidget(self.b_record)
|
||||
self.verticalLayout_6.addLayout(self.horizontalLayout_12)
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
self.label_18 = QtWidgets.QLabel(parent=self.g_live)
|
||||
self.label_18.setObjectName("label_18")
|
||||
self.horizontalLayout_2.addWidget(self.label_18)
|
||||
self.l_record_frames = QtWidgets.QLabel(parent=self.g_live)
|
||||
self.l_record_frames.setObjectName("l_record_frames")
|
||||
self.horizontalLayout_2.addWidget(self.l_record_frames)
|
||||
self.label_25 = QtWidgets.QLabel(parent=self.g_live)
|
||||
self.label_25.setObjectName("label_25")
|
||||
self.horizontalLayout_2.addWidget(self.label_25)
|
||||
self.l_record_size = QtWidgets.QLabel(parent=self.g_live)
|
||||
self.l_record_size.setObjectName("l_record_size")
|
||||
self.horizontalLayout_2.addWidget(self.l_record_size)
|
||||
self.label_26 = QtWidgets.QLabel(parent=self.g_live)
|
||||
self.label_26.setObjectName("label_26")
|
||||
self.horizontalLayout_2.addWidget(self.label_26)
|
||||
self.l_record_max_sid = QtWidgets.QLabel(parent=self.g_live)
|
||||
self.l_record_max_sid.setObjectName("l_record_max_sid")
|
||||
self.horizontalLayout_2.addWidget(self.l_record_max_sid)
|
||||
self.horizontalLayout_2.setStretch(1, 1)
|
||||
self.horizontalLayout_2.setStretch(3, 1)
|
||||
self.horizontalLayout_2.setStretch(5, 1)
|
||||
self.verticalLayout_6.addLayout(self.horizontalLayout_2)
|
||||
self.verticalLayout_6.setStretch(0, 1)
|
||||
self.horizontalLayout_8.addWidget(self.g_live)
|
||||
self.g_playback = QtWidgets.QGroupBox(parent=self.g_cap)
|
||||
self.g_playback.setCheckable(True)
|
||||
self.g_playback.setChecked(False)
|
||||
self.g_playback.setObjectName("g_playback")
|
||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.g_playback)
|
||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||
self.gridLayout_6 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_6.setObjectName("gridLayout_6")
|
||||
self.sp_sid = QtWidgets.QSpinBox(parent=self.g_playback)
|
||||
self.sp_sid.setObjectName("sp_sid")
|
||||
self.gridLayout_6.addWidget(self.sp_sid, 1, 2, 1, 1)
|
||||
self.label_4 = QtWidgets.QLabel(parent=self.g_playback)
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.gridLayout_6.addWidget(self.label_4, 1, 0, 1, 1)
|
||||
self.label_16 = QtWidgets.QLabel(parent=self.g_playback)
|
||||
self.label_16.setObjectName("label_16")
|
||||
self.gridLayout_6.addWidget(self.label_16, 0, 0, 1, 1)
|
||||
self.c_playback_seq_name = QtWidgets.QComboBox(parent=self.g_playback)
|
||||
self.c_playback_seq_name.setEnabled(False)
|
||||
self.c_playback_seq_name.setEditable(False)
|
||||
self.c_playback_seq_name.setObjectName("c_playback_seq_name")
|
||||
self.c_playback_seq_name.addItem("")
|
||||
self.gridLayout_6.addWidget(self.c_playback_seq_name, 0, 1, 1, 2)
|
||||
self.s_sid = QtWidgets.QSlider(parent=self.g_playback)
|
||||
self.s_sid.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||
self.s_sid.setObjectName("s_sid")
|
||||
self.gridLayout_6.addWidget(self.s_sid, 1, 1, 1, 1)
|
||||
self.verticalLayout_3.addLayout(self.gridLayout_6)
|
||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||
self.label26 = QtWidgets.QLabel(parent=self.g_playback)
|
||||
self.label26.setObjectName("label26")
|
||||
self.horizontalLayout_5.addWidget(self.label26)
|
||||
self.l_seq_min = QtWidgets.QLabel(parent=self.g_playback)
|
||||
self.l_seq_min.setObjectName("l_seq_min")
|
||||
self.horizontalLayout_5.addWidget(self.l_seq_min)
|
||||
self.label_28 = QtWidgets.QLabel(parent=self.g_playback)
|
||||
self.label_28.setObjectName("label_28")
|
||||
self.horizontalLayout_5.addWidget(self.label_28)
|
||||
self.l_seq_current = QtWidgets.QLabel(parent=self.g_playback)
|
||||
self.l_seq_current.setObjectName("l_seq_current")
|
||||
self.horizontalLayout_5.addWidget(self.l_seq_current)
|
||||
self.label_29 = QtWidgets.QLabel(parent=self.g_playback)
|
||||
self.label_29.setObjectName("label_29")
|
||||
self.horizontalLayout_5.addWidget(self.label_29)
|
||||
self.l_seq_max = QtWidgets.QLabel(parent=self.g_playback)
|
||||
self.l_seq_max.setObjectName("l_seq_max")
|
||||
self.horizontalLayout_5.addWidget(self.l_seq_max)
|
||||
self.horizontalLayout_5.setStretch(1, 1)
|
||||
self.horizontalLayout_5.setStretch(3, 1)
|
||||
self.horizontalLayout_5.setStretch(5, 1)
|
||||
self.verticalLayout_3.addLayout(self.horizontalLayout_5)
|
||||
self.horizontalLayout_8.addWidget(self.g_playback)
|
||||
self.gridLayout.addWidget(self.g_cap, 2, 0, 1, 2)
|
||||
self.g_cobot = QtWidgets.QGroupBox(parent=self.centralwidget)
|
||||
self.g_cobot.setStyleSheet("#g_cobot {\n"
|
||||
" background: pink;\n"
|
||||
"border-radius: 7px;\n"
|
||||
"}")
|
||||
self.g_cobot.setTitle("")
|
||||
self.g_cobot.setObjectName("g_cobot")
|
||||
self.gridLayout_3 = QtWidgets.QGridLayout(self.g_cobot)
|
||||
self.gridLayout_3.setObjectName("gridLayout_3")
|
||||
self.groupBox_2 = QtWidgets.QGroupBox(parent=self.g_cobot)
|
||||
self.groupBox_2.setTitle("")
|
||||
self.groupBox_2.setObjectName("groupBox_2")
|
||||
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_2)
|
||||
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||
self.gridLayout_2 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
||||
self.ln_rz = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_rz.setDigitCount(6)
|
||||
self.ln_rz.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_rz.setObjectName("ln_rz")
|
||||
self.gridLayout_2.addWidget(self.ln_rz, 0, 6, 1, 1)
|
||||
self.ln_frx = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_frx.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_frx.setObjectName("ln_frx")
|
||||
self.gridLayout_2.addWidget(self.ln_frx, 1, 4, 1, 1)
|
||||
self.ln_frz = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_frz.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_frz.setObjectName("ln_frz")
|
||||
self.gridLayout_2.addWidget(self.ln_frz, 1, 6, 1, 1)
|
||||
self.ln_fx = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_fx.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_fx.setObjectName("ln_fx")
|
||||
self.gridLayout_2.addWidget(self.ln_fx, 1, 1, 1, 1)
|
||||
self.ln_rx = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_rx.setDigitCount(6)
|
||||
self.ln_rx.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_rx.setObjectName("ln_rx")
|
||||
self.gridLayout_2.addWidget(self.ln_rx, 0, 4, 1, 1)
|
||||
self.ln_z = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_z.setDigitCount(6)
|
||||
self.ln_z.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_z.setObjectName("ln_z")
|
||||
self.gridLayout_2.addWidget(self.ln_z, 0, 3, 1, 1)
|
||||
self.ln_fry = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_fry.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_fry.setObjectName("ln_fry")
|
||||
self.gridLayout_2.addWidget(self.ln_fry, 1, 5, 1, 1)
|
||||
self.ln_y = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_y.setDigitCount(6)
|
||||
self.ln_y.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_y.setObjectName("ln_y")
|
||||
self.gridLayout_2.addWidget(self.ln_y, 0, 2, 1, 1)
|
||||
self.label_23 = QtWidgets.QLabel(parent=self.groupBox_2)
|
||||
self.label_23.setObjectName("label_23")
|
||||
self.gridLayout_2.addWidget(self.label_23, 1, 0, 1, 1)
|
||||
self.ln_fz = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_fz.setSmallDecimalPoint(False)
|
||||
self.ln_fz.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_fz.setProperty("value", 0.01)
|
||||
self.ln_fz.setObjectName("ln_fz")
|
||||
self.gridLayout_2.addWidget(self.ln_fz, 1, 3, 1, 1)
|
||||
self.ln_fy = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_fy.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_fy.setObjectName("ln_fy")
|
||||
self.gridLayout_2.addWidget(self.ln_fy, 1, 2, 1, 1)
|
||||
self.ln_x = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_x.setDigitCount(6)
|
||||
self.ln_x.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_x.setObjectName("ln_x")
|
||||
self.gridLayout_2.addWidget(self.ln_x, 0, 1, 1, 1)
|
||||
self.ln_ry = QtWidgets.QLCDNumber(parent=self.groupBox_2)
|
||||
self.ln_ry.setDigitCount(6)
|
||||
self.ln_ry.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_ry.setObjectName("ln_ry")
|
||||
self.gridLayout_2.addWidget(self.ln_ry, 0, 5, 1, 1)
|
||||
self.label_22 = QtWidgets.QLabel(parent=self.groupBox_2)
|
||||
self.label_22.setObjectName("label_22")
|
||||
self.gridLayout_2.addWidget(self.label_22, 0, 0, 1, 1)
|
||||
self.verticalLayout_4.addLayout(self.gridLayout_2)
|
||||
self.gridLayout_3.addWidget(self.groupBox_2, 1, 0, 1, 1)
|
||||
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
|
||||
self.label_19 = QtWidgets.QLabel(parent=self.g_cobot)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(15)
|
||||
self.label_19.setFont(font)
|
||||
self.label_19.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.label_19.setObjectName("label_19")
|
||||
self.horizontalLayout_10.addWidget(self.label_19)
|
||||
self.b_cobot_switch = QtWidgets.QPushButton(parent=self.g_cobot)
|
||||
self.b_cobot_switch.setText("")
|
||||
self.b_cobot_switch.setObjectName("b_cobot_switch")
|
||||
self.horizontalLayout_10.addWidget(self.b_cobot_switch)
|
||||
self.horizontalLayout_10.setStretch(0, 1)
|
||||
self.gridLayout_3.addLayout(self.horizontalLayout_10, 0, 0, 1, 1)
|
||||
self.gridLayout_3.setRowStretch(1, 1)
|
||||
self.gridLayout.addWidget(self.g_cobot, 0, 1, 2, 1)
|
||||
self.gridLayout_5 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_5.setObjectName("gridLayout_5")
|
||||
self.spinBox_3 = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
@ -191,8 +421,8 @@ class Ui_MainWindow(object):
|
||||
self.horizontalSlider_2.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||
self.horizontalSlider_2.setObjectName("horizontalSlider_2")
|
||||
self.gridLayout_5.addWidget(self.horizontalSlider_2, 5, 1, 1, 1)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
|
||||
self.gridLayout_5.addItem(spacerItem1, 7, 1, 1, 1)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
|
||||
self.gridLayout_5.addItem(spacerItem2, 7, 1, 1, 1)
|
||||
self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(20)
|
||||
@ -241,211 +471,75 @@ class Ui_MainWindow(object):
|
||||
self.horizontalLayout_3.setStretch(1, 1)
|
||||
self.gridLayout_5.addLayout(self.horizontalLayout_3, 2, 0, 1, 3)
|
||||
self.gridLayout.addLayout(self.gridLayout_5, 3, 0, 1, 1)
|
||||
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
|
||||
self.cb_bscan = QtWidgets.QCheckBox(parent=self.centralwidget)
|
||||
self.cb_bscan.setChecked(True)
|
||||
self.cb_bscan.setObjectName("cb_bscan")
|
||||
self.horizontalLayout_6.addWidget(self.cb_bscan)
|
||||
self.checkBox = QtWidgets.QCheckBox(parent=self.centralwidget)
|
||||
self.checkBox.setObjectName("checkBox")
|
||||
self.horizontalLayout_6.addWidget(self.checkBox)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
|
||||
self.horizontalLayout_6.addItem(spacerItem2)
|
||||
self.gridLayout.addLayout(self.horizontalLayout_6, 5, 0, 1, 2)
|
||||
self.gridLayout_6 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_6.setObjectName("gridLayout_6")
|
||||
self.l_record_commit = QtWidgets.QLineEdit(parent=self.centralwidget)
|
||||
self.l_record_commit.setEnabled(False)
|
||||
self.l_record_commit.setObjectName("l_record_commit")
|
||||
self.gridLayout_6.addWidget(self.l_record_commit, 1, 1, 1, 1)
|
||||
self.label_17 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_17.setObjectName("label_17")
|
||||
self.gridLayout_6.addWidget(self.label_17, 1, 0, 1, 1)
|
||||
self.b_record = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_record.setEnabled(False)
|
||||
self.b_record.setObjectName("b_record")
|
||||
self.gridLayout_6.addWidget(self.b_record, 1, 2, 1, 1)
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
self.label_18 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_18.setObjectName("label_18")
|
||||
self.horizontalLayout_2.addWidget(self.label_18)
|
||||
self.l_record_frames = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.l_record_frames.setObjectName("l_record_frames")
|
||||
self.horizontalLayout_2.addWidget(self.l_record_frames)
|
||||
self.label_25 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_25.setObjectName("label_25")
|
||||
self.horizontalLayout_2.addWidget(self.label_25)
|
||||
self.l_record_size = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.l_record_size.setObjectName("l_record_size")
|
||||
self.horizontalLayout_2.addWidget(self.l_record_size)
|
||||
self.label_26 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_26.setObjectName("label_26")
|
||||
self.horizontalLayout_2.addWidget(self.label_26)
|
||||
self.l_record_max_sid = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.l_record_max_sid.setObjectName("l_record_max_sid")
|
||||
self.horizontalLayout_2.addWidget(self.l_record_max_sid)
|
||||
self.horizontalLayout_2.setStretch(1, 1)
|
||||
self.horizontalLayout_2.setStretch(3, 1)
|
||||
self.horizontalLayout_2.setStretch(5, 1)
|
||||
self.gridLayout_6.addLayout(self.horizontalLayout_2, 2, 0, 1, 3)
|
||||
self.b_play_live = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_play_live.setEnabled(False)
|
||||
self.b_play_live.setObjectName("b_play_live")
|
||||
self.gridLayout_6.addWidget(self.b_play_live, 0, 0, 1, 3)
|
||||
self.gridLayout.addLayout(self.gridLayout_6, 1, 0, 1, 1)
|
||||
self.g_probe_head = QtWidgets.QGroupBox(parent=self.centralwidget)
|
||||
self.g_probe_head.setStyleSheet("#g_probe_head {\n"
|
||||
" background: pink;\n"
|
||||
"border-radius: 7px;\n"
|
||||
"}")
|
||||
self.g_probe_head.setTitle("")
|
||||
self.g_probe_head.setObjectName("g_probe_head")
|
||||
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.g_probe_head)
|
||||
self.verticalLayout_5.setObjectName("verticalLayout_5")
|
||||
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
|
||||
self.b_probe_start = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_probe_start.setObjectName("b_probe_start")
|
||||
self.horizontalLayout_7.addWidget(self.b_probe_start)
|
||||
self.b_probe_stop = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_probe_stop.setObjectName("b_probe_stop")
|
||||
self.horizontalLayout_7.addWidget(self.b_probe_stop)
|
||||
self.l_probe_angle = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.l_probe_angle.setObjectName("l_probe_angle")
|
||||
self.horizontalLayout_7.addWidget(self.l_probe_angle)
|
||||
self.b_probe_single = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_probe_single.setObjectName("b_probe_single")
|
||||
self.horizontalLayout_7.addWidget(self.b_probe_single)
|
||||
self.b_probe_orig = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_probe_orig.setObjectName("b_probe_orig")
|
||||
self.horizontalLayout_7.addWidget(self.b_probe_orig)
|
||||
self.gridLayout.addLayout(self.horizontalLayout_7, 2, 0, 1, 2)
|
||||
self.gridLayout_2 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
||||
self.ln_y = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_y.setDigitCount(6)
|
||||
self.ln_y.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_y.setObjectName("ln_y")
|
||||
self.gridLayout_2.addWidget(self.ln_y, 1, 2, 1, 1)
|
||||
self.ln_z = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_z.setDigitCount(6)
|
||||
self.ln_z.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_z.setObjectName("ln_z")
|
||||
self.gridLayout_2.addWidget(self.ln_z, 1, 3, 1, 1)
|
||||
self.ln_x = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_x.setDigitCount(6)
|
||||
self.ln_x.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_x.setObjectName("ln_x")
|
||||
self.gridLayout_2.addWidget(self.ln_x, 1, 1, 1, 1)
|
||||
self.ln_ry = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_ry.setDigitCount(6)
|
||||
self.ln_ry.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_ry.setObjectName("ln_ry")
|
||||
self.gridLayout_2.addWidget(self.ln_ry, 1, 5, 1, 1)
|
||||
self.label_22 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_22.setObjectName("label_22")
|
||||
self.gridLayout_2.addWidget(self.label_22, 1, 0, 1, 1)
|
||||
self.ln_rx = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_rx.setDigitCount(6)
|
||||
self.ln_rx.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_rx.setObjectName("ln_rx")
|
||||
self.gridLayout_2.addWidget(self.ln_rx, 1, 4, 1, 1)
|
||||
self.label_23 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_23.setObjectName("label_23")
|
||||
self.gridLayout_2.addWidget(self.label_23, 2, 0, 1, 1)
|
||||
self.ln_rz = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_rz.setDigitCount(6)
|
||||
self.ln_rz.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_rz.setObjectName("ln_rz")
|
||||
self.gridLayout_2.addWidget(self.ln_rz, 1, 6, 1, 1)
|
||||
self.ln_fx = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_fx.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_fx.setObjectName("ln_fx")
|
||||
self.gridLayout_2.addWidget(self.ln_fx, 2, 1, 1, 1)
|
||||
self.ln_fy = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_fy.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_fy.setObjectName("ln_fy")
|
||||
self.gridLayout_2.addWidget(self.ln_fy, 2, 2, 1, 1)
|
||||
self.ln_fz = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_fz.setSmallDecimalPoint(False)
|
||||
self.ln_fz.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_fz.setProperty("value", 0.01)
|
||||
self.ln_fz.setObjectName("ln_fz")
|
||||
self.gridLayout_2.addWidget(self.ln_fz, 2, 3, 1, 1)
|
||||
self.ln_frx = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_frx.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_frx.setObjectName("ln_frx")
|
||||
self.gridLayout_2.addWidget(self.ln_frx, 2, 4, 1, 1)
|
||||
self.ln_fry = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_fry.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_fry.setObjectName("ln_fry")
|
||||
self.gridLayout_2.addWidget(self.ln_fry, 2, 5, 1, 1)
|
||||
self.ln_frz = QtWidgets.QLCDNumber(parent=self.centralwidget)
|
||||
self.ln_frz.setSegmentStyle(QtWidgets.QLCDNumber.SegmentStyle.Flat)
|
||||
self.ln_frz.setObjectName("ln_frz")
|
||||
self.gridLayout_2.addWidget(self.ln_frz, 2, 6, 1, 1)
|
||||
self.label_19 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_31 = QtWidgets.QLabel(parent=self.g_probe_head)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Noto Sans")
|
||||
font.setPointSize(15)
|
||||
self.label_19.setFont(font)
|
||||
self.label_19.setStyleSheet("background-color: pink;")
|
||||
self.label_19.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.label_19.setObjectName("label_19")
|
||||
self.gridLayout_2.addWidget(self.label_19, 0, 0, 1, 7)
|
||||
self.gridLayout_2.setColumnStretch(1, 1)
|
||||
self.gridLayout_2.setColumnStretch(2, 1)
|
||||
self.gridLayout_2.setColumnStretch(3, 1)
|
||||
self.gridLayout_2.setColumnStretch(4, 1)
|
||||
self.gridLayout_2.setColumnStretch(5, 1)
|
||||
self.gridLayout_2.setColumnStretch(6, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_2, 0, 1, 1, 1)
|
||||
self.gridLayout_7 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_7.setObjectName("gridLayout_7")
|
||||
self.s_sid = QtWidgets.QSlider(parent=self.centralwidget)
|
||||
self.s_sid.setEnabled(False)
|
||||
self.s_sid.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||
self.s_sid.setObjectName("s_sid")
|
||||
self.gridLayout_7.addWidget(self.s_sid, 3, 1, 1, 1)
|
||||
self.sp_sid = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
self.sp_sid.setObjectName("sp_sid")
|
||||
self.gridLayout_7.addWidget(self.sp_sid, 3, 2, 1, 1)
|
||||
self.b_play_playback = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_play_playback.setEnabled(False)
|
||||
self.b_play_playback.setObjectName("b_play_playback")
|
||||
self.gridLayout_7.addWidget(self.b_play_playback, 0, 0, 1, 3)
|
||||
self.label_16 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_16.setObjectName("label_16")
|
||||
self.gridLayout_7.addWidget(self.label_16, 1, 0, 1, 1)
|
||||
self.label_4 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.gridLayout_7.addWidget(self.label_4, 3, 0, 1, 1)
|
||||
self.c_playback_seq_name = QtWidgets.QComboBox(parent=self.centralwidget)
|
||||
self.c_playback_seq_name.setEnabled(False)
|
||||
self.c_playback_seq_name.setEditable(False)
|
||||
self.c_playback_seq_name.setObjectName("c_playback_seq_name")
|
||||
self.c_playback_seq_name.addItem("")
|
||||
self.gridLayout_7.addWidget(self.c_playback_seq_name, 1, 1, 1, 2)
|
||||
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
|
||||
self.label26 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label26.setObjectName("label26")
|
||||
self.horizontalLayout_5.addWidget(self.label26)
|
||||
self.l_seq_min = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.l_seq_min.setObjectName("l_seq_min")
|
||||
self.horizontalLayout_5.addWidget(self.l_seq_min)
|
||||
self.label_28 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_28.setObjectName("label_28")
|
||||
self.horizontalLayout_5.addWidget(self.label_28)
|
||||
self.l_seq_current = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.l_seq_current.setObjectName("l_seq_current")
|
||||
self.horizontalLayout_5.addWidget(self.l_seq_current)
|
||||
self.label_29 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_29.setObjectName("label_29")
|
||||
self.horizontalLayout_5.addWidget(self.label_29)
|
||||
self.l_seq_max = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.l_seq_max.setObjectName("l_seq_max")
|
||||
self.horizontalLayout_5.addWidget(self.l_seq_max)
|
||||
self.horizontalLayout_5.setStretch(1, 1)
|
||||
self.horizontalLayout_5.setStretch(3, 1)
|
||||
self.horizontalLayout_5.setStretch(5, 1)
|
||||
self.gridLayout_7.addLayout(self.horizontalLayout_5, 2, 0, 1, 3)
|
||||
self.gridLayout.addLayout(self.gridLayout_7, 1, 1, 1, 1)
|
||||
self.label_31.setFont(font)
|
||||
self.label_31.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.label_31.setObjectName("label_31")
|
||||
self.horizontalLayout_7.addWidget(self.label_31)
|
||||
self.b_probe_head_switch = QtWidgets.QPushButton(parent=self.g_probe_head)
|
||||
self.b_probe_head_switch.setText("")
|
||||
self.b_probe_head_switch.setObjectName("b_probe_head_switch")
|
||||
self.horizontalLayout_7.addWidget(self.b_probe_head_switch)
|
||||
self.horizontalLayout_7.setStretch(0, 1)
|
||||
self.verticalLayout_5.addLayout(self.horizontalLayout_7)
|
||||
self.groupBox_3 = QtWidgets.QGroupBox(parent=self.g_probe_head)
|
||||
self.groupBox_3.setTitle("")
|
||||
self.groupBox_3.setObjectName("groupBox_3")
|
||||
self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.groupBox_3)
|
||||
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
|
||||
self.b_probe_start = QtWidgets.QPushButton(parent=self.groupBox_3)
|
||||
self.b_probe_start.setObjectName("b_probe_start")
|
||||
self.horizontalLayout_11.addWidget(self.b_probe_start)
|
||||
self.b_probe_stop = QtWidgets.QPushButton(parent=self.groupBox_3)
|
||||
self.b_probe_stop.setObjectName("b_probe_stop")
|
||||
self.horizontalLayout_11.addWidget(self.b_probe_stop)
|
||||
self.b_probe_single = QtWidgets.QPushButton(parent=self.groupBox_3)
|
||||
self.b_probe_single.setObjectName("b_probe_single")
|
||||
self.horizontalLayout_11.addWidget(self.b_probe_single)
|
||||
self.b_probe_orig = QtWidgets.QPushButton(parent=self.groupBox_3)
|
||||
self.b_probe_orig.setObjectName("b_probe_orig")
|
||||
self.horizontalLayout_11.addWidget(self.b_probe_orig)
|
||||
self.l_probe_angle = QtWidgets.QLabel(parent=self.groupBox_3)
|
||||
self.l_probe_angle.setObjectName("l_probe_angle")
|
||||
self.horizontalLayout_11.addWidget(self.l_probe_angle)
|
||||
self.verticalLayout_5.addWidget(self.groupBox_3)
|
||||
self.verticalLayout_5.setStretch(1, 1)
|
||||
self.gridLayout.addWidget(self.g_probe_head, 1, 0, 1, 1)
|
||||
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
|
||||
self.label = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label.setObjectName("label")
|
||||
self.horizontalLayout_4.addWidget(self.label)
|
||||
self.l_base = QtWidgets.QLineEdit(parent=self.centralwidget)
|
||||
self.l_base.setText("")
|
||||
self.l_base.setObjectName("l_base")
|
||||
self.horizontalLayout_4.addWidget(self.l_base)
|
||||
self.b_select_base = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_select_base.setObjectName("b_select_base")
|
||||
self.horizontalLayout_4.addWidget(self.b_select_base)
|
||||
self.b_base = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_base.setIconSize(QtCore.QSize(16, 16))
|
||||
self.b_base.setObjectName("b_base")
|
||||
self.horizontalLayout_4.addWidget(self.b_base)
|
||||
self.gridLayout.addLayout(self.horizontalLayout_4, 4, 0, 1, 2)
|
||||
self.gridLayout.setRowStretch(0, 1)
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 1158, 30))
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 1238, 30))
|
||||
self.menubar.setObjectName("menubar")
|
||||
MainWindow.setMenuBar(self.menubar)
|
||||
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
|
||||
@ -458,16 +552,18 @@ class Ui_MainWindow(object):
|
||||
def retranslateUi(self, MainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "Scarlet Flandre Control Panel"))
|
||||
self.g_device.setTitle(_translate("MainWindow", "Device Status"))
|
||||
self.l_online.setText(_translate("MainWindow", "Device Offline"))
|
||||
self.label_30.setText(_translate("MainWindow", "Ultrasound T/R Device Driver"))
|
||||
self.b_device_connection.setText(_translate("MainWindow", "Connect"))
|
||||
self.lb_device_connection.setText(_translate("MainWindow", "Disconnected"))
|
||||
self.lb_device_enable.setText(_translate("MainWindow", "Disabled"))
|
||||
self.b_device_enable.setText(_translate("MainWindow", "Disconnect"))
|
||||
self.label_24.setText(_translate("MainWindow", "<html><head/><body><p style=\"line-height:0.3\" align=\"center\">Beam</p><p align=\"center\">Status</p></body></html>"))
|
||||
self.label_21.setText(_translate("MainWindow", "<html><head/><body><p style=\"line-height:0.3\" align=\"center\">Connection</p><p align=\"center\">Status</p></body></html>"))
|
||||
self.label_20.setText(_translate("MainWindow", "DeviceConfig"))
|
||||
self.label_32.setText(_translate("MainWindow", "current"))
|
||||
self.c_live_seq_name.setItemText(0, _translate("MainWindow", "Empty"))
|
||||
self.label_20.setText(_translate("MainWindow", "DeviceConfig"))
|
||||
self.b_live_seq_apply.setText(_translate("MainWindow", "Apply"))
|
||||
self.l_live_seq_name.setText(_translate("MainWindow", "Empty"))
|
||||
self.b_device_zero.setText(_translate("MainWindow", "Zero"))
|
||||
self.label_14.setText(_translate("MainWindow", "Yal"))
|
||||
self.label_13.setText(_translate("MainWindow", "Pitch"))
|
||||
@ -477,18 +573,10 @@ class Ui_MainWindow(object):
|
||||
self.label_12.setText(_translate("MainWindow", "Roll"))
|
||||
self.label_11.setText(_translate("MainWindow", "E"))
|
||||
self.label_8.setText(_translate("MainWindow", "X"))
|
||||
self.label.setText(_translate("MainWindow", "Base Path"))
|
||||
self.b_select_base.setText(_translate("MainWindow", "Select"))
|
||||
self.b_base.setText(_translate("MainWindow", "Open"))
|
||||
self.label_7.setText(_translate("MainWindow", "TextLabel"))
|
||||
self.label_2.setText(_translate("MainWindow", "Imaging"))
|
||||
self.label_6.setText(_translate("MainWindow", "TextLabel"))
|
||||
self.label_15.setText(_translate("MainWindow", "t_start"))
|
||||
self.label_5.setText(_translate("MainWindow", "t_end"))
|
||||
self.label_27.setText(_translate("MainWindow", "Profile"))
|
||||
self.b_new_imaging_config.setText(_translate("MainWindow", "New"))
|
||||
self.cb_bscan.setText(_translate("MainWindow", "BSCAN"))
|
||||
self.checkBox.setText(_translate("MainWindow", "FOCUS"))
|
||||
self.g_cap.setTitle(_translate("MainWindow", "Capture Source"))
|
||||
self.g_live.setTitle(_translate("MainWindow", "Live"))
|
||||
self.label_17.setText(_translate("MainWindow", "RecordName"))
|
||||
self.b_record.setText(_translate("MainWindow", "Record"))
|
||||
self.label_18.setText(_translate("MainWindow", "Record Frames:"))
|
||||
@ -497,18 +585,9 @@ class Ui_MainWindow(object):
|
||||
self.l_record_size.setText(_translate("MainWindow", "0"))
|
||||
self.label_26.setText(_translate("MainWindow", "Max SeqId:"))
|
||||
self.l_record_max_sid.setText(_translate("MainWindow", "0"))
|
||||
self.b_play_live.setText(_translate("MainWindow", "Live"))
|
||||
self.b_probe_start.setText(_translate("MainWindow", "Start"))
|
||||
self.b_probe_stop.setText(_translate("MainWindow", "Stop"))
|
||||
self.l_probe_angle.setText(_translate("MainWindow", "TextLabel"))
|
||||
self.b_probe_single.setText(_translate("MainWindow", "Single"))
|
||||
self.b_probe_orig.setText(_translate("MainWindow", "Orig"))
|
||||
self.label_22.setText(_translate("MainWindow", "Position"))
|
||||
self.label_23.setText(_translate("MainWindow", "Force"))
|
||||
self.label_19.setText(_translate("MainWindow", "Robot Offline"))
|
||||
self.b_play_playback.setText(_translate("MainWindow", "Playback"))
|
||||
self.label_16.setText(_translate("MainWindow", "SeqName"))
|
||||
self.g_playback.setTitle(_translate("MainWindow", "Playback"))
|
||||
self.label_4.setText(_translate("MainWindow", "Frame ID"))
|
||||
self.label_16.setText(_translate("MainWindow", "SeqName"))
|
||||
self.c_playback_seq_name.setItemText(0, _translate("MainWindow", "Unset"))
|
||||
self.label26.setText(_translate("MainWindow", "Min:"))
|
||||
self.l_seq_min.setText(_translate("MainWindow", "0"))
|
||||
@ -516,3 +595,22 @@ class Ui_MainWindow(object):
|
||||
self.l_seq_current.setText(_translate("MainWindow", "0"))
|
||||
self.label_29.setText(_translate("MainWindow", "Max:"))
|
||||
self.l_seq_max.setText(_translate("MainWindow", "0"))
|
||||
self.label_23.setText(_translate("MainWindow", "Force"))
|
||||
self.label_22.setText(_translate("MainWindow", "Position"))
|
||||
self.label_19.setText(_translate("MainWindow", "6DOF Cobot"))
|
||||
self.label_7.setText(_translate("MainWindow", "TextLabel"))
|
||||
self.label_2.setText(_translate("MainWindow", "Imaging"))
|
||||
self.label_6.setText(_translate("MainWindow", "TextLabel"))
|
||||
self.label_15.setText(_translate("MainWindow", "t_start"))
|
||||
self.label_5.setText(_translate("MainWindow", "t_end"))
|
||||
self.label_27.setText(_translate("MainWindow", "Profile"))
|
||||
self.b_new_imaging_config.setText(_translate("MainWindow", "New"))
|
||||
self.label_31.setText(_translate("MainWindow", "Probe Head Control"))
|
||||
self.b_probe_start.setText(_translate("MainWindow", "Start"))
|
||||
self.b_probe_stop.setText(_translate("MainWindow", "Stop"))
|
||||
self.b_probe_single.setText(_translate("MainWindow", "Single"))
|
||||
self.b_probe_orig.setText(_translate("MainWindow", "Orig"))
|
||||
self.l_probe_angle.setText(_translate("MainWindow", "TextLabel"))
|
||||
self.label.setText(_translate("MainWindow", "Base Path"))
|
||||
self.b_select_base.setText(_translate("MainWindow", "Select"))
|
||||
self.b_base.setText(_translate("MainWindow", "Open"))
|
||||
|
||||
926
src/ui/Main.ui
926
src/ui/Main.ui
File diff suppressed because it is too large
Load Diff
@ -10,6 +10,7 @@ from utils.RfMeta import RfFrameMeta
|
||||
class BG(Enum):
|
||||
Msg1 = auto()
|
||||
Msg2 = auto()
|
||||
RefreshDeviceMsg = auto()
|
||||
BMMsg = auto()
|
||||
TickMsg = auto()
|
||||
KillMsg = auto()
|
||||
@ -17,6 +18,7 @@ class BG(Enum):
|
||||
MoveAxisMsg = auto()
|
||||
ImageArgMsg = auto()
|
||||
SetSeqMetaMsg = auto()
|
||||
SeqMetaMsg = auto()
|
||||
SeqIdMinMax = auto()
|
||||
SetBaseMsg = auto()
|
||||
SeqListMsg = auto()
|
||||
@ -43,6 +45,8 @@ class BG(Enum):
|
||||
MidiMsg = auto()
|
||||
JoystickMsg = auto()
|
||||
DeviceZero = auto()
|
||||
SetDeviceSwitchMsg = auto()
|
||||
DeviceSwitchMsg = auto()
|
||||
|
||||
|
||||
class Msg:
|
||||
@ -83,6 +87,8 @@ class Msg1(Msg):
|
||||
a: int = 0
|
||||
b: int = 1
|
||||
|
||||
class RefreshDeviceMsg(Msg):
|
||||
pass
|
||||
|
||||
@dataclasses.dataclass
|
||||
class KillMsg(Msg):
|
||||
@ -143,9 +149,10 @@ class SetRecordMsg(Msg):
|
||||
commit: str = ''
|
||||
base: str = ''
|
||||
|
||||
|
||||
class SetDeviceConfigMsg(StrMsg):
|
||||
pass
|
||||
@dataclasses.dataclass
|
||||
class SetDeviceConfigMsg(Msg):
|
||||
name:str
|
||||
txt:str
|
||||
|
||||
|
||||
class SetBaseMsg(StrMsg):
|
||||
@ -171,6 +178,10 @@ class SetSeqMetaMsg(Msg):
|
||||
target: str
|
||||
name: str
|
||||
|
||||
@dataclasses.dataclass
|
||||
class SeqMetaMsg(Msg):
|
||||
target: str
|
||||
name: str
|
||||
|
||||
@dataclasses.dataclass
|
||||
class SeqIdMinMax(Msg):
|
||||
@ -328,6 +339,14 @@ class JoystickMsg(Msg):
|
||||
value: float
|
||||
|
||||
|
||||
class DeviceSwitchMsg(StrMsg):
|
||||
pass
|
||||
|
||||
|
||||
class SetDeviceSwitchMsg(BoolMsg):
|
||||
pass
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class RobotRtsiMsg(Msg):
|
||||
pos: tuple[int, int, int, int, int, int]
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
import socket
|
||||
import subprocess
|
||||
|
||||
|
||||
def check_port(host, port):
|
||||
try:
|
||||
@ -13,3 +15,15 @@ def check_port(host, port):
|
||||
except socket.error as e:
|
||||
print(f"连接过程中发生错误: {e}")
|
||||
return False
|
||||
|
||||
# def c2():
|
||||
# code = subprocess.run(['curl', '-m', '1', f'http://{LIVE_REP_SOCKET}'], stderr=subprocess.DEVNULL,
|
||||
# stdout=subprocess.DEVNULL).returncode
|
||||
# logger.debug(f'detect curl code: {code}')
|
||||
# match code:
|
||||
# case 28 | 7:
|
||||
# self.send(DeviceOnlineMsg(False))
|
||||
# return False
|
||||
# case _:
|
||||
# self.send(DeviceOnlineMsg(True))
|
||||
# return True
|
||||
@ -9,6 +9,7 @@ from nodes.ImageCV import ImageCV
|
||||
from nodes.ImageFFMPEG import ImageFFMPEG
|
||||
from nodes.JoyStick import Joystick
|
||||
from nodes.Loader import Loader
|
||||
from nodes.Mi import Mi
|
||||
from nodes.Midi import Midi
|
||||
from nodes.Monitor import Monitor
|
||||
from nodes.Muxer import Muxer
|
||||
@ -25,17 +26,18 @@ if __name__ == '__main__':
|
||||
ps = [
|
||||
Broker(),
|
||||
kde_pyqt6_mainui,
|
||||
Device(level=logging.DEBUG),
|
||||
# ImageFFMPEG(),
|
||||
Device(),
|
||||
ImageFFMPEG(),
|
||||
ImageCV(level=logging.DEBUG),
|
||||
Beamformer(level=logging.DEBUG),
|
||||
Loader(),
|
||||
Muxer(level=logging.DEBUG),
|
||||
Midi(),
|
||||
# Midi(),
|
||||
# Joystick(),
|
||||
Robot(),
|
||||
Recorder(),
|
||||
# Monitor(),
|
||||
Mi(),
|
||||
]
|
||||
for p in ps:
|
||||
pps.append(multiprocessing.Process(target=p))
|
||||
|
||||
@ -23,8 +23,9 @@ def test2():
|
||||
# d.setfile(Path('/home/lambda/source/scarlet/flandre/config/device/AA256,U=30,M=PWI,S=(256 1502).txt').read_text())
|
||||
# time.sleep(2)
|
||||
while True:
|
||||
d.data()
|
||||
print(1)
|
||||
r = d.get_data()
|
||||
print(r.__len__())
|
||||
break
|
||||
# d.disable()
|
||||
# d.disconnect()
|
||||
|
||||
|
||||
23
test/testrobotremotecontrol.py
Normal file
23
test/testrobotremotecontrol.py
Normal file
@ -0,0 +1,23 @@
|
||||
import socket
|
||||
from time import sleep
|
||||
|
||||
|
||||
def send_message(message: str, host='11.6.1.53', port=29999):
|
||||
# Create a TCP/IP socket
|
||||
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
# Connect to the server
|
||||
client_socket.connect((host, port))
|
||||
|
||||
try:
|
||||
# Send the message
|
||||
client_socket.sendall(message.encode())
|
||||
print(f"Sent: {message}")
|
||||
finally:
|
||||
# Close the socket
|
||||
client_socket.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# send_message('remoteControl -on\nplay\nremoteControl -off\n')
|
||||
send_message('remoteControl -on\nstop\nremoteControl -off\n')
|
||||
Loading…
Reference in New Issue
Block a user