test real
This commit is contained in:
parent
6308cc5dc2
commit
7d10eba483
145
config/device/max-256-100,U=100,M=PWI,S=(256 5002).txt
Normal file
145
config/device/max-256-100,U=100,M=PWI,S=(256 5002).txt
Normal file
@ -0,0 +1,145 @@
|
||||
[Root]
|
||||
VersionDriverOEMPA=1.3.0.1
|
||||
CycleCount=1
|
||||
EnableFMC=1
|
||||
FMCElementStart=0
|
||||
FMCElementStop=255
|
||||
FMCElementStep=1
|
||||
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
|
||||
Start=0.000000 us
|
||||
Range=100.000000 us
|
||||
TimeSlot=4169.900000 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.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_8=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_16=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_24=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_32=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_40=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_48=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_56=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_64=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_72=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_80=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_88=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_96=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_104=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_112=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_120=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_128=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_136=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_144=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_152=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_160=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_168=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_176=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_184=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_192=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_200=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_208=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_216=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_224=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_232=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_240=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 us
|
||||
Width_248=0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000;0.100000 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
|
||||
|
||||
@ -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
|
||||
1
config/imaging/baby.json
Normal file
1
config/imaging/baby.json
Normal file
@ -0,0 +1 @@
|
||||
{"t_end": 2068, "t_start": 1439, "v2": 1524, "dct_center": 1086, "dct_bandwidth": 915, "f_rows": 3944, "beta": 30}
|
||||
1
config/imaging/baby2.json
Normal file
1
config/imaging/baby2.json
Normal file
@ -0,0 +1 @@
|
||||
{"t_end": 5002, "t_start": 3239, "v2": 1524, "dct_center": 798, "dct_bandwidth": 857, "f_rows": 4939, "beta": 30}
|
||||
@ -18,6 +18,7 @@ from flandre.nodes.Robot import Robot
|
||||
from flandre.nodes.ImageFFMPEG import ImageFFMPEG
|
||||
from flandre.nodes.ImageQt import ImageQt
|
||||
from flandre.nodes.Midi import Midi
|
||||
from flandre.nodes.Mi import Mi
|
||||
from flandre.utils.Msg import KillMsg
|
||||
from flandre.config import CONFIG_FOLDER
|
||||
|
||||
@ -33,6 +34,7 @@ class LaunchComponent(Enum):
|
||||
ImageFFMPEG = ImageFFMPEG
|
||||
ImageQt = ImageQt
|
||||
Midi = Midi
|
||||
Mi = Mi
|
||||
|
||||
|
||||
def launch(arg: dict[LaunchComponent, dict]):
|
||||
|
||||
@ -2,6 +2,7 @@ import logging
|
||||
import time
|
||||
|
||||
import cupy as cp
|
||||
import cv2
|
||||
import zmq
|
||||
|
||||
from flandre.beamformer.das import gen_pwi
|
||||
@ -10,7 +11,7 @@ from flandre.config import C
|
||||
from flandre.nodes.Node import Node
|
||||
from flandre.utils.Config import DeviceConfig
|
||||
from flandre.utils.Msg import ImageArgMsg, Msg, RfFrameWithMetaMsg, BeamformerMsg, \
|
||||
SeqMetaMsg, RfMatMsg
|
||||
SeqMetaMsg, RfMatMsg, RGB888Msg
|
||||
from flandre.utils.RfFile import RfSequenceMeta
|
||||
from flandre.utils.RfMat import RfMat
|
||||
|
||||
@ -34,17 +35,22 @@ class Beamformer(Node):
|
||||
return
|
||||
d2 = (data
|
||||
# .dct(80, 1500)
|
||||
.dct_center(arg.dct_center, arg.dct_bandwidth)
|
||||
.call(lambda m: m.astype(cp.int16))
|
||||
.call(pwi)
|
||||
.call(cp.asarray, order='C')
|
||||
.argrelextrema()
|
||||
.conv_guass(b=arg.beta * 0.01)
|
||||
.crop_center(arg.t_start, arg.t_end)
|
||||
# .dct_center(arg.dct_center, arg.dct_bandwidth)
|
||||
# .call(lambda m: m.astype(cp.int16))
|
||||
# .call(pwi)
|
||||
# .call(cp.asarray, order='C')
|
||||
# .argrelextrema()
|
||||
# .conv_guass(b=arg.beta * 0.01)
|
||||
# .crop_center(arg.t_start, arg.t_end)
|
||||
.rotate90()
|
||||
.cpu()
|
||||
.grey()
|
||||
.call(cv2.cvtColor, cv2.COLOR_GRAY2RGB)
|
||||
# .pseudo_color()
|
||||
)
|
||||
# time.sleep(0.01)
|
||||
self.send(RfMatMsg(d2))
|
||||
# self.send(RGB888Msg(d2.__bytes__(), d2.w, d2.h))
|
||||
|
||||
def loop(self):
|
||||
time.sleep(1)
|
||||
@ -79,5 +85,8 @@ class Beamformer(Node):
|
||||
last_f_rows = arg_msg.f_rows
|
||||
dc = DeviceConfig(v2=arg_msg.v2, rows=arg_msg.f_rows)
|
||||
pwi, _ = gen_pwi(direct_dist(dc), dc)
|
||||
if seq_meta.mode == RfSequenceMeta.RfSequenceMode.PWI:
|
||||
self.process_pwi(mat, arg_msg, pwi)
|
||||
try:
|
||||
if seq_meta.mode == RfSequenceMeta.RfSequenceMode.PWI:
|
||||
self.process_pwi(mat, arg_msg, pwi)
|
||||
except Exception as e:
|
||||
logger.warning(e)
|
||||
|
||||
@ -6,13 +6,14 @@ import zmq
|
||||
|
||||
from flandre.config import C
|
||||
from flandre.nodes.Node import Node
|
||||
from flandre.utils.Msg import BMMsg, SetWindowVisibleMsg
|
||||
from flandre.utils.Msg import BMMsg, SetWindowVisibleMsg, RfMatMsg
|
||||
from flandre.utils.RfMat import RfMat
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ImageCV(Node):
|
||||
topics = [BMMsg, SetWindowVisibleMsg]
|
||||
topics = [BMMsg, SetWindowVisibleMsg, RfMatMsg]
|
||||
|
||||
def __init__(self, level=logging.INFO):
|
||||
super().__init__(level=level)
|
||||
@ -29,6 +30,10 @@ class ImageCV(Node):
|
||||
b = np.frombuffer(msg.data, dtype=np.uint8)
|
||||
b = np.reshape(b, (C.video_height, C.video_width, 4))
|
||||
self.buffer = b
|
||||
elif isinstance(msg, RfMatMsg):
|
||||
rfmat: RfMat = msg.rfmat
|
||||
b = rfmat.pseudo_color().m
|
||||
self.buffer = b
|
||||
elif isinstance(msg, SetWindowVisibleMsg):
|
||||
if msg.name == 'bscan' and msg.sender != 'cv':
|
||||
self.show = msg.value
|
||||
|
||||
@ -11,7 +11,7 @@ from flandre.config import C
|
||||
from flandre.nodes.Node import Node
|
||||
from flandre.pyqt.Image import Ui_MainWindow
|
||||
from flandre.pyqt.ZMQReceiver import ZMQReceiver
|
||||
from flandre.utils.Msg import KillMsg, Msg, BMMsg, RfMatMsg, KeyPressMsg
|
||||
from flandre.utils.Msg import KillMsg, Msg, BMMsg, RfMatMsg, KeyPressMsg, RGB888Msg
|
||||
from flandre.utils.RfMat import RfMat
|
||||
|
||||
|
||||
@ -61,25 +61,16 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
h = msg.rfmat.h
|
||||
d: RfMat = msg.rfmat
|
||||
d2 = (d
|
||||
.pseudo_color(cond=not self.grey)
|
||||
.grey(cond=self.grey)
|
||||
.resize((int(w * self.zoom), int(h * self.zoom)))
|
||||
.watermark(cond=self.watermark)
|
||||
)
|
||||
w = d2.w
|
||||
h = d2.h
|
||||
if self.grey:
|
||||
qImg = QImage(
|
||||
d2.__bytes__(),
|
||||
w, h, w,
|
||||
QImage.Format.Format_Grayscale8
|
||||
)
|
||||
else:
|
||||
qImg = QImage(
|
||||
d2.__bytes__(),
|
||||
w, h, 3 * w,
|
||||
QImage.Format.Format_BGR888
|
||||
)
|
||||
qImg = QImage(
|
||||
d2.__bytes__(),
|
||||
w, h, 3 * w,
|
||||
QImage.Format.Format_BGR888
|
||||
)
|
||||
self.g.setPixmap(QPixmap(qImg))
|
||||
self.s.setSceneRect(0.0, 0.0, w, h)
|
||||
if self.scale:
|
||||
@ -88,6 +79,38 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
if self.need_fit:
|
||||
self.graphicsView.fitInView(self.s.sceneRect(), Qt.AspectRatioMode.KeepAspectRatio)
|
||||
self.need_fit = False
|
||||
# elif isinstance(msg, RGB888Msg):
|
||||
# w = msg.w
|
||||
# h = msg.h
|
||||
# d: RfMat = msg.rfmat
|
||||
# d2 = (d
|
||||
# .resize((int(w * self.zoom), int(h * self.zoom)))
|
||||
# .watermark(cond=self.watermark)
|
||||
# )
|
||||
# w = d2.w
|
||||
# h = d2.h
|
||||
# if self.grey:
|
||||
# qImg = QImage(
|
||||
# d2.__bytes__(),
|
||||
# w, h, w,
|
||||
# QImage.Format.Format_Grayscale8
|
||||
# )
|
||||
# else:
|
||||
# qImg = QImage(
|
||||
# d2.__bytes__(),
|
||||
# w, h, 3 * w,
|
||||
# QImage.Format.Format_BGR888
|
||||
# )
|
||||
# self.g.setPixmap(QPixmap(qImg))
|
||||
# self.s.setSceneRect(0.0, 0.0, w, h)
|
||||
# if self.scale:
|
||||
# self.graphicsView.fitInView(self.s.sceneRect())
|
||||
# else:
|
||||
# if self.need_fit:
|
||||
# self.graphicsView.fitInView(self.s.sceneRect(), Qt.AspectRatioMode.KeepAspectRatio)
|
||||
# self.need_fit = False
|
||||
#
|
||||
# RGB888Msg
|
||||
|
||||
|
||||
class ImageQt(Node):
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import logging
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import zmq
|
||||
|
||||
@ -89,7 +89,8 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.s_sid.valueChanged.connect(self.on_s_sid)
|
||||
self.sp_sid.valueChanged.connect(self.on_sp_sid)
|
||||
self.arg = ImageArgMsg('ui', t_start=0, t_end=1499)
|
||||
self.seq_meta: RfSequenceMeta | None = None
|
||||
self.playback_seq_meta: RfSequenceMeta | None = None
|
||||
self.live_seq_meta: RfSequenceMeta | None = None
|
||||
# self.b_play_live.clicked.connect(self.on_play_live)
|
||||
# self.b_play_playback.clicked.connect(self.on_play_playback)
|
||||
|
||||
@ -97,10 +98,6 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.record = False
|
||||
self.device_connected = False
|
||||
self.device_enabled = False
|
||||
# self.b_device_enabled.clicked.connect(lambda: self.p.send(SetDeviceEnabledMsg(not self.device_enabled)))
|
||||
# self.b_device_connected.clicked.connect(lambda: self.p.send(SetDeviceConnectedMsg(not self.device_connected)))
|
||||
# self.c_live_seq_name.currentIndexChanged.connect(self.on_seq_meta)
|
||||
self.b_live_seq_apply.clicked.connect(self.on_seq_meta)
|
||||
self.l_base.textChanged.connect(lambda e:
|
||||
self.l_base.setStyleSheet("")
|
||||
if Path(e).exists() else
|
||||
@ -201,6 +198,10 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
base = QFileDialog.getExistingDirectory(self, 'Select Base Folder', DS.__str__())
|
||||
self.l_base.setText(Path(base).__str__())
|
||||
|
||||
@pyqtSlot()
|
||||
def on_b_test1_clicked(self):
|
||||
logger.info(f'test1 {self.arg}')
|
||||
|
||||
@pyqtSlot()
|
||||
def on_b_base_clicked(self):
|
||||
if Path(self.l_base.text()):
|
||||
@ -242,6 +243,8 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
if b:
|
||||
self.g_playback.setChecked(False)
|
||||
self.p.send(SetPlayMode('live'))
|
||||
if self.live_seq_meta is not None:
|
||||
self.update_max(max(self.live_seq_meta.shape))
|
||||
logger.info(f'set playmode live')
|
||||
|
||||
@pyqtSlot(bool)
|
||||
@ -249,6 +252,8 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
if b:
|
||||
self.g_live.setChecked(False)
|
||||
self.p.send(SetPlayMode('playback'))
|
||||
if self.playback_seq_meta is not None:
|
||||
self.update_max(max(self.playback_seq_meta.shape))
|
||||
logger.info(f'set playmode playback')
|
||||
|
||||
def on_device_disable(self):
|
||||
@ -336,6 +341,19 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
else:
|
||||
QMessageBox.warning(None, 'hint', 'Commit is empty!!')
|
||||
|
||||
def update_max(self, m):
|
||||
self.s_t_start.setMaximum(m)
|
||||
self.s_t_end.setMaximum(m)
|
||||
self.s_dct_center.setMaximum(m)
|
||||
self.s_dct_bandwidth.setMaximum(m)
|
||||
self.s_f_rows.setMaximum(m)
|
||||
|
||||
self.sp_crop_center.setMaximum(m)
|
||||
self.sp_crop_width.setMaximum(m)
|
||||
self.sp_dct_center.setMaximum(m)
|
||||
self.sp_dct_bandwidth.setMaximum(m)
|
||||
self.sp_f_rows.setMaximum(m)
|
||||
|
||||
def on_zmq_event(self, msg: QByteArray):
|
||||
try:
|
||||
msg = Msg.decode_msg(msg.data())
|
||||
@ -357,6 +375,7 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.sp_crop_center.setValue(msg.t_start)
|
||||
self.sp_crop_width.setValue(msg.t_end)
|
||||
self.sp_f_rows.setValue(msg.f_rows)
|
||||
|
||||
self.sp_v2.setValue(msg.v2)
|
||||
self.sp_dct_center.setValue(msg.dct_center)
|
||||
self.sp_dct_bandwidth.setValue(msg.dct_bandwidth)
|
||||
@ -387,21 +406,15 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
if msg.value.__len__() > 0:
|
||||
self.p.send(SetSeqMetaMsg('playback', self.c_playback_seq_name.currentText()))
|
||||
elif isinstance(msg, SetSeqMetaMsg):
|
||||
self.seq_meta = RfSequenceMeta.from_name(msg.name)
|
||||
mmax_shape0 = max(self.seq_meta.shape)
|
||||
|
||||
self.s_t_start.setMaximum(mmax_shape0)
|
||||
self.s_t_end.setMaximum(mmax_shape0)
|
||||
self.s_dct_center.setMaximum(mmax_shape0)
|
||||
self.s_dct_bandwidth.setMaximum(mmax_shape0)
|
||||
self.s_f_rows.setMaximum(mmax_shape0)
|
||||
|
||||
self.sp_crop_center.setMaximum(mmax_shape0)
|
||||
self.sp_crop_width.setMaximum(mmax_shape0)
|
||||
self.sp_dct_center.setMaximum(mmax_shape0)
|
||||
self.sp_dct_bandwidth.setMaximum(mmax_shape0)
|
||||
self.sp_f_rows.setMaximum(mmax_shape0)
|
||||
|
||||
if msg.target == 'playback':
|
||||
self.playback_seq_meta = RfSequenceMeta.from_name(msg.name)
|
||||
self.update_max(max(self.playback_seq_meta.shape))
|
||||
elif isinstance(msg, SeqMetaMsg):
|
||||
if msg.target == 'live':
|
||||
self.l_live_seq_name.setText(msg.name)
|
||||
self.b_live_seq_apply.setEnabled(True)
|
||||
self.live_seq_meta = RfSequenceMeta.from_name(msg.name)
|
||||
self.update_max(max(self.live_seq_meta.shape))
|
||||
elif isinstance(msg, DeviceConnectedMsg):
|
||||
if msg.value:
|
||||
self.set_device_connection(LinkStatus.GREEN)
|
||||
@ -414,19 +427,7 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
else:
|
||||
self.set_device_enable(LinkStatus.RED)
|
||||
self.update_device_buttons()
|
||||
elif isinstance(msg, SeqMetaMsg):
|
||||
if msg.target == 'live':
|
||||
self.l_live_seq_name.setText(msg.name)
|
||||
self.b_live_seq_apply.setEnabled(True)
|
||||
# elif isinstance(msg, DeviceOnlineMsg):
|
||||
# if msg.value:
|
||||
# # self.l_online.setStyleSheet("")
|
||||
# # self.l_online.setText("Device Online")
|
||||
# self.g_device.setEnabled(True)
|
||||
# else:
|
||||
# # self.l_online.setStyleSheet("background-color: pink;")
|
||||
# # self.l_online.setText("Device Offline")
|
||||
# self.g_device.setEnabled(False)
|
||||
|
||||
elif isinstance(msg, DeviceConfigListMsg):
|
||||
for name, txt in msg.arr:
|
||||
self.c_live_seq_name.addItem(name, txt)
|
||||
@ -553,7 +554,8 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
self.p.send(SetSidMsg(v))
|
||||
|
||||
# @pyqtSlot(int)
|
||||
def on_seq_meta(self):
|
||||
@pyqtSlot()
|
||||
def on_b_live_seq_apply_clicked(self):
|
||||
v = self.c_live_seq_name.currentIndex()
|
||||
name = self.c_live_seq_name.currentText()
|
||||
if name != 'Empty':
|
||||
|
||||
@ -74,6 +74,10 @@ class Mi(Node):
|
||||
self.ping60enable = False
|
||||
time.sleep(10)
|
||||
|
||||
def start(self):
|
||||
self.device_py_req_socket.send(b'start')
|
||||
self.device_py_req_socket.recv()
|
||||
|
||||
def loop(self):
|
||||
if c1_connected() and check_socket(C.device_py_rep_socket):
|
||||
self.device_py_req_socket.send(b'get_device_status')
|
||||
|
||||
@ -12,7 +12,7 @@ from PyQt6 import QtCore, QtGui, QtWidgets
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(1238, 1017)
|
||||
MainWindow.resize(1238, 1044)
|
||||
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
||||
@ -367,6 +367,9 @@ class Ui_MainWindow(object):
|
||||
self.checkBox = QtWidgets.QCheckBox(parent=self.centralwidget)
|
||||
self.checkBox.setObjectName("checkBox")
|
||||
self.horizontalLayout_6.addWidget(self.checkBox)
|
||||
self.b_test1 = QtWidgets.QPushButton(parent=self.centralwidget)
|
||||
self.b_test1.setObjectName("b_test1")
|
||||
self.horizontalLayout_6.addWidget(self.b_test1)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
|
||||
self.horizontalLayout_6.addItem(spacerItem1)
|
||||
self.gridLayout.addLayout(self.horizontalLayout_6, 5, 0, 1, 2)
|
||||
@ -486,6 +489,7 @@ class Ui_MainWindow(object):
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.gridLayout_5.addWidget(self.label_7, 6, 0, 1, 1)
|
||||
self.sp_crop_width = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
self.sp_crop_width.setMaximum(9999)
|
||||
self.sp_crop_width.setObjectName("sp_crop_width")
|
||||
self.gridLayout_5.addWidget(self.sp_crop_width, 4, 2, 1, 1)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
|
||||
@ -497,6 +501,7 @@ class Ui_MainWindow(object):
|
||||
self.s_t_end.setObjectName("s_t_end")
|
||||
self.gridLayout_5.addWidget(self.s_t_end, 4, 1, 1, 1)
|
||||
self.sp_dct_bandwidth = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
self.sp_dct_bandwidth.setMaximum(9999)
|
||||
self.sp_dct_bandwidth.setObjectName("sp_dct_bandwidth")
|
||||
self.gridLayout_5.addWidget(self.sp_dct_bandwidth, 7, 2, 1, 1)
|
||||
self.label_5 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
@ -524,9 +529,11 @@ class Ui_MainWindow(object):
|
||||
self.sp_v2.setObjectName("sp_v2")
|
||||
self.gridLayout_5.addWidget(self.sp_v2, 5, 2, 1, 1)
|
||||
self.sp_dct_center = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
self.sp_dct_center.setMaximum(9999)
|
||||
self.sp_dct_center.setObjectName("sp_dct_center")
|
||||
self.gridLayout_5.addWidget(self.sp_dct_center, 6, 2, 1, 1)
|
||||
self.sp_f_rows = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
self.sp_f_rows.setMaximum(7000)
|
||||
self.sp_f_rows.setObjectName("sp_f_rows")
|
||||
self.gridLayout_5.addWidget(self.sp_f_rows, 8, 2, 1, 1)
|
||||
self.s_f_rows = QtWidgets.QSlider(parent=self.centralwidget)
|
||||
@ -559,6 +566,7 @@ class Ui_MainWindow(object):
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 3)
|
||||
self.sp_crop_center = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
self.sp_crop_center.setMaximum(9999)
|
||||
self.sp_crop_center.setObjectName("sp_crop_center")
|
||||
self.gridLayout_5.addWidget(self.sp_crop_center, 3, 2, 1, 1)
|
||||
self.s_beta = QtWidgets.QSlider(parent=self.centralwidget)
|
||||
@ -572,6 +580,7 @@ class Ui_MainWindow(object):
|
||||
self.label_35.setObjectName("label_35")
|
||||
self.gridLayout_5.addWidget(self.label_35, 9, 0, 1, 1)
|
||||
self.sp_beta = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||
self.sp_beta.setMaximum(9999)
|
||||
self.sp_beta.setObjectName("sp_beta")
|
||||
self.gridLayout_5.addWidget(self.sp_beta, 9, 2, 1, 1)
|
||||
self.gridLayout.addLayout(self.gridLayout_5, 3, 0, 1, 1)
|
||||
@ -643,6 +652,7 @@ class Ui_MainWindow(object):
|
||||
self.l_probe_angle.setText(_translate("MainWindow", "TextLabel"))
|
||||
self.cb_bscan.setText(_translate("MainWindow", "BSCAN"))
|
||||
self.checkBox.setText(_translate("MainWindow", "FOCUS"))
|
||||
self.b_test1.setText(_translate("MainWindow", "test1"))
|
||||
self.label_23.setText(_translate("MainWindow", "Force"))
|
||||
self.label_22.setText(_translate("MainWindow", "Position"))
|
||||
self.label_19.setText(_translate("MainWindow", "6DOF Cobot"))
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1238</width>
|
||||
<height>1017</height>
|
||||
<height>1044</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -681,6 +681,13 @@ border-radius: 7px;
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="b_test1">
|
||||
<property name="text">
|
||||
<string>test1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
@ -910,7 +917,11 @@ border-radius: 7px;
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2">
|
||||
<widget class="QSpinBox" name="sp_crop_width"/>
|
||||
<widget class="QSpinBox" name="sp_crop_width">
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<spacer name="verticalSpacer_2">
|
||||
@ -939,7 +950,11 @@ border-radius: 7px;
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="2">
|
||||
<widget class="QSpinBox" name="sp_dct_bandwidth"/>
|
||||
<widget class="QSpinBox" name="sp_dct_bandwidth">
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
@ -987,10 +1002,18 @@ border-radius: 7px;
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2">
|
||||
<widget class="QSpinBox" name="sp_dct_center"/>
|
||||
<widget class="QSpinBox" name="sp_dct_center">
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="2">
|
||||
<widget class="QSpinBox" name="sp_f_rows"/>
|
||||
<widget class="QSpinBox" name="sp_f_rows">
|
||||
<property name="maximum">
|
||||
<number>7000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QSlider" name="s_f_rows">
|
||||
@ -1052,7 +1075,11 @@ border-radius: 7px;
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2">
|
||||
<widget class="QSpinBox" name="sp_crop_center"/>
|
||||
<widget class="QSpinBox" name="sp_crop_center">
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<widget class="QSlider" name="s_beta">
|
||||
@ -1078,7 +1105,11 @@ border-radius: 7px;
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="2">
|
||||
<widget class="QSpinBox" name="sp_beta"/>
|
||||
<widget class="QSpinBox" name="sp_beta">
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
|
||||
@ -53,6 +53,7 @@ class BG(Enum):
|
||||
HeaderByteMsg = auto()
|
||||
RfMatMsg = auto()
|
||||
KeyPressMsg = auto()
|
||||
RGB888Msg = auto()
|
||||
|
||||
|
||||
class Msg:
|
||||
@ -319,6 +320,19 @@ class RfFrameMsg(Msg):
|
||||
)
|
||||
|
||||
|
||||
class RGB888Msg(HeaderByteMsg):
|
||||
|
||||
def __init__(self, b: bytes, w: int, h: int):
|
||||
self.w = w
|
||||
self.h = h
|
||||
super().__init__(dict(h=h, w=w), b)
|
||||
|
||||
@classmethod
|
||||
def decode(cls, data) -> 'RGB888Msg':
|
||||
msg = super(RGB888Msg, cls).decode(data)
|
||||
return RGB888Msg(msg.data, msg.header['w'], msg.header['h'])
|
||||
|
||||
|
||||
class RfMatMsg(HeaderByteMsg):
|
||||
|
||||
def __init__(self, rfmat: 'RfMat'):
|
||||
|
||||
@ -237,11 +237,12 @@ class RfMat:
|
||||
color2 = (128, 128, 128)
|
||||
else:
|
||||
raise NotImplementedError()
|
||||
cv2.putText(canvas, line1, (0, 60), cv2.FONT_HERSHEY_PLAIN, 4, color1, 8)
|
||||
cv2.putText(canvas, line1, (0, 60), cv2.FONT_HERSHEY_PLAIN, 4, color2, 4)
|
||||
fontsize = 2
|
||||
cv2.putText(canvas, line1, (0, 60), cv2.FONT_HERSHEY_PLAIN, fontsize, color1, 8)
|
||||
cv2.putText(canvas, line1, (0, 60), cv2.FONT_HERSHEY_PLAIN, fontsize, color2, 4)
|
||||
|
||||
cv2.putText(canvas, line2, (0, 120), cv2.FONT_HERSHEY_PLAIN, 4, color1, 8)
|
||||
cv2.putText(canvas, line2, (0, 120), cv2.FONT_HERSHEY_PLAIN, 4, color2, 4)
|
||||
cv2.putText(canvas, line2, (0, 120), cv2.FONT_HERSHEY_PLAIN, fontsize, color1, 8)
|
||||
cv2.putText(canvas, line2, (0, 120), cv2.FONT_HERSHEY_PLAIN, fontsize, color2, 4)
|
||||
|
||||
if canvas.shape.__len__() == 2:
|
||||
ccp.m[canvas == 255] = 255
|
||||
|
||||
3
software.json
Normal file
3
software.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"base_dir": "/home/lambda/source/scarlet/flandre/@DS"
|
||||
}
|
||||
25
test/testdevicegui.py
Normal file
25
test/testdevicegui.py
Normal file
@ -0,0 +1,25 @@
|
||||
import struct
|
||||
import time
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
import zmq
|
||||
|
||||
from flandre.config import C
|
||||
from flandre.nodes.Device import Device, DeviceCmd
|
||||
from flandre.nodes.Mi import Mi
|
||||
|
||||
if __name__ == '__main__':
|
||||
context = zmq.Context()
|
||||
req_driver_socket = context.socket(zmq.REQ)
|
||||
req_driver_socket.connect(C.live_rep_socket)
|
||||
magic = 7355608
|
||||
cmd = DeviceCmd.GetData
|
||||
cv2.namedWindow("test", cv2.WINDOW_AUTOSIZE)
|
||||
while True:
|
||||
req_driver_socket.send(struct.pack('i', magic) + struct.pack('i', cmd.value))
|
||||
b = req_driver_socket.recv()
|
||||
arr = np.frombuffer(b, dtype=np.int16, offset=4 + 8 + 4).reshape((256, 5002))
|
||||
cv2.imshow('test', arr)
|
||||
cv2.waitKey(0)
|
||||
# print(b.__len__())
|
||||
Loading…
Reference in New Issue
Block a user