add many
This commit is contained in:
parent
1738ae5b48
commit
e86ef2f8de
@ -9,6 +9,13 @@ DisableUSB3=1
|
||||
AscanBitSize=14Bits
|
||||
Enable256=0
|
||||
|
||||
SWEncoder1Resolution=1
|
||||
TriggerMode=Internal
|
||||
Encoder1A=DigitalInput01
|
||||
Encoder1B=DigitalInput02
|
||||
Encoder1Type=Quadrature4Edges
|
||||
RequestIO=OnCycleOnly
|
||||
|
||||
[Cycle:0]
|
||||
GainDigital=0.000000 dB
|
||||
BeamCorrection=0.0 dB
|
||||
|
||||
138
config/device/AAA256,U=80,M=PWI,S=(256 4002).txt
Normal file
138
config/device/AAA256,U=80,M=PWI,S=(256 4002).txt
Normal file
@ -0,0 +1,138 @@
|
||||
[Root]
|
||||
VersionDriverOEMPA=1.3.0.0
|
||||
CycleCount=1
|
||||
EnableFMC=1
|
||||
FMCElementStart=0
|
||||
FMCElementStop=255
|
||||
FMCElementStep=1
|
||||
DisableUSB3=1
|
||||
AscanBitSize=14Bits
|
||||
Enable256=0
|
||||
|
||||
[Cycle:0]
|
||||
GainDigital=0.000000 dB
|
||||
BeamCorrection=0.0 dB
|
||||
Start=0.000000 us
|
||||
Range=80.000000 us
|
||||
TimeSlot=3987.300000 us
|
||||
PointFactor=2
|
||||
CompressionType=Decimation
|
||||
Rectification=Signed
|
||||
FilterIndex=0
|
||||
GainAnalog=40.000000 dB
|
||||
GateCount=0
|
||||
|
||||
[Cycle:0\Pulser]
|
||||
WedgeDelay=0.0 us
|
||||
Element.count=256
|
||||
Element_0=0;1;2;3;4;5;6;7
|
||||
Element_8=8;9;10;11;12;13;14;15
|
||||
Element_16=16;17;18;19;20;21;22;23
|
||||
Element_24=24;25;26;27;28;29;30;31
|
||||
Element_32=32;33;34;35;36;37;38;39
|
||||
Element_40=40;41;42;43;44;45;46;47
|
||||
Element_48=48;49;50;51;52;53;54;55
|
||||
Element_56=56;57;58;59;60;61;62;63
|
||||
Element_64=64;65;66;67;68;69;70;71
|
||||
Element_72=72;73;74;75;76;77;78;79
|
||||
Element_80=80;81;82;83;84;85;86;87
|
||||
Element_88=88;89;90;91;92;93;94;95
|
||||
Element_96=96;97;98;99;100;101;102;103
|
||||
Element_104=104;105;106;107;108;109;110;111
|
||||
Element_112=112;113;114;115;116;117;118;119
|
||||
Element_120=120;121;122;123;124;125;126;127
|
||||
Element_128=128;129;130;131;132;133;134;135
|
||||
Element_136=136;137;138;139;140;141;142;143
|
||||
Element_144=144;145;146;147;148;149;150;151
|
||||
Element_152=152;153;154;155;156;157;158;159
|
||||
Element_160=160;161;162;163;164;165;166;167
|
||||
Element_168=168;169;170;171;172;173;174;175
|
||||
Element_176=176;177;178;179;180;181;182;183
|
||||
Element_184=184;185;186;187;188;189;190;191
|
||||
Element_192=192;193;194;195;196;197;198;199
|
||||
Element_200=200;201;202;203;204;205;206;207
|
||||
Element_208=208;209;210;211;212;213;214;215
|
||||
Element_216=216;217;218;219;220;221;222;223
|
||||
Element_224=224;225;226;227;228;229;230;231
|
||||
Element_232=232;233;234;235;236;237;238;239
|
||||
Element_240=240;241;242;243;244;245;246;247
|
||||
Element_248=248;249;250;251;252;253;254;255
|
||||
Delay.count=256;1
|
||||
Delay_0=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_8=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_16=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_24=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_32=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_40=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_48=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_56=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_64=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_72=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_80=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_88=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_96=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_104=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_112=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_120=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_128=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_136=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_144=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_152=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_160=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_168=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_176=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_184=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_192=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_200=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_208=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_216=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_224=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_232=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_240=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Delay_248=0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000;0.000000 us
|
||||
Width.count=256
|
||||
Width_0=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_8=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_16=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_24=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_32=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_40=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_48=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_56=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_64=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_72=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_80=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_88=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_96=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_104=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_112=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_120=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_128=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_136=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_144=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_152=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_160=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_168=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_176=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_184=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_192=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_200=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_208=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_216=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_224=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_232=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_240=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
Width_248=0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429;0.071429 us
|
||||
|
||||
[Cycle:0\Receiver]
|
||||
WedgeDelay=0.0 us
|
||||
Element.count=1
|
||||
Element=0
|
||||
Focusing=Standard
|
||||
Delay.count=1;1
|
||||
Delay=0.0 us
|
||||
Gain.count=1
|
||||
Gain=0.0 dB
|
||||
FocalTimeOfFlight.count=1
|
||||
FocalTimeOfFlight=0.0 us
|
||||
|
||||
@ -16,4 +16,7 @@ dependencies = [
|
||||
"vtk>=9.4.0",
|
||||
"jupyter>=1.1.1",
|
||||
"python-miio>=0.5.12",
|
||||
"click>=8.1.8",
|
||||
"mido[ports-rtmidi]>=1.3.3",
|
||||
"pyjoystick>=1.2.4",
|
||||
]
|
||||
|
||||
@ -24,6 +24,8 @@ class BusClient:
|
||||
self.sub = self.ctx.socket(zmq.SUB)
|
||||
for msg in msgs:
|
||||
self.sub.setsockopt(zmq.SUBSCRIBE, msg.magic() + msg.eid())
|
||||
if msgs.__len__() == 0:
|
||||
self.sub.setsockopt(zmq.SUBSCRIBE, b'')
|
||||
if conflare:
|
||||
self.sub.setsockopt(zmq.CONFLATE, 1)
|
||||
self.sub.connect(f'tcp://127.0.0.1:{self.bp}')
|
||||
|
||||
@ -37,7 +37,7 @@ class Beamformer(Node):
|
||||
time.sleep(1)
|
||||
while True:
|
||||
self.send(RequestRfFrameMsg())
|
||||
r = dict(self.c.poller.poll(1000))
|
||||
r = dict(self.c.poller.poll(10))
|
||||
if self.c.sub in r:
|
||||
msg = self.recv()
|
||||
if isinstance(msg, BeamformerMsg):
|
||||
|
||||
@ -2,6 +2,7 @@ import logging
|
||||
import struct
|
||||
import subprocess
|
||||
import time
|
||||
from threading import Thread
|
||||
|
||||
import zmq
|
||||
|
||||
@ -9,14 +10,14 @@ 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
|
||||
RfFrameWithMetaMsg, DeviceZero
|
||||
from utils.RfMeta import RfFrameMeta
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Device(Node):
|
||||
topics = [SetDeviceConnectedMsg, SetDeviceEnabledMsg, SetDeviceConfigMsg, RequestRfFrameMsg]
|
||||
topics = [SetDeviceConnectedMsg, SetDeviceEnabledMsg, SetDeviceConfigMsg, RequestRfFrameMsg, DeviceZero]
|
||||
|
||||
def __init__(self, level=logging.INFO):
|
||||
super(Device, self).__init__(level=level)
|
||||
@ -24,6 +25,12 @@ class Device(Node):
|
||||
self.seq_meta = None
|
||||
self.device_rep_socket = None
|
||||
self.ok = b'ok\x00'
|
||||
self.loop2_t = None
|
||||
|
||||
def loop2(self):
|
||||
while True:
|
||||
self.online()
|
||||
time.sleep(1)
|
||||
|
||||
def connect(self):
|
||||
self.device_rep_socket.send(b'connect')
|
||||
@ -64,7 +71,7 @@ class Device(Node):
|
||||
def online(self):
|
||||
code = subprocess.run(['curl', '-m', '1', f'http://{LIVE_REP_SOCKET}'], stderr=subprocess.DEVNULL,
|
||||
stdout=subprocess.DEVNULL).returncode
|
||||
logger.info(f'detect curl code: {code}')
|
||||
logger.debug(f'detect curl code: {code}')
|
||||
match code:
|
||||
case 28 | 7:
|
||||
self.send(DeviceOnlineMsg(False))
|
||||
@ -122,9 +129,15 @@ class Device(Node):
|
||||
self.device_rep_socket.send(b'data')
|
||||
return self.device_rep_socket.recv()
|
||||
|
||||
def zero(self):
|
||||
self.device_rep_socket.send(b'zero')
|
||||
return self.device_rep_socket.recv()
|
||||
|
||||
def custom_setup(self):
|
||||
self.device_rep_socket = self.context.socket(zmq.REQ)
|
||||
self.device_rep_socket.connect(f"tcp://{LIVE_REP_SOCKET}")
|
||||
self.loop2_t = Thread(target=self.loop2)
|
||||
self.loop2_t.start()
|
||||
|
||||
def loop(self):
|
||||
arr = []
|
||||
@ -161,6 +174,9 @@ class Device(Node):
|
||||
continue
|
||||
_, sequence_id, encoder = struct.unpack_from('=iqi', braw)
|
||||
buffer = braw[4 + 8 + 4:]
|
||||
# logger.debug('send')
|
||||
self.send(RfFrameWithMetaMsg(0, RfFrameMeta(
|
||||
encoder=encoder, sequence_id=sequence_id
|
||||
), buffer))
|
||||
elif isinstance(msg, DeviceZero):
|
||||
self.zero()
|
||||
|
||||
123
src/nodes/JoyStick.py
Normal file
123
src/nodes/JoyStick.py
Normal file
@ -0,0 +1,123 @@
|
||||
import logging
|
||||
from threading import Thread
|
||||
|
||||
import mido
|
||||
import pyjoystick
|
||||
import zmq
|
||||
from mido.backends.rtmidi import Input, Output
|
||||
from pyjoystick.sdl2 import Key, Joystick, run_event_loop
|
||||
|
||||
from nodes.Node import Node
|
||||
from utils.Msg import KillMsg, Msg, ImageArgMsg, JoystickMsg
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def clamp(x, t):
|
||||
if -t < x < t:
|
||||
return 0.0
|
||||
return x
|
||||
|
||||
|
||||
class Joystick(Node):
|
||||
def __init__(self, level=logging.INFO):
|
||||
super(Joystick, self).__init__(level=level)
|
||||
self.m_input: Input = None
|
||||
self.m_output: Output = None
|
||||
self.do_loop = True
|
||||
self.t_joystick_event_loop: Thread = None
|
||||
self.isa: zmq.Socket = None
|
||||
|
||||
def sendj(self, t=0.1):
|
||||
d2 = self.d.copy()
|
||||
self.s2.send_json(dict(
|
||||
x=clamp(d2['x'], t),
|
||||
y=clamp(d2['y'], t),
|
||||
z=clamp(d2['z'], t),
|
||||
rx=clamp(d2['rx'], t),
|
||||
ry=clamp(d2['ry'], t),
|
||||
rz=clamp(d2['rz'], t),
|
||||
))
|
||||
|
||||
def custom_setup(self):
|
||||
self.isa = self.c.ctx.socket(zmq.PUSH)
|
||||
self.isa.bind("inproc://midi")
|
||||
|
||||
self.s2 = self.c.ctx.socket(zmq.PUSH)
|
||||
self.s2.connect("tcp://11.6.1.63:5555")
|
||||
|
||||
self.t_joystick_event_loop = Thread(target=self.joystick_event_loop)
|
||||
self.t_joystick_event_loop.start()
|
||||
self.arg = ImageArgMsg('joystick', 0, 0)
|
||||
self.arg1 = 0
|
||||
self.d = dict(
|
||||
x=0.0,
|
||||
y=0.0,
|
||||
z=0.0,
|
||||
rx=0.0,
|
||||
ry=0.0,
|
||||
rz=0.0,
|
||||
)
|
||||
self.rz1 = 0
|
||||
self.rz2 = 0
|
||||
|
||||
self.z1 = 0
|
||||
self.z2 = 0
|
||||
|
||||
def joystick_event_loop(self):
|
||||
def key_received(key: pyjoystick.interface.Key):
|
||||
msg = JoystickMsg(str(key).replace('-', ''), key.value)
|
||||
# print(msg)
|
||||
match msg.key:
|
||||
case 'Axis 0':
|
||||
self.d['x'] = -msg.value
|
||||
case 'Axis 1':
|
||||
self.d['y'] = msg.value
|
||||
case 'Axis 4':
|
||||
self.d['rx'] = -msg.value
|
||||
case 'Axis 3':
|
||||
self.d['ry'] = -msg.value
|
||||
case 'Axis 2':
|
||||
self.z1 = msg.value
|
||||
case 'Axis 5':
|
||||
self.z2 = - msg.value
|
||||
case 'Button 4':
|
||||
self.rz1 = - msg.value
|
||||
case 'Button 5':
|
||||
self.rz2 = msg.value
|
||||
self.d['rz'] = float(self.rz1 + self.rz2)
|
||||
self.d['z'] = float(self.z1 + self.z2)
|
||||
|
||||
self.sendj()
|
||||
|
||||
# if msg.key == 'Axis 0':
|
||||
# self.arg1 += msg.value
|
||||
# self.arg.t_end = int(self.arg1 * 2)
|
||||
# self.send(self.arg)
|
||||
|
||||
run_event_loop(None, None, key_received)
|
||||
|
||||
def loop(self):
|
||||
isb = self.c.ctx.socket(zmq.PULL)
|
||||
isb.connect("inproc://midi")
|
||||
self.c.poller.register(isb, zmq.POLLIN)
|
||||
while True:
|
||||
p = dict(self.c.poller.poll())
|
||||
if isb in p:
|
||||
msg = Msg.decode_msg(isb.recv())
|
||||
match msg.type:
|
||||
case 'pitchwheel':
|
||||
match msg.channel:
|
||||
case 0:
|
||||
# print(msg.pitch)
|
||||
self.send(ImageArgMsg('midi', 0, msg.pitch * 3))
|
||||
if self.c.sub in p:
|
||||
msg = self.recv()
|
||||
if isinstance(msg, KillMsg):
|
||||
if msg.name == '':
|
||||
self.do_loop = False
|
||||
return
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
Joystick()()
|
||||
@ -1,10 +1,12 @@
|
||||
import logging
|
||||
import platform
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
from enum import Enum, auto
|
||||
from pathlib import Path
|
||||
|
||||
import zmq
|
||||
from PyQt6 import QtCore, QtWidgets
|
||||
from PyQt6.QtCore import QByteArray
|
||||
from PyQt6.QtWidgets import QMainWindow, QApplication, QFrame, QMessageBox, QFileDialog, QLineEdit
|
||||
@ -16,7 +18,7 @@ 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
|
||||
SeqIdList, SetWindowVisibleMsg, SetSidMsg, ImagingConfigNameListMsg, DeviceZero
|
||||
from utils.RfMeta import RfSequenceMeta
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -97,6 +99,24 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.b_new_imaging_config.clicked.connect(self.on_new_imaging_config)
|
||||
self.c_imaging_config.currentIndexChanged.connect(self.on_imaging_config)
|
||||
|
||||
self.b_probe_single.clicked.connect(self.on_probe('single'))
|
||||
self.b_probe_orig.clicked.connect(self.on_probe('orig'))
|
||||
self.b_probe_start.clicked.connect(self.on_probe('start'))
|
||||
self.b_probe_stop.clicked.connect(self.on_probe('stop'))
|
||||
|
||||
self.b_device_zero.clicked.connect(lambda: self.p.send(DeviceZero()))
|
||||
|
||||
def on_probe(self, arg):
|
||||
def f():
|
||||
ctx = zmq.Context()
|
||||
p = ctx.socket(zmq.PUSH)
|
||||
p.connect('tcp://q1hyb.as:23456')
|
||||
time.sleep(0.1)
|
||||
p.send_string(arg)
|
||||
p.disconnect('tcp://q1hyb.as:23456')
|
||||
|
||||
return f
|
||||
|
||||
def on_imaging_config(self, i):
|
||||
name = self.c_imaging_config.itemText(i)
|
||||
self.p.send(ImageArgMsg.from_path(IMAGING_CONFIG / f'{name}.json'))
|
||||
@ -322,15 +342,29 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
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, DeviceConfigListMsg):
|
||||
for name, txt in msg.arr:
|
||||
self.c_live_seq_name.addItem(name, txt)
|
||||
elif isinstance(msg, RobotRtsiMsg):
|
||||
self.l_robot_pos.setText(','.join([f'{v}' for v in msg.pos]))
|
||||
self.l_robot_force.setText(','.join([f'{v}' for v in msg.force]))
|
||||
self.ln_x.display(f"{msg.pos[0] / 100:.2f}")
|
||||
self.ln_y.display(f"{msg.pos[1] / 100:.2f}")
|
||||
self.ln_z.display(f"{msg.pos[2] / 100:.2f}")
|
||||
self.ln_rx.display(f"{msg.pos[3] / 1000:.3f}")
|
||||
self.ln_ry.display(f"{msg.pos[4] / 1000:.3f}")
|
||||
self.ln_rz.display(f"{msg.pos[5] / 1000:.3f}")
|
||||
|
||||
self.ln_fx.display(f"{msg.force[0] / 10:.1f}")
|
||||
self.ln_fy.display(f"{msg.force[1] / 10:.1f}")
|
||||
self.ln_fz.display(f"{msg.force[2] / 10:.1f}")
|
||||
self.ln_frx.display(f"{msg.force[3] / 100:.2f}")
|
||||
self.ln_fry.display(f"{msg.force[4] / 100:.2f}")
|
||||
self.ln_frz.display(f"{msg.force[5] / 100:.2f}")
|
||||
|
||||
elif isinstance(msg, RecordFrameMsg):
|
||||
|
||||
self.record_frame_cnt += 1
|
||||
|
||||
66
src/nodes/Midi.py
Normal file
66
src/nodes/Midi.py
Normal file
@ -0,0 +1,66 @@
|
||||
import logging
|
||||
from threading import Thread
|
||||
from unittest import case
|
||||
|
||||
import mido
|
||||
import zmq
|
||||
from mido import Message
|
||||
from mido.backends.rtmidi import Input, Output
|
||||
|
||||
from nodes.Node import Node
|
||||
from utils.Msg import KillMsg, MidiMsg, Msg, ImageArgMsg
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Midi(Node):
|
||||
def __init__(self, level=logging.INFO):
|
||||
super(Midi, self).__init__(level=level)
|
||||
self.m_input: Input = None
|
||||
self.m_output: Output = None
|
||||
self.do_loop = True
|
||||
self.t_midi_event_loop: Thread = None
|
||||
self.isa: zmq.Socket = None
|
||||
|
||||
def custom_setup(self):
|
||||
self.isa = self.c.ctx.socket(zmq.PUSH)
|
||||
self.isa.bind("inproc://midi")
|
||||
|
||||
self.m_input: Input = mido.open_input('SMC-Mixer:SMC-Mixer Bluetooth 128:0')
|
||||
self.m_output: Output = mido.open_output('SMC-Mixer:SMC-Mixer Bluetooth 128:0')
|
||||
self.t_midi_event_loop = Thread(target=self.midi_event_loop)
|
||||
self.t_midi_event_loop.start()
|
||||
|
||||
def midi_event_loop(self):
|
||||
while self.do_loop:
|
||||
midi_msg: Message = self.m_input.receive()
|
||||
# print(midi_msg)
|
||||
d = midi_msg.dict()
|
||||
match d['type']:
|
||||
case 'pitchwheel':
|
||||
channel = d['channel']
|
||||
# 0-127
|
||||
pitch = int(d['pitch'] / 128) + 64
|
||||
# pitch_p = int(pitch / 127)
|
||||
self.isa.send(MidiMsg(type='pitchwheel', channel=channel, pitch=pitch).encode_msg())
|
||||
|
||||
def loop(self):
|
||||
isb = self.c.ctx.socket(zmq.PULL)
|
||||
isb.connect("inproc://midi")
|
||||
self.c.poller.register(isb, zmq.POLLIN)
|
||||
while True:
|
||||
p = dict(self.c.poller.poll())
|
||||
if isb in p:
|
||||
msg = Msg.decode_msg(isb.recv())
|
||||
match msg.type:
|
||||
case 'pitchwheel':
|
||||
match msg.channel:
|
||||
case 0:
|
||||
# print(msg.pitch)
|
||||
self.send(ImageArgMsg('midi', 0, msg.pitch * 3))
|
||||
if self.c.sub in p:
|
||||
msg = self.recv()
|
||||
if isinstance(msg, KillMsg):
|
||||
if msg.name == '':
|
||||
self.do_loop = False
|
||||
return
|
||||
@ -37,8 +37,9 @@ class Node:
|
||||
|
||||
def base_setup(self):
|
||||
FORMAT = '[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s'
|
||||
FORMAT = '"%(pathname)s:%(lineno)d" %(levelname)s - %(message)s'
|
||||
logging.basicConfig(level=self.level, format=FORMAT)
|
||||
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',)
|
||||
|
||||
self.context = zmq.Context()
|
||||
if self.enable_init:
|
||||
self.c = BusClient(*([KillMsg] + self.topics), poller=True, conflare=self.conflare)
|
||||
|
||||
417
src/ui/Main.py
417
src/ui/Main.py
@ -12,91 +12,68 @@ from PyQt6 import QtCore, QtGui, QtWidgets
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(1158, 805)
|
||||
MainWindow.resize(1158, 998)
|
||||
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.gridLayout_3 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_3.setObjectName("gridLayout_3")
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.label_20 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_20.setObjectName("label_20")
|
||||
self.horizontalLayout.addWidget(self.label_20)
|
||||
self.c_live_seq_name = QtWidgets.QComboBox(parent=self.centralwidget)
|
||||
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.gridLayout_3.addLayout(self.horizontalLayout, 3, 0, 1, 4)
|
||||
self.b_device_enable = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_device_enable.setEnabled(False)
|
||||
self.b_device_enable.setObjectName("b_device_enable")
|
||||
self.gridLayout_3.addWidget(self.b_device_enable, 2, 3, 1, 1)
|
||||
self.b_device_connection = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_device_connection.setObjectName("b_device_connection")
|
||||
self.gridLayout_3.addWidget(self.b_device_connection, 2, 1, 1, 1)
|
||||
self.label_24 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label_24.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.label_24.setObjectName("label_24")
|
||||
self.gridLayout_3.addWidget(self.label_24, 1, 2, 2, 1)
|
||||
self.lb_device_connection = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.lb_device_connection.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.lb_device_connection.setObjectName("lb_device_connection")
|
||||
self.gridLayout_3.addWidget(self.lb_device_connection, 1, 1, 1, 1)
|
||||
self.l_online = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.g_device = QtWidgets.QGroupBox(parent=self.centralwidget)
|
||||
self.g_device.setEnabled(True)
|
||||
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.gridLayout_3.addWidget(self.l_online, 0, 0, 1, 4)
|
||||
self.lb_device_enable = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
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)
|
||||
self.b_device_connection.setObjectName("b_device_connection")
|
||||
self.gridLayout_8.addWidget(self.b_device_connection, 1, 1, 1, 1)
|
||||
self.lb_device_connection = QtWidgets.QLabel(parent=self.g_device)
|
||||
self.lb_device_connection.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.lb_device_connection.setObjectName("lb_device_connection")
|
||||
self.gridLayout_8.addWidget(self.lb_device_connection, 0, 1, 1, 1)
|
||||
self.lb_device_enable = QtWidgets.QLabel(parent=self.g_device)
|
||||
self.lb_device_enable.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.lb_device_enable.setObjectName("lb_device_enable")
|
||||
self.gridLayout_3.addWidget(self.lb_device_enable, 1, 3, 1, 1)
|
||||
self.label_21 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.gridLayout_8.addWidget(self.lb_device_enable, 0, 3, 1, 1)
|
||||
self.b_device_enable = QtWidgets.QPushButton(parent=self.g_device)
|
||||
self.b_device_enable.setEnabled(False)
|
||||
self.b_device_enable.setObjectName("b_device_enable")
|
||||
self.gridLayout_8.addWidget(self.b_device_enable, 1, 3, 1, 1)
|
||||
self.label_24 = QtWidgets.QLabel(parent=self.g_device)
|
||||
self.label_24.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.label_24.setObjectName("label_24")
|
||||
self.gridLayout_8.addWidget(self.label_24, 0, 2, 2, 1)
|
||||
self.label_21 = QtWidgets.QLabel(parent=self.g_device)
|
||||
self.label_21.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.label_21.setObjectName("label_21")
|
||||
self.gridLayout_3.addWidget(self.label_21, 1, 0, 2, 1)
|
||||
self.gridLayout_3.setColumnStretch(1, 1)
|
||||
self.gridLayout_3.setColumnStretch(3, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_3, 0, 0, 1, 1)
|
||||
self.gridLayout_2 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
||||
self.l_robot_pos = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(15)
|
||||
self.l_robot_pos.setFont(font)
|
||||
self.l_robot_pos.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.l_robot_pos.setObjectName("l_robot_pos")
|
||||
self.gridLayout_2.addWidget(self.l_robot_pos, 1, 1, 1, 1)
|
||||
self.l_robot_force = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(15)
|
||||
self.l_robot_force.setFont(font)
|
||||
self.l_robot_force.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
|
||||
self.l_robot_force.setObjectName("l_robot_force")
|
||||
self.gridLayout_2.addWidget(self.l_robot_force, 2, 1, 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.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.label_19 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
font = QtGui.QFont()
|
||||
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, 2)
|
||||
self.gridLayout_2.setColumnStretch(1, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_2, 0, 1, 1, 1)
|
||||
self.gridLayout_8.addWidget(self.label_21, 0, 0, 2, 1)
|
||||
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.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.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.gridLayout_4 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_4.setObjectName("gridLayout_4")
|
||||
self.label_14 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
@ -179,7 +156,23 @@ class Ui_MainWindow(object):
|
||||
self.horizontalSlider_8.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||
self.horizontalSlider_8.setObjectName("horizontalSlider_8")
|
||||
self.gridLayout_4.addWidget(self.horizontalSlider_8, 6, 1, 1, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_4, 2, 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.gridLayout_5 = QtWidgets.QGridLayout()
|
||||
self.gridLayout_5.setObjectName("gridLayout_5")
|
||||
self.spinBox_3 = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
@ -247,7 +240,158 @@ class Ui_MainWindow(object):
|
||||
self.horizontalLayout_3.addWidget(self.b_new_imaging_config)
|
||||
self.horizontalLayout_3.setStretch(1, 1)
|
||||
self.gridLayout_5.addLayout(self.horizontalLayout_3, 2, 0, 1, 3)
|
||||
self.gridLayout.addLayout(self.gridLayout_5, 2, 0, 1, 1)
|
||||
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.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)
|
||||
font = QtGui.QFont()
|
||||
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)
|
||||
@ -299,76 +443,6 @@ class Ui_MainWindow(object):
|
||||
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.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, 3, 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.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, 4, 0, 1, 2)
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 1158, 30))
|
||||
@ -384,20 +458,17 @@ 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.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.c_live_seq_name.setItemText(0, _translate("MainWindow", "Empty"))
|
||||
self.b_device_enable.setText(_translate("MainWindow", "Disconnect"))
|
||||
self.b_device_connection.setText(_translate("MainWindow", "Connect"))
|
||||
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.lb_device_connection.setText(_translate("MainWindow", "Disconnected"))
|
||||
self.l_online.setText(_translate("MainWindow", "Device Offline"))
|
||||
self.lb_device_enable.setText(_translate("MainWindow", "Disabled"))
|
||||
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.l_robot_pos.setText(_translate("MainWindow", "0,0,0,0,0,0"))
|
||||
self.l_robot_force.setText(_translate("MainWindow", "0,0,0,0,0,0"))
|
||||
self.label_22.setText(_translate("MainWindow", "Position"))
|
||||
self.label_23.setText(_translate("MainWindow", "Force"))
|
||||
self.label_19.setText(_translate("MainWindow", "Robot Offline"))
|
||||
self.b_device_zero.setText(_translate("MainWindow", "Zero"))
|
||||
self.label_14.setText(_translate("MainWindow", "Yal"))
|
||||
self.label_13.setText(_translate("MainWindow", "Pitch"))
|
||||
self.label_3.setText(_translate("MainWindow", "Probe Position"))
|
||||
@ -406,6 +477,9 @@ 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"))
|
||||
@ -413,6 +487,25 @@ class Ui_MainWindow(object):
|
||||
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.label_17.setText(_translate("MainWindow", "RecordName"))
|
||||
self.b_record.setText(_translate("MainWindow", "Record"))
|
||||
self.label_18.setText(_translate("MainWindow", "Record Frames:"))
|
||||
self.l_record_frames.setText(_translate("MainWindow", "0"))
|
||||
self.label_25.setText(_translate("MainWindow", "Record Size:"))
|
||||
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.label_4.setText(_translate("MainWindow", "Frame ID"))
|
||||
@ -423,17 +516,3 @@ 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.setText(_translate("MainWindow", "Base Path"))
|
||||
self.b_select_base.setText(_translate("MainWindow", "Select"))
|
||||
self.b_base.setText(_translate("MainWindow", "Open"))
|
||||
self.label_17.setText(_translate("MainWindow", "RecordName"))
|
||||
self.b_record.setText(_translate("MainWindow", "Record"))
|
||||
self.label_18.setText(_translate("MainWindow", "Record Frames:"))
|
||||
self.l_record_frames.setText(_translate("MainWindow", "0"))
|
||||
self.label_25.setText(_translate("MainWindow", "Record Size:"))
|
||||
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.cb_bscan.setText(_translate("MainWindow", "BSCAN"))
|
||||
self.checkBox.setText(_translate("MainWindow", "FOCUS"))
|
||||
|
||||
720
src/ui/Main.ui
720
src/ui/Main.ui
@ -7,17 +7,103 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1158</width>
|
||||
<height>805</height>
|
||||
<height>998</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Scarlet Flandre Control Panel</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0">
|
||||
<layout class="QGridLayout" name="gridLayout" rowstretch="0,0,0,0,0,0">
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_3" columnstretch="0,1,0,1">
|
||||
<item row="3" column="0" colspan="4">
|
||||
<widget class="QGroupBox" name="g_device">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Device Status</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="l_online">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>15</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: pink;</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Device Offline</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout_8" columnstretch="0,1,0,1">
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="b_device_connection">
|
||||
<property name="text">
|
||||
<string>Connect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="lb_device_connection">
|
||||
<property name="text">
|
||||
<string>Disconnected</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="lb_device_enable">
|
||||
<property name="text">
|
||||
<string>Disabled</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QPushButton" name="b_device_enable">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Disconnect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2" rowspan="2">
|
||||
<widget class="QLabel" name="label_24">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p style="line-height:0.3" align="center">Beam</p><p align="center">Status</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="2">
|
||||
<widget class="QLabel" name="label_21">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p style="line-height:0.3" align="center">Connection</p><p align="center">Status</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_20">
|
||||
@ -40,150 +126,17 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="QPushButton" name="b_device_enable">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_device_zero">
|
||||
<property name="text">
|
||||
<string>Disconnect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="b_device_connection">
|
||||
<property name="text">
|
||||
<string>Connect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2" rowspan="2">
|
||||
<widget class="QLabel" name="label_24">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p style="line-height:0.3" align="center">Beam</p><p align="center">Status</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="lb_device_connection">
|
||||
<property name="text">
|
||||
<string>Disconnected</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="4">
|
||||
<widget class="QLabel" name="l_online">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>15</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: pink;</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Device Offline</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLabel" name="lb_device_enable">
|
||||
<property name="text">
|
||||
<string>Disabled</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" rowspan="2">
|
||||
<widget class="QLabel" name="label_21">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p style="line-height:0.3" align="center">Connection</p><p align="center">Status</p></body></html></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
<string>Zero</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,1">
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="l_robot_pos">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>15</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0,0,0,0,0,0</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLabel" name="l_robot_force">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>15</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>0,0,0,0,0,0</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_22">
|
||||
<property name="text">
|
||||
<string>Position</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_23">
|
||||
<property name="text">
|
||||
<string>Force</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>15</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: pink;</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Robot Offline</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<item row="3" column="1">
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_14">
|
||||
@ -335,7 +288,39 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<item row="4" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Base Path</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="l_base">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_select_base">
|
||||
<property name="text">
|
||||
<string>Select</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_base">
|
||||
<property name="text">
|
||||
<string>Open</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="6" column="2">
|
||||
<widget class="QSpinBox" name="spinBox_3"/>
|
||||
@ -463,6 +448,307 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cb_bscan">
|
||||
<property name="text">
|
||||
<string>BSCAN</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkBox">
|
||||
<property name="text">
|
||||
<string>FOCUS</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_6">
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="l_record_commit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="text">
|
||||
<string>RecordName</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QPushButton" name="b_record">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Record</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="3">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1,0,1,0,1">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_18">
|
||||
<property name="text">
|
||||
<string>Record Frames:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="l_record_frames">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_25">
|
||||
<property name="text">
|
||||
<string>Record Size:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="l_record_size">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_26">
|
||||
<property name="text">
|
||||
<string>Max SeqId:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="l_record_max_sid">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="3">
|
||||
<widget class="QPushButton" name="b_play_live">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Live</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_probe_start">
|
||||
<property name="text">
|
||||
<string>Start</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_probe_stop">
|
||||
<property name="text">
|
||||
<string>Stop</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="l_probe_angle">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_probe_single">
|
||||
<property name="text">
|
||||
<string>Single</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_probe_orig">
|
||||
<property name="text">
|
||||
<string>Orig</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<layout class="QGridLayout" name="gridLayout_2" columnstretch="0,1,1,1,1,1,1">
|
||||
<item row="1" column="2">
|
||||
<widget class="QLCDNumber" name="ln_y">
|
||||
<property name="digitCount">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLCDNumber" name="ln_z">
|
||||
<property name="digitCount">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLCDNumber" name="ln_x">
|
||||
<property name="digitCount">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="5">
|
||||
<widget class="QLCDNumber" name="ln_ry">
|
||||
<property name="digitCount">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_22">
|
||||
<property name="text">
|
||||
<string>Position</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<widget class="QLCDNumber" name="ln_rx">
|
||||
<property name="digitCount">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_23">
|
||||
<property name="text">
|
||||
<string>Force</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="6">
|
||||
<widget class="QLCDNumber" name="ln_rz">
|
||||
<property name="digitCount">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLCDNumber" name="ln_fx">
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2">
|
||||
<widget class="QLCDNumber" name="ln_fy">
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="QLCDNumber" name="ln_fz">
|
||||
<property name="smallDecimalPoint">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
<property name="value" stdset="0">
|
||||
<double>0.010000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="4">
|
||||
<widget class="QLCDNumber" name="ln_frx">
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="5">
|
||||
<widget class="QLCDNumber" name="ln_fry">
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="6">
|
||||
<widget class="QLCDNumber" name="ln_frz">
|
||||
<property name="segmentStyle">
|
||||
<enum>QLCDNumber::SegmentStyle::Flat</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="7">
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>15</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: pink;</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Robot Offline</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignmentFlag::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QGridLayout" name="gridLayout_7">
|
||||
<item row="3" column="1">
|
||||
@ -565,156 +851,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Base Path</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="l_base">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_select_base">
|
||||
<property name="text">
|
||||
<string>Select</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_base">
|
||||
<property name="text">
|
||||
<string>Open</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_6">
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="l_record_commit">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="text">
|
||||
<string>RecordName</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QPushButton" name="b_record">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Record</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="3">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1,0,1,0,1">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_18">
|
||||
<property name="text">
|
||||
<string>Record Frames:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="l_record_frames">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_25">
|
||||
<property name="text">
|
||||
<string>Record Size:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="l_record_size">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_26">
|
||||
<property name="text">
|
||||
<string>Max SeqId:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="l_record_max_sid">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="3">
|
||||
<widget class="QPushButton" name="b_play_live">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Live</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cb_bscan">
|
||||
<property name="text">
|
||||
<string>BSCAN</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkBox">
|
||||
<property name="text">
|
||||
<string>FOCUS</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
|
||||
@ -40,6 +40,9 @@ class BG(Enum):
|
||||
BytesMsg = auto()
|
||||
BeamformerMsg = auto()
|
||||
RequestRfFrameMsg = auto()
|
||||
MidiMsg = auto()
|
||||
JoystickMsg = auto()
|
||||
DeviceZero = auto()
|
||||
|
||||
|
||||
class Msg:
|
||||
@ -308,6 +311,23 @@ class BeamformerMsg(BytesMsg):
|
||||
pass
|
||||
|
||||
|
||||
class DeviceZero(Msg):
|
||||
pass
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class MidiMsg(Msg):
|
||||
type: str
|
||||
channel: int
|
||||
pitch: int
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class JoystickMsg(Msg):
|
||||
key: str
|
||||
value: float
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class RobotRtsiMsg(Msg):
|
||||
pos: tuple[int, int, int, int, int, int]
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import click
|
||||
from miio.miioprotocol import MiIOProtocol
|
||||
|
||||
from config import SWITCH1_IP, SWITCH1_TOKEN, SWITCH2_IP, SWITCH2_TOKEN
|
||||
@ -51,5 +52,38 @@ def c2_connected():
|
||||
return c2().send('get_properties', [{'did': 'MYDID', 'siid': 2, 'piid': 1}])[0]['value']
|
||||
|
||||
|
||||
@click.group()
|
||||
def cli():
|
||||
pass
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.argument('name')
|
||||
def on(name):
|
||||
if name == 'c1':
|
||||
c1_connect()
|
||||
if name == 'c2':
|
||||
c2_connect()
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.argument('name')
|
||||
def off(name):
|
||||
if name == 'c1':
|
||||
c1_disconnect()
|
||||
if name == 'c2':
|
||||
c2_disconnect()
|
||||
|
||||
|
||||
@cli.command()
|
||||
@click.argument('name')
|
||||
def status(name):
|
||||
if name == 'c1':
|
||||
print(c1_connected())
|
||||
print(c1_power())
|
||||
if name == 'c2':
|
||||
print(c2_connected())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(c2_connect())
|
||||
cli()
|
||||
|
||||
@ -7,7 +7,10 @@ from nodes.Broker import Broker
|
||||
from nodes.Device import Device
|
||||
from nodes.ImageCV import ImageCV
|
||||
from nodes.ImageFFMPEG import ImageFFMPEG
|
||||
from nodes.JoyStick import Joystick
|
||||
from nodes.Loader import Loader
|
||||
from nodes.Midi import Midi
|
||||
from nodes.Monitor import Monitor
|
||||
from nodes.Muxer import Muxer
|
||||
from nodes.Recorder import Recorder
|
||||
from nodes.Robot import Robot
|
||||
@ -23,13 +26,16 @@ if __name__ == '__main__':
|
||||
Broker(),
|
||||
kde_pyqt6_mainui,
|
||||
Device(level=logging.DEBUG),
|
||||
ImageFFMPEG(),
|
||||
# ImageFFMPEG(),
|
||||
ImageCV(level=logging.DEBUG),
|
||||
Beamformer(level=logging.DEBUG),
|
||||
Loader(),
|
||||
Muxer(level=logging.DEBUG),
|
||||
Midi(),
|
||||
# Joystick(),
|
||||
Robot(),
|
||||
Recorder(),
|
||||
# Monitor(),
|
||||
]
|
||||
for p in ps:
|
||||
pps.append(multiprocessing.Process(target=p))
|
||||
|
||||
@ -2,12 +2,35 @@ from miio.miioprotocol import MiIOProtocol
|
||||
from config import SWITCH1_IP, SWITCH1_TOKEN, SWITCH2_IP, SWITCH2_TOKEN
|
||||
from miio import Device
|
||||
|
||||
from utils.mi import c1_disconnect, c1_connect
|
||||
# from utils.mi import c1_disconnect, c1_connect, c2_connect
|
||||
#
|
||||
# if __name__ == '__main__':
|
||||
# # m = MiIOProtocol(
|
||||
# # SWITCH1_IP, SWITCH1_TOKEN,
|
||||
# # )
|
||||
# # r = m.send('get_properties', [{'did': 'MYDID', 'siid': 2, 'piid': 1}])
|
||||
# # print(r[0]['value'])
|
||||
# c1_connect()
|
||||
# c2_connect()
|
||||
|
||||
import click
|
||||
|
||||
|
||||
@click.group()
|
||||
def cli():
|
||||
pass
|
||||
|
||||
@cli.command()
|
||||
@click.option('--count', default=1, help='Number of greetings.')
|
||||
@click.option('--name', prompt='Your name',
|
||||
help='The person to greet.')
|
||||
def con(count, name):
|
||||
"""Simple program that greets NAME for a total of COUNT times."""
|
||||
for x in range(count):
|
||||
click.echo(f"Hello {name}!")
|
||||
|
||||
@cli.command()
|
||||
def disconnect():
|
||||
click.echo('Dropped the database')
|
||||
if __name__ == '__main__':
|
||||
# m = MiIOProtocol(
|
||||
# SWITCH1_IP, SWITCH1_TOKEN,
|
||||
# )
|
||||
# r = m.send('get_properties', [{'did': 'MYDID', 'siid': 2, 'piid': 1}])
|
||||
# print(r[0]['value'])
|
||||
c1_connect()
|
||||
cli()
|
||||
|
||||
209
uv.lock
209
uv.lock
@ -9,13 +9,6 @@ resolution-markers = [
|
||||
"sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'",
|
||||
]
|
||||
|
||||
[manifest]
|
||||
overrides = [
|
||||
{ name = "av", marker = "sys_platform != 'linux' and sys_platform != 'win32'", specifier = ">=14.0.0" },
|
||||
{ name = "av", marker = "sys_platform == 'linux'", path = "av-14.2.0rc1-cp312-cp312-linux_x86_64.whl" },
|
||||
{ name = "av", marker = "sys_platform == 'win32'", path = "av-14.1.0-cp312-cp312-win_amd64.whl" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aiohappyeyeballs"
|
||||
version = "2.4.4"
|
||||
@ -69,46 +62,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/13/e7/e436a0c0eb5127d8b491a9b83ecd2391c6ff7dcd5548dfaec2080a2340fd/aiohttp_cors-0.7.0-py3-none-any.whl", hash = "sha256:0451ba59fdf6909d0e2cd21e4c0a43752bc0703d33fc78ae94d9d9321710193e", size = 27564 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aioice"
|
||||
version = "0.9.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "dnspython" },
|
||||
{ name = "ifaddr" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/33/b6/e2b0e48ccb5b04fe29265e93f14a0915f416e359c897ae87d570566c430b/aioice-0.9.0.tar.gz", hash = "sha256:fc2401b1c4b6e19372eaaeaa28fd1bd9cbf6b0e412e48625297c53b495eebd1e", size = 40324 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/b6/35/d21e48d3ba25d32aba5d142d54c4491376c659dd74d052a30dd25198007b/aioice-0.9.0-py3-none-any.whl", hash = "sha256:b609597a3a5a611e0004ff04772e16aceb881d51c25c0afc4ceac05d5e50024e", size = 24177 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aiortc"
|
||||
version = "1.9.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "aioice" },
|
||||
{ name = "av", version = "14.1.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' and sys_platform != 'win32'" },
|
||||
{ name = "av", version = "14.2.0rc1", source = { path = "av-14.1.0-cp312-cp312-win_amd64.whl" }, marker = "sys_platform == 'win32'" },
|
||||
{ name = "av", version = "14.2.0rc1", source = { path = "av-14.2.0rc1-cp312-cp312-linux_x86_64.whl" }, marker = "sys_platform == 'linux'" },
|
||||
{ name = "cffi" },
|
||||
{ name = "cryptography" },
|
||||
{ name = "google-crc32c" },
|
||||
{ name = "pyee" },
|
||||
{ name = "pylibsrtp" },
|
||||
{ name = "pyopenssl" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/71/32/e9b01e2271124643e5dc15c273f2bb8155efebf5bc2115407441ac62f4c5/aiortc-1.9.0.tar.gz", hash = "sha256:03faa76d76ef0e5989ac10386898b029369756102217230e2fcd4b029c50b303", size = 1168973 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/93/01/db89910fc4dfb72ca25fd9a41326762a490d93d39d2fc4aac3f86c05857d/aiortc-1.9.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e3e67c1970c2cffacac53c8f161df264efc62b22721c64a621940935028ee087", size = 1216069 },
|
||||
{ url = "https://files.pythonhosted.org/packages/4c/6d/76ed96521080492c7264eacf73a8cba2202f1ff9f59af1776c5a2532f332/aiortc-1.9.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d893cb3d4ffa0ff4f9bb03a88f0a700cdbcd4c0dc060a46c59a27ccd1c890663", size = 896012 },
|
||||
{ url = "https://files.pythonhosted.org/packages/8c/87/1f666108764fa5b557bed4f0fd5e2acccd739bb2cca2b766dcacb53e5669/aiortc-1.9.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:176b4eb38d833667f87cf719a7a3e105e25a35b138b30893294418c1c96e38db", size = 1779113 },
|
||||
{ url = "https://files.pythonhosted.org/packages/32/03/f3233e936f7a81549bd95f33f3d304e2a9211cb35d819d74570c0718b1ac/aiortc-1.9.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44b610f36b8d17123855dfbe915fa6874201765b8a2c7fd9cf72d14cf417740", size = 1896322 },
|
||||
{ url = "https://files.pythonhosted.org/packages/96/99/6672cf57777801c6ddacc13e1ee07f8c2151d0847a4f81455eeec998eaed/aiortc-1.9.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:55505adb31d56cba19a1ef8ad6aa9b727ccdba2a83bfbfb4aa79ef3c472026a6", size = 1918600 },
|
||||
{ url = "https://files.pythonhosted.org/packages/76/e3/bdb76e7e51bc4fc7a5869597de2effad073ccf5ef14de3aed742d7384107/aiortc-1.9.0-cp38-abi3-win32.whl", hash = "sha256:680b703e35870e301535c930bfe32e7d012224a91ce51531aba45a3124ef07cc", size = 923055 },
|
||||
{ url = "https://files.pythonhosted.org/packages/6a/df/de098b31a3fbf1117f6d4cb84c14518636054e3c95a9d9f693a1123c95b3/aiortc-1.9.0-cp38-abi3-win_amd64.whl", hash = "sha256:de5e7020cfc2d2d9fb95690926ff2e3b3c30cd4f5f5bc68d5b6756a8eebb686e", size = 1009610 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aiosignal"
|
||||
version = "1.3.2"
|
||||
@ -232,43 +185,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", size = 63001 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "av"
|
||||
version = "14.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
resolution-markers = [
|
||||
"sys_platform == 'darwin'",
|
||||
"sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'",
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/c1/8c/8551a53c713424aff5ae1600f17f7407e64761d4eca8854013ee15f2c090/av-14.1.0.tar.gz", hash = "sha256:81a0185af0237016049c2b1560d51d5895ef56763ea7ebab939baa7b6b87e6f7", size = 4049387 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/d0/3f/9fb6a691f52a38917330d7025690445db1aff3eff5887852a44a0728511d/av-14.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d2ca492e369b5628c8a1fc6889c1ac1f66ec8e4b99d2cc2633e7eaf4d2c82e66", size = 22093254 },
|
||||
{ url = "https://files.pythonhosted.org/packages/af/08/b1de0d440e73b3dfd117cedd2dcbb81eabe601da4ea84aa12d66bc9b3716/av-14.1.0-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:8bf8db92bd986e3278b93bd7ca187bf753bb56d63a0015160fe1d3bba69f30e7", size = 27487693 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "av"
|
||||
version = "14.2.0rc1"
|
||||
source = { path = "av-14.1.0-cp312-cp312-win_amd64.whl" }
|
||||
resolution-markers = [
|
||||
"sys_platform == 'win32'",
|
||||
]
|
||||
wheels = [
|
||||
{ filename = "av-14.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:09b2b76869a38b5f1b7a0808f799c60882ff64ec1e66927e319aafc1b3bf55c0" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "av"
|
||||
version = "14.2.0rc1"
|
||||
source = { path = "av-14.2.0rc1-cp312-cp312-linux_x86_64.whl" }
|
||||
resolution-markers = [
|
||||
"platform_machine == 'aarch64' and sys_platform == 'linux'",
|
||||
"platform_machine != 'aarch64' and sys_platform == 'linux'",
|
||||
]
|
||||
wheels = [
|
||||
{ filename = "av-14.2.0rc1-cp312-cp312-linux_x86_64.whl", hash = "sha256:09b2b76869a38b5f1b7a0808f799c60882ff64ec1e66927e319aafc1b3bf55c0" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "babel"
|
||||
version = "2.16.0"
|
||||
@ -542,15 +458,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dnspython"
|
||||
version = "2.7.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "executing"
|
||||
version = "2.1.0"
|
||||
@ -589,13 +496,12 @@ version = "0.1.0"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "aiohttp-cors" },
|
||||
{ name = "aiortc" },
|
||||
{ name = "av", version = "14.1.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' and sys_platform != 'win32'" },
|
||||
{ name = "av", version = "14.2.0rc1", source = { path = "av-14.1.0-cp312-cp312-win_amd64.whl" }, marker = "sys_platform == 'win32'" },
|
||||
{ name = "av", version = "14.2.0rc1", source = { path = "av-14.2.0rc1-cp312-cp312-linux_x86_64.whl" }, marker = "sys_platform == 'linux'" },
|
||||
{ name = "click" },
|
||||
{ name = "cupy-cuda12x" },
|
||||
{ name = "jupyter" },
|
||||
{ name = "mido", extra = ["ports-rtmidi"] },
|
||||
{ name = "opencv-python" },
|
||||
{ name = "pyjoystick" },
|
||||
{ name = "pyqt6" },
|
||||
{ name = "pyqt6-fluent-widgets", extra = ["full"] },
|
||||
{ name = "python-miio" },
|
||||
@ -608,13 +514,12 @@ dependencies = [
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "aiohttp-cors", specifier = ">=0.7.0" },
|
||||
{ name = "aiortc", specifier = ">=1.9.0" },
|
||||
{ name = "av", marker = "sys_platform != 'linux' and sys_platform != 'win32'" },
|
||||
{ name = "av", marker = "sys_platform == 'linux'", path = "av-14.2.0rc1-cp312-cp312-linux_x86_64.whl" },
|
||||
{ name = "av", marker = "sys_platform == 'win32'", path = "av-14.1.0-cp312-cp312-win_amd64.whl" },
|
||||
{ name = "click", specifier = ">=8.1.8" },
|
||||
{ name = "cupy-cuda12x", specifier = ">=13.3.0" },
|
||||
{ name = "jupyter", specifier = ">=1.1.1" },
|
||||
{ name = "mido", extras = ["ports-rtmidi"], specifier = ">=1.3.3" },
|
||||
{ name = "opencv-python", specifier = ">=4.10.0.84" },
|
||||
{ name = "pyjoystick", specifier = ">=1.2.4" },
|
||||
{ name = "pyqt6", specifier = ">=6.8.0" },
|
||||
{ name = "pyqt6-fluent-widgets", extras = ["full"], specifier = ">=1.7.4" },
|
||||
{ name = "python-miio", specifier = ">=0.5.12" },
|
||||
@ -674,19 +579,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "google-crc32c"
|
||||
version = "1.6.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/67/72/c3298da1a3773102359c5a78f20dae8925f5ea876e37354415f68594a6fb/google_crc32c-1.6.0.tar.gz", hash = "sha256:6eceb6ad197656a1ff49ebfbbfa870678c75be4344feb35ac1edf694309413dc", size = 14472 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/cf/41/65a91657d6a8123c6c12f9aac72127b6ac76dda9e2ba1834026a842eb77c/google_crc32c-1.6.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ed767bf4ba90104c1216b68111613f0d5926fb3780660ea1198fc469af410e9d", size = 30268 },
|
||||
{ url = "https://files.pythonhosted.org/packages/59/d0/ee743a267c7d5c4bb8bd865f7d4c039505f1c8a4b439df047fdc17be9769/google_crc32c-1.6.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:62f6d4a29fea082ac4a3c9be5e415218255cf11684ac6ef5488eea0c9132689b", size = 30113 },
|
||||
{ url = "https://files.pythonhosted.org/packages/25/53/e5e449c368dd26ade5fb2bb209e046d4309ed0623be65b13f0ce026cb520/google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c87d98c7c4a69066fd31701c4e10d178a648c2cac3452e62c6b24dc51f9fcc00", size = 32995 },
|
||||
{ url = "https://files.pythonhosted.org/packages/52/12/9bf6042d5b0ac8c25afed562fb78e51b0641474097e4139e858b45de40a5/google_crc32c-1.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd5e7d2445d1a958c266bfa5d04c39932dc54093fa391736dbfdb0f1929c1fb3", size = 32614 },
|
||||
{ url = "https://files.pythonhosted.org/packages/76/29/fc20f5ec36eac1eea0d0b2de4118c774c5f59c513f2a8630d4db6991f3e0/google_crc32c-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:7aec8e88a3583515f9e0957fe4f5f6d8d4997e36d0f61624e70469771584c760", size = 33445 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "h11"
|
||||
version = "0.14.0"
|
||||
@ -1185,6 +1077,23 @@ dependencies = [
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/7b/64/e1327477189913bba3e8392a3518c4fa2db14644ea2d0d5e243a018d7752/micloud-0.6.tar.gz", hash = "sha256:46c9e66741410955a9daf39892a7e6c3e24514a46bb126e872b1ddcf6de85138", size = 9429 }
|
||||
|
||||
[[package]]
|
||||
name = "mido"
|
||||
version = "1.3.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "packaging" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/23/14/cfda3fe61ce4c0f50a9f707ae02b46cb53211732b2cd4522bf06272848f4/mido-1.3.3.tar.gz", hash = "sha256:1aecb30b7f282404f17e43768cbf74a6a31bf22b3b783bdd117a1ce9d22cb74c", size = 124288 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/fd/28/45deb15c11859d2f10702b32e71de9328a9fa494f989626916db39a9617f/mido-1.3.3-py3-none-any.whl", hash = "sha256:01033c9b10b049e4436fca2762194ca839b09a4334091dd3c34e7f4ae674fd8a", size = 54614 },
|
||||
]
|
||||
|
||||
[package.optional-dependencies]
|
||||
ports-rtmidi = [
|
||||
{ name = "python-rtmidi" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mistune"
|
||||
version = "3.1.0"
|
||||
@ -1542,18 +1451,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/43/1d/81d59d228381576b92ecede5cd7239762c14001a828bdba30d64896e9778/pycryptodome-3.21.0-cp36-abi3-win_amd64.whl", hash = "sha256:b7aa25fc0baa5b1d95b7633af4f5f1838467f1815442b22487426f94e0d66c53", size = 1812863 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyee"
|
||||
version = "12.1.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "typing-extensions" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/0a/37/8fb6e653597b2b67ef552ed49b438d5398ba3b85a9453f8ada0fd77d455c/pyee-12.1.1.tar.gz", hash = "sha256:bbc33c09e2ff827f74191e3e5bbc6be7da02f627b7ec30d86f5ce1a6fb2424a3", size = 30915 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/25/68/7e150cba9eeffdeb3c5cecdb6896d70c8edd46ce41c0491e12fb2b2256ff/pyee-12.1.1-py3-none-any.whl", hash = "sha256:18a19c650556bb6b32b406d7f017c8f513aceed1ef7ca618fb65de7bd2d347ef", size = 15527 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pygments"
|
||||
version = "2.19.1"
|
||||
@ -1564,21 +1461,16 @@ wheels = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pylibsrtp"
|
||||
version = "0.10.0"
|
||||
name = "pyjoystick"
|
||||
version = "1.2.4"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "cffi" },
|
||||
{ name = "pysdl2" },
|
||||
{ name = "resource-man" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/6b/ae/c95199144eed954976223bdce3f94564eb6c43567111aff8048a26a429bd/pylibsrtp-0.10.0.tar.gz", hash = "sha256:d8001912d7f51bd05b4ea3551747930631777fd37892cf3bfe0e541a742e699f", size = 10557 }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/cb/0c/8cc48bb0f8e9e8b537e53d416de5c55570a63c84d4b5d8e4086391e543fd/pyjoystick-1.2.4.tar.gz", hash = "sha256:d3d676888d743b9e4aa2845f16f55df7fbbfa30db0ff4f033ace0ee33a8f7d29", size = 1084161 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/1c/d2/ffc24f80e83a54d9b309cdae6b31cf9294b4f3a85ab107827fd272d1e687/pylibsrtp-0.10.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6a1121ceea3339e0a84842a4a9da0fcf57cc8f99eb60dbf31a46d978b4170e7c", size = 1704188 },
|
||||
{ url = "https://files.pythonhosted.org/packages/66/3e/db86a09a5cb290a274f76ce25f4fae3a7e3c4a4dbc64baf7e2aaa57a32bb/pylibsrtp-0.10.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ca1994e73c6857b0a695fdde94cc5ac846c1b0d5d8766255a1dc2db40857f667", size = 2028580 },
|
||||
{ url = "https://files.pythonhosted.org/packages/21/ab/9b2b5ad2ceaa1660de16e0a2e3c54a2043a9c4a3eef7718930c78dc84e77/pylibsrtp-0.10.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb7640b524544603d07bd4373b04c9582c8cfe41d9789d3f492081f053bed9c1", size = 2484470 },
|
||||
{ url = "https://files.pythonhosted.org/packages/ab/e6/b0a30e79aa2312834b33f5e9c0ad459fc94e195c610634ee9665fafb1fc8/pylibsrtp-0.10.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f13aa945e1dcf8c138bf3d4a6e34056c4c2f69bf9934bc53b320ef14c7317ccc", size = 2078367 },
|
||||
{ url = "https://files.pythonhosted.org/packages/16/78/9ea0c88490ad4fe9683ddf3bbee702c7a2331e83a333bb3aa52e8d7d909b/pylibsrtp-0.10.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b2ef1c32d1145239dd0fe7b7fbe083334d345df6b4597fc66faf914a32682d9", size = 2134898 },
|
||||
{ url = "https://files.pythonhosted.org/packages/00/f6/c76fa5401f9d95c14db70de0cf4fad922ad61686843bc3e7411178a64bc8/pylibsrtp-0.10.0-cp38-abi3-win32.whl", hash = "sha256:8c6fe2576b2ab13942b47db6c2ffe71f5eb1edc1dc3bdd7283169fecd5249e74", size = 1130881 },
|
||||
{ url = "https://files.pythonhosted.org/packages/4c/31/85a58625edc0b6967fe0904c9d89d019bcece3f3e3bf775b9151a8cf9d0d/pylibsrtp-0.10.0-cp38-abi3-win_amd64.whl", hash = "sha256:cd965d4b0e9a77b362526cab119f4d9ce39b83f1f20f46c6af8e694b86fa19a7", size = 1448840 },
|
||||
{ url = "https://files.pythonhosted.org/packages/a5/65/858dc1f7f4c65b9e9c8e769019cb156e6b8b96fd7f2f8f1f6bfef8717d95/pyjoystick-1.2.4-py3-none-any.whl", hash = "sha256:773989a5d796d7f32261d25338d583233ddae9a091c0c13c3fc09d250b0870a9", size = 1185266 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -4058,18 +3950,6 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/68/1a/06e6f8de19505c3807db47962308390e2d15e5729342c8382750a538762c/pyobjc_framework_WebKit-10.3.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:efce711d3cbe5ef34620002ae2189b802420e6e2923973ed4c59989443b5499f", size = 44847 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyopenssl"
|
||||
version = "24.3.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "cryptography" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/c1/d4/1067b82c4fc674d6f6e9e8d26b3dff978da46d351ca3bac171544693e085/pyopenssl-24.3.0.tar.gz", hash = "sha256:49f7a019577d834746bc55c5fce6ecbcec0f2b4ec5ce1cf43a9a173b8138bb36", size = 178944 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/42/22/40f9162e943f86f0fc927ebc648078be87def360d9d8db346619fb97df2b/pyOpenSSL-24.3.0-py3-none-any.whl", hash = "sha256:e474f5a473cd7f92221cc04976e48f4d11502804657a08a989fb3be5514c904a", size = 56111 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyparsing"
|
||||
version = "3.2.0"
|
||||
@ -4161,6 +4041,15 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/92/af/17a92b67db31a086bd693bf97d98aa2f45427e7982df53f59cdc26899979/PyQt6_sip-13.9.1-cp312-cp312-win_arm64.whl", hash = "sha256:976c7758f668806d4df7a8853f390ac123d5d1f73591ed368bdb8963574ff589", size = 45335 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pysdl2"
|
||||
version = "0.9.17"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d7/ff/8704d84ad4d25f0a7bf7912504f64575e432e8d57dfba2fe35f5b2db7e04/pysdl2-0.9.17.tar.gz", hash = "sha256:48c6ef01a4eb123db5f7e46e1a1b565675755b07e615f3fe20a623c94735b52b", size = 775955 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/5d/e2/399ea7900e7510096aeb41439e6f1540bef0bdf7e15cc2d8464e4adb71e8/PySDL2-0.9.17-py3-none-any.whl", hash = "sha256:fe923dbf5c7b27bbc1eb2bf58abfa793f8f13fd7ae8b27b1bc2de49920bcbd41", size = 583137 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "python-dateutil"
|
||||
version = "2.9.0.post0"
|
||||
@ -4207,6 +4096,19 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f0/26/3aba8af51a7522ef54b8e0adaa34a8ccf7615e6745aa5ac49dd0e855abbc/python_miio-0.5.12-py3-none-any.whl", hash = "sha256:206ac0d8505aa3c673e101543d0a0e8f0ebe8f19a50ff66edd302c8770813f73", size = 330966 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "python-rtmidi"
|
||||
version = "1.5.8"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/dd/ee/0f91965dcc471714c69df21e5ca3d94dc81411b7dee2d31ff1184bea07c9/python_rtmidi-1.5.8.tar.gz", hash = "sha256:7f9ade68b068ae09000ecb562ae9521da3a234361ad5449e83fc734544d004fa", size = 368130 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/51/27/887b0378e0a907489a07bdeb808fa5ed349675245c6ee14d9f6d00304f96/python_rtmidi-1.5.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5443634597eb340cdec0734f76267a827c2d366f00a6f9195141c78828016ac2", size = 158861 },
|
||||
{ url = "https://files.pythonhosted.org/packages/4d/ec/57cecde253daab896ce53778520cd41eb062641862ebdb0ee6f97511b1d9/python_rtmidi-1.5.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:29d9c9d9f82ce679fecad7bb4cb79f3a24574ea84600e377194b4cc1baacec0e", size = 153416 },
|
||||
{ url = "https://files.pythonhosted.org/packages/6f/5b/dc19c53d9d512b74dc2cca3725591cc612b9465645695a0696352a8c8b54/python_rtmidi-1.5.8-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:25f5a5db7be98911c41ca5bebb262fcf9a7c89600b88fd3c207ceafd3101e721", size = 305696 },
|
||||
{ url = "https://files.pythonhosted.org/packages/f6/92/5a60f56dfb2740e644e932233928947423cd2101895319b331f84527eb31/python_rtmidi-1.5.8-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:cec30924e305f55284594ccf35a71dee7216fd308dfa2dec1b3ed03e6f243803", size = 315579 },
|
||||
{ url = "https://files.pythonhosted.org/packages/93/46/6af077d262f521ea2bf1ab60b8aad72f34fe6dd55af739176605369d449c/python_rtmidi-1.5.8-cp312-cp312-win_amd64.whl", hash = "sha256:052c89933cae4fca354012d8ca7248f4f9e1e3f062471409d48415a7f7d7e59e", size = 129755 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pytz"
|
||||
version = "2025.1"
|
||||
@ -4303,6 +4205,15 @@ wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "resource-man"
|
||||
version = "2.2.8"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/1f/ee/8e4c4ae1742c2bf479657dfefb6a481fca23de4ec0b801b291f70317255b/resource_man-2.2.8.tar.gz", hash = "sha256:bf747dd671b7254fd76b7c72aa920942cf9d417eda1ed3ec7baedc075e48e33b", size = 43952 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/f9/78/695d73ac84ac380694a1b8dc5dced7ee0275b27c40676f6b32c052583849/resource_man-2.2.8-py3-none-any.whl", hash = "sha256:93920d33f24eb5158290b183766baef64f334d6d4eacf6a520ac3aef6bfcc23b", size = 44832 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rfc3339-validator"
|
||||
version = "0.1.4"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user