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
|
AscanBitSize=14Bits
|
||||||
Enable256=0
|
Enable256=0
|
||||||
|
|
||||||
|
SWEncoder1Resolution=1
|
||||||
|
TriggerMode=Internal
|
||||||
|
Encoder1A=DigitalInput01
|
||||||
|
Encoder1B=DigitalInput02
|
||||||
|
Encoder1Type=Quadrature4Edges
|
||||||
|
RequestIO=OnCycleOnly
|
||||||
|
|
||||||
[Cycle:0]
|
[Cycle:0]
|
||||||
GainDigital=0.000000 dB
|
GainDigital=0.000000 dB
|
||||||
BeamCorrection=0.0 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.ImageFFMPEG import ImageFFMPEG
|
||||||
from flandre.nodes.ImageQt import ImageQt
|
from flandre.nodes.ImageQt import ImageQt
|
||||||
from flandre.nodes.Midi import Midi
|
from flandre.nodes.Midi import Midi
|
||||||
|
from flandre.nodes.Mi import Mi
|
||||||
from flandre.utils.Msg import KillMsg
|
from flandre.utils.Msg import KillMsg
|
||||||
from flandre.config import CONFIG_FOLDER
|
from flandre.config import CONFIG_FOLDER
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ class LaunchComponent(Enum):
|
|||||||
ImageFFMPEG = ImageFFMPEG
|
ImageFFMPEG = ImageFFMPEG
|
||||||
ImageQt = ImageQt
|
ImageQt = ImageQt
|
||||||
Midi = Midi
|
Midi = Midi
|
||||||
|
Mi = Mi
|
||||||
|
|
||||||
|
|
||||||
def launch(arg: dict[LaunchComponent, dict]):
|
def launch(arg: dict[LaunchComponent, dict]):
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import logging
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
import cupy as cp
|
import cupy as cp
|
||||||
|
import cv2
|
||||||
import zmq
|
import zmq
|
||||||
|
|
||||||
from flandre.beamformer.das import gen_pwi
|
from flandre.beamformer.das import gen_pwi
|
||||||
@ -10,7 +11,7 @@ from flandre.config import C
|
|||||||
from flandre.nodes.Node import Node
|
from flandre.nodes.Node import Node
|
||||||
from flandre.utils.Config import DeviceConfig
|
from flandre.utils.Config import DeviceConfig
|
||||||
from flandre.utils.Msg import ImageArgMsg, Msg, RfFrameWithMetaMsg, BeamformerMsg, \
|
from flandre.utils.Msg import ImageArgMsg, Msg, RfFrameWithMetaMsg, BeamformerMsg, \
|
||||||
SeqMetaMsg, RfMatMsg
|
SeqMetaMsg, RfMatMsg, RGB888Msg
|
||||||
from flandre.utils.RfFile import RfSequenceMeta
|
from flandre.utils.RfFile import RfSequenceMeta
|
||||||
from flandre.utils.RfMat import RfMat
|
from flandre.utils.RfMat import RfMat
|
||||||
|
|
||||||
@ -34,17 +35,22 @@ class Beamformer(Node):
|
|||||||
return
|
return
|
||||||
d2 = (data
|
d2 = (data
|
||||||
# .dct(80, 1500)
|
# .dct(80, 1500)
|
||||||
.dct_center(arg.dct_center, arg.dct_bandwidth)
|
# .dct_center(arg.dct_center, arg.dct_bandwidth)
|
||||||
.call(lambda m: m.astype(cp.int16))
|
# .call(lambda m: m.astype(cp.int16))
|
||||||
.call(pwi)
|
# .call(pwi)
|
||||||
.call(cp.asarray, order='C')
|
# .call(cp.asarray, order='C')
|
||||||
.argrelextrema()
|
# .argrelextrema()
|
||||||
.conv_guass(b=arg.beta * 0.01)
|
# .conv_guass(b=arg.beta * 0.01)
|
||||||
.crop_center(arg.t_start, arg.t_end)
|
# .crop_center(arg.t_start, arg.t_end)
|
||||||
.rotate90()
|
.rotate90()
|
||||||
.cpu()
|
.cpu()
|
||||||
|
.grey()
|
||||||
|
.call(cv2.cvtColor, cv2.COLOR_GRAY2RGB)
|
||||||
|
# .pseudo_color()
|
||||||
)
|
)
|
||||||
|
# time.sleep(0.01)
|
||||||
self.send(RfMatMsg(d2))
|
self.send(RfMatMsg(d2))
|
||||||
|
# self.send(RGB888Msg(d2.__bytes__(), d2.w, d2.h))
|
||||||
|
|
||||||
def loop(self):
|
def loop(self):
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
@ -79,5 +85,8 @@ class Beamformer(Node):
|
|||||||
last_f_rows = arg_msg.f_rows
|
last_f_rows = arg_msg.f_rows
|
||||||
dc = DeviceConfig(v2=arg_msg.v2, rows=arg_msg.f_rows)
|
dc = DeviceConfig(v2=arg_msg.v2, rows=arg_msg.f_rows)
|
||||||
pwi, _ = gen_pwi(direct_dist(dc), dc)
|
pwi, _ = gen_pwi(direct_dist(dc), dc)
|
||||||
|
try:
|
||||||
if seq_meta.mode == RfSequenceMeta.RfSequenceMode.PWI:
|
if seq_meta.mode == RfSequenceMeta.RfSequenceMode.PWI:
|
||||||
self.process_pwi(mat, arg_msg, 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.config import C
|
||||||
from flandre.nodes.Node import Node
|
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__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ImageCV(Node):
|
class ImageCV(Node):
|
||||||
topics = [BMMsg, SetWindowVisibleMsg]
|
topics = [BMMsg, SetWindowVisibleMsg, RfMatMsg]
|
||||||
|
|
||||||
def __init__(self, level=logging.INFO):
|
def __init__(self, level=logging.INFO):
|
||||||
super().__init__(level=level)
|
super().__init__(level=level)
|
||||||
@ -29,6 +30,10 @@ class ImageCV(Node):
|
|||||||
b = np.frombuffer(msg.data, dtype=np.uint8)
|
b = np.frombuffer(msg.data, dtype=np.uint8)
|
||||||
b = np.reshape(b, (C.video_height, C.video_width, 4))
|
b = np.reshape(b, (C.video_height, C.video_width, 4))
|
||||||
self.buffer = b
|
self.buffer = b
|
||||||
|
elif isinstance(msg, RfMatMsg):
|
||||||
|
rfmat: RfMat = msg.rfmat
|
||||||
|
b = rfmat.pseudo_color().m
|
||||||
|
self.buffer = b
|
||||||
elif isinstance(msg, SetWindowVisibleMsg):
|
elif isinstance(msg, SetWindowVisibleMsg):
|
||||||
if msg.name == 'bscan' and msg.sender != 'cv':
|
if msg.name == 'bscan' and msg.sender != 'cv':
|
||||||
self.show = msg.value
|
self.show = msg.value
|
||||||
|
|||||||
@ -11,7 +11,7 @@ from flandre.config import C
|
|||||||
from flandre.nodes.Node import Node
|
from flandre.nodes.Node import Node
|
||||||
from flandre.pyqt.Image import Ui_MainWindow
|
from flandre.pyqt.Image import Ui_MainWindow
|
||||||
from flandre.pyqt.ZMQReceiver import ZMQReceiver
|
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
|
from flandre.utils.RfMat import RfMat
|
||||||
|
|
||||||
|
|
||||||
@ -61,20 +61,11 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
h = msg.rfmat.h
|
h = msg.rfmat.h
|
||||||
d: RfMat = msg.rfmat
|
d: RfMat = msg.rfmat
|
||||||
d2 = (d
|
d2 = (d
|
||||||
.pseudo_color(cond=not self.grey)
|
|
||||||
.grey(cond=self.grey)
|
|
||||||
.resize((int(w * self.zoom), int(h * self.zoom)))
|
.resize((int(w * self.zoom), int(h * self.zoom)))
|
||||||
.watermark(cond=self.watermark)
|
.watermark(cond=self.watermark)
|
||||||
)
|
)
|
||||||
w = d2.w
|
w = d2.w
|
||||||
h = d2.h
|
h = d2.h
|
||||||
if self.grey:
|
|
||||||
qImg = QImage(
|
|
||||||
d2.__bytes__(),
|
|
||||||
w, h, w,
|
|
||||||
QImage.Format.Format_Grayscale8
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
qImg = QImage(
|
qImg = QImage(
|
||||||
d2.__bytes__(),
|
d2.__bytes__(),
|
||||||
w, h, 3 * w,
|
w, h, 3 * w,
|
||||||
@ -88,6 +79,38 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
if self.need_fit:
|
if self.need_fit:
|
||||||
self.graphicsView.fitInView(self.s.sceneRect(), Qt.AspectRatioMode.KeepAspectRatio)
|
self.graphicsView.fitInView(self.s.sceneRect(), Qt.AspectRatioMode.KeepAspectRatio)
|
||||||
self.need_fit = False
|
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):
|
class ImageQt(Node):
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
import time
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import zmq
|
import zmq
|
||||||
|
|||||||
@ -89,7 +89,8 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
self.s_sid.valueChanged.connect(self.on_s_sid)
|
self.s_sid.valueChanged.connect(self.on_s_sid)
|
||||||
self.sp_sid.valueChanged.connect(self.on_sp_sid)
|
self.sp_sid.valueChanged.connect(self.on_sp_sid)
|
||||||
self.arg = ImageArgMsg('ui', t_start=0, t_end=1499)
|
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_live.clicked.connect(self.on_play_live)
|
||||||
# self.b_play_playback.clicked.connect(self.on_play_playback)
|
# self.b_play_playback.clicked.connect(self.on_play_playback)
|
||||||
|
|
||||||
@ -97,10 +98,6 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
self.record = False
|
self.record = False
|
||||||
self.device_connected = False
|
self.device_connected = False
|
||||||
self.device_enabled = 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.textChanged.connect(lambda e:
|
||||||
self.l_base.setStyleSheet("")
|
self.l_base.setStyleSheet("")
|
||||||
if Path(e).exists() else
|
if Path(e).exists() else
|
||||||
@ -201,6 +198,10 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
base = QFileDialog.getExistingDirectory(self, 'Select Base Folder', DS.__str__())
|
base = QFileDialog.getExistingDirectory(self, 'Select Base Folder', DS.__str__())
|
||||||
self.l_base.setText(Path(base).__str__())
|
self.l_base.setText(Path(base).__str__())
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def on_b_test1_clicked(self):
|
||||||
|
logger.info(f'test1 {self.arg}')
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def on_b_base_clicked(self):
|
def on_b_base_clicked(self):
|
||||||
if Path(self.l_base.text()):
|
if Path(self.l_base.text()):
|
||||||
@ -242,6 +243,8 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
if b:
|
if b:
|
||||||
self.g_playback.setChecked(False)
|
self.g_playback.setChecked(False)
|
||||||
self.p.send(SetPlayMode('live'))
|
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')
|
logger.info(f'set playmode live')
|
||||||
|
|
||||||
@pyqtSlot(bool)
|
@pyqtSlot(bool)
|
||||||
@ -249,6 +252,8 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
if b:
|
if b:
|
||||||
self.g_live.setChecked(False)
|
self.g_live.setChecked(False)
|
||||||
self.p.send(SetPlayMode('playback'))
|
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')
|
logger.info(f'set playmode playback')
|
||||||
|
|
||||||
def on_device_disable(self):
|
def on_device_disable(self):
|
||||||
@ -336,6 +341,19 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
else:
|
else:
|
||||||
QMessageBox.warning(None, 'hint', 'Commit is empty!!')
|
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):
|
def on_zmq_event(self, msg: QByteArray):
|
||||||
try:
|
try:
|
||||||
msg = Msg.decode_msg(msg.data())
|
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_center.setValue(msg.t_start)
|
||||||
self.sp_crop_width.setValue(msg.t_end)
|
self.sp_crop_width.setValue(msg.t_end)
|
||||||
self.sp_f_rows.setValue(msg.f_rows)
|
self.sp_f_rows.setValue(msg.f_rows)
|
||||||
|
|
||||||
self.sp_v2.setValue(msg.v2)
|
self.sp_v2.setValue(msg.v2)
|
||||||
self.sp_dct_center.setValue(msg.dct_center)
|
self.sp_dct_center.setValue(msg.dct_center)
|
||||||
self.sp_dct_bandwidth.setValue(msg.dct_bandwidth)
|
self.sp_dct_bandwidth.setValue(msg.dct_bandwidth)
|
||||||
@ -387,21 +406,15 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
if msg.value.__len__() > 0:
|
if msg.value.__len__() > 0:
|
||||||
self.p.send(SetSeqMetaMsg('playback', self.c_playback_seq_name.currentText()))
|
self.p.send(SetSeqMetaMsg('playback', self.c_playback_seq_name.currentText()))
|
||||||
elif isinstance(msg, SetSeqMetaMsg):
|
elif isinstance(msg, SetSeqMetaMsg):
|
||||||
self.seq_meta = RfSequenceMeta.from_name(msg.name)
|
if msg.target == 'playback':
|
||||||
mmax_shape0 = max(self.seq_meta.shape)
|
self.playback_seq_meta = RfSequenceMeta.from_name(msg.name)
|
||||||
|
self.update_max(max(self.playback_seq_meta.shape))
|
||||||
self.s_t_start.setMaximum(mmax_shape0)
|
elif isinstance(msg, SeqMetaMsg):
|
||||||
self.s_t_end.setMaximum(mmax_shape0)
|
if msg.target == 'live':
|
||||||
self.s_dct_center.setMaximum(mmax_shape0)
|
self.l_live_seq_name.setText(msg.name)
|
||||||
self.s_dct_bandwidth.setMaximum(mmax_shape0)
|
self.b_live_seq_apply.setEnabled(True)
|
||||||
self.s_f_rows.setMaximum(mmax_shape0)
|
self.live_seq_meta = RfSequenceMeta.from_name(msg.name)
|
||||||
|
self.update_max(max(self.live_seq_meta.shape))
|
||||||
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)
|
|
||||||
|
|
||||||
elif isinstance(msg, DeviceConnectedMsg):
|
elif isinstance(msg, DeviceConnectedMsg):
|
||||||
if msg.value:
|
if msg.value:
|
||||||
self.set_device_connection(LinkStatus.GREEN)
|
self.set_device_connection(LinkStatus.GREEN)
|
||||||
@ -414,19 +427,7 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
else:
|
else:
|
||||||
self.set_device_enable(LinkStatus.RED)
|
self.set_device_enable(LinkStatus.RED)
|
||||||
self.update_device_buttons()
|
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):
|
elif isinstance(msg, DeviceConfigListMsg):
|
||||||
for name, txt in msg.arr:
|
for name, txt in msg.arr:
|
||||||
self.c_live_seq_name.addItem(name, txt)
|
self.c_live_seq_name.addItem(name, txt)
|
||||||
@ -553,7 +554,8 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
self.p.send(SetSidMsg(v))
|
self.p.send(SetSidMsg(v))
|
||||||
|
|
||||||
# @pyqtSlot(int)
|
# @pyqtSlot(int)
|
||||||
def on_seq_meta(self):
|
@pyqtSlot()
|
||||||
|
def on_b_live_seq_apply_clicked(self):
|
||||||
v = self.c_live_seq_name.currentIndex()
|
v = self.c_live_seq_name.currentIndex()
|
||||||
name = self.c_live_seq_name.currentText()
|
name = self.c_live_seq_name.currentText()
|
||||||
if name != 'Empty':
|
if name != 'Empty':
|
||||||
|
|||||||
@ -74,6 +74,10 @@ class Mi(Node):
|
|||||||
self.ping60enable = False
|
self.ping60enable = False
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
self.device_py_req_socket.send(b'start')
|
||||||
|
self.device_py_req_socket.recv()
|
||||||
|
|
||||||
def loop(self):
|
def loop(self):
|
||||||
if c1_connected() and check_socket(C.device_py_rep_socket):
|
if c1_connected() and check_socket(C.device_py_rep_socket):
|
||||||
self.device_py_req_socket.send(b'get_device_status')
|
self.device_py_req_socket.send(b'get_device_status')
|
||||||
|
|||||||
@ -12,7 +12,7 @@ from PyQt6 import QtCore, QtGui, QtWidgets
|
|||||||
class Ui_MainWindow(object):
|
class Ui_MainWindow(object):
|
||||||
def setupUi(self, MainWindow):
|
def setupUi(self, MainWindow):
|
||||||
MainWindow.setObjectName("MainWindow")
|
MainWindow.setObjectName("MainWindow")
|
||||||
MainWindow.resize(1238, 1017)
|
MainWindow.resize(1238, 1044)
|
||||||
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
||||||
self.centralwidget.setObjectName("centralwidget")
|
self.centralwidget.setObjectName("centralwidget")
|
||||||
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
||||||
@ -367,6 +367,9 @@ class Ui_MainWindow(object):
|
|||||||
self.checkBox = QtWidgets.QCheckBox(parent=self.centralwidget)
|
self.checkBox = QtWidgets.QCheckBox(parent=self.centralwidget)
|
||||||
self.checkBox.setObjectName("checkBox")
|
self.checkBox.setObjectName("checkBox")
|
||||||
self.horizontalLayout_6.addWidget(self.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)
|
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
|
||||||
self.horizontalLayout_6.addItem(spacerItem1)
|
self.horizontalLayout_6.addItem(spacerItem1)
|
||||||
self.gridLayout.addLayout(self.horizontalLayout_6, 5, 0, 1, 2)
|
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.label_7.setObjectName("label_7")
|
||||||
self.gridLayout_5.addWidget(self.label_7, 6, 0, 1, 1)
|
self.gridLayout_5.addWidget(self.label_7, 6, 0, 1, 1)
|
||||||
self.sp_crop_width = QtWidgets.QSpinBox(parent=self.centralwidget)
|
self.sp_crop_width = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||||
|
self.sp_crop_width.setMaximum(9999)
|
||||||
self.sp_crop_width.setObjectName("sp_crop_width")
|
self.sp_crop_width.setObjectName("sp_crop_width")
|
||||||
self.gridLayout_5.addWidget(self.sp_crop_width, 4, 2, 1, 1)
|
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)
|
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.s_t_end.setObjectName("s_t_end")
|
||||||
self.gridLayout_5.addWidget(self.s_t_end, 4, 1, 1, 1)
|
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 = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||||
|
self.sp_dct_bandwidth.setMaximum(9999)
|
||||||
self.sp_dct_bandwidth.setObjectName("sp_dct_bandwidth")
|
self.sp_dct_bandwidth.setObjectName("sp_dct_bandwidth")
|
||||||
self.gridLayout_5.addWidget(self.sp_dct_bandwidth, 7, 2, 1, 1)
|
self.gridLayout_5.addWidget(self.sp_dct_bandwidth, 7, 2, 1, 1)
|
||||||
self.label_5 = QtWidgets.QLabel(parent=self.centralwidget)
|
self.label_5 = QtWidgets.QLabel(parent=self.centralwidget)
|
||||||
@ -524,9 +529,11 @@ class Ui_MainWindow(object):
|
|||||||
self.sp_v2.setObjectName("sp_v2")
|
self.sp_v2.setObjectName("sp_v2")
|
||||||
self.gridLayout_5.addWidget(self.sp_v2, 5, 2, 1, 1)
|
self.gridLayout_5.addWidget(self.sp_v2, 5, 2, 1, 1)
|
||||||
self.sp_dct_center = QtWidgets.QSpinBox(parent=self.centralwidget)
|
self.sp_dct_center = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||||
|
self.sp_dct_center.setMaximum(9999)
|
||||||
self.sp_dct_center.setObjectName("sp_dct_center")
|
self.sp_dct_center.setObjectName("sp_dct_center")
|
||||||
self.gridLayout_5.addWidget(self.sp_dct_center, 6, 2, 1, 1)
|
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 = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||||
|
self.sp_f_rows.setMaximum(7000)
|
||||||
self.sp_f_rows.setObjectName("sp_f_rows")
|
self.sp_f_rows.setObjectName("sp_f_rows")
|
||||||
self.gridLayout_5.addWidget(self.sp_f_rows, 8, 2, 1, 1)
|
self.gridLayout_5.addWidget(self.sp_f_rows, 8, 2, 1, 1)
|
||||||
self.s_f_rows = QtWidgets.QSlider(parent=self.centralwidget)
|
self.s_f_rows = QtWidgets.QSlider(parent=self.centralwidget)
|
||||||
@ -559,6 +566,7 @@ class Ui_MainWindow(object):
|
|||||||
self.label_2.setObjectName("label_2")
|
self.label_2.setObjectName("label_2")
|
||||||
self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 3)
|
self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 3)
|
||||||
self.sp_crop_center = QtWidgets.QSpinBox(parent=self.centralwidget)
|
self.sp_crop_center = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||||
|
self.sp_crop_center.setMaximum(9999)
|
||||||
self.sp_crop_center.setObjectName("sp_crop_center")
|
self.sp_crop_center.setObjectName("sp_crop_center")
|
||||||
self.gridLayout_5.addWidget(self.sp_crop_center, 3, 2, 1, 1)
|
self.gridLayout_5.addWidget(self.sp_crop_center, 3, 2, 1, 1)
|
||||||
self.s_beta = QtWidgets.QSlider(parent=self.centralwidget)
|
self.s_beta = QtWidgets.QSlider(parent=self.centralwidget)
|
||||||
@ -572,6 +580,7 @@ class Ui_MainWindow(object):
|
|||||||
self.label_35.setObjectName("label_35")
|
self.label_35.setObjectName("label_35")
|
||||||
self.gridLayout_5.addWidget(self.label_35, 9, 0, 1, 1)
|
self.gridLayout_5.addWidget(self.label_35, 9, 0, 1, 1)
|
||||||
self.sp_beta = QtWidgets.QSpinBox(parent=self.centralwidget)
|
self.sp_beta = QtWidgets.QSpinBox(parent=self.centralwidget)
|
||||||
|
self.sp_beta.setMaximum(9999)
|
||||||
self.sp_beta.setObjectName("sp_beta")
|
self.sp_beta.setObjectName("sp_beta")
|
||||||
self.gridLayout_5.addWidget(self.sp_beta, 9, 2, 1, 1)
|
self.gridLayout_5.addWidget(self.sp_beta, 9, 2, 1, 1)
|
||||||
self.gridLayout.addLayout(self.gridLayout_5, 3, 0, 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.l_probe_angle.setText(_translate("MainWindow", "TextLabel"))
|
||||||
self.cb_bscan.setText(_translate("MainWindow", "BSCAN"))
|
self.cb_bscan.setText(_translate("MainWindow", "BSCAN"))
|
||||||
self.checkBox.setText(_translate("MainWindow", "FOCUS"))
|
self.checkBox.setText(_translate("MainWindow", "FOCUS"))
|
||||||
|
self.b_test1.setText(_translate("MainWindow", "test1"))
|
||||||
self.label_23.setText(_translate("MainWindow", "Force"))
|
self.label_23.setText(_translate("MainWindow", "Force"))
|
||||||
self.label_22.setText(_translate("MainWindow", "Position"))
|
self.label_22.setText(_translate("MainWindow", "Position"))
|
||||||
self.label_19.setText(_translate("MainWindow", "6DOF Cobot"))
|
self.label_19.setText(_translate("MainWindow", "6DOF Cobot"))
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1238</width>
|
<width>1238</width>
|
||||||
<height>1017</height>
|
<height>1044</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -681,6 +681,13 @@ border-radius: 7px;
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="b_test1">
|
||||||
|
<property name="text">
|
||||||
|
<string>test1</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
@ -910,7 +917,11 @@ border-radius: 7px;
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="2">
|
<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>
|
||||||
<item row="10" column="1">
|
<item row="10" column="1">
|
||||||
<spacer name="verticalSpacer_2">
|
<spacer name="verticalSpacer_2">
|
||||||
@ -939,7 +950,11 @@ border-radius: 7px;
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="2">
|
<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>
|
||||||
<item row="4" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_5">
|
<widget class="QLabel" name="label_5">
|
||||||
@ -987,10 +1002,18 @@ border-radius: 7px;
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="2">
|
<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>
|
||||||
<item row="8" column="2">
|
<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>
|
||||||
<item row="8" column="1">
|
<item row="8" column="1">
|
||||||
<widget class="QSlider" name="s_f_rows">
|
<widget class="QSlider" name="s_f_rows">
|
||||||
@ -1052,7 +1075,11 @@ border-radius: 7px;
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="2">
|
<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>
|
||||||
<item row="9" column="1">
|
<item row="9" column="1">
|
||||||
<widget class="QSlider" name="s_beta">
|
<widget class="QSlider" name="s_beta">
|
||||||
@ -1078,7 +1105,11 @@ border-radius: 7px;
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="2">
|
<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>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@ -53,6 +53,7 @@ class BG(Enum):
|
|||||||
HeaderByteMsg = auto()
|
HeaderByteMsg = auto()
|
||||||
RfMatMsg = auto()
|
RfMatMsg = auto()
|
||||||
KeyPressMsg = auto()
|
KeyPressMsg = auto()
|
||||||
|
RGB888Msg = auto()
|
||||||
|
|
||||||
|
|
||||||
class Msg:
|
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):
|
class RfMatMsg(HeaderByteMsg):
|
||||||
|
|
||||||
def __init__(self, rfmat: 'RfMat'):
|
def __init__(self, rfmat: 'RfMat'):
|
||||||
|
|||||||
@ -237,11 +237,12 @@ class RfMat:
|
|||||||
color2 = (128, 128, 128)
|
color2 = (128, 128, 128)
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
cv2.putText(canvas, line1, (0, 60), cv2.FONT_HERSHEY_PLAIN, 4, color1, 8)
|
fontsize = 2
|
||||||
cv2.putText(canvas, line1, (0, 60), cv2.FONT_HERSHEY_PLAIN, 4, color2, 4)
|
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, fontsize, 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, color2, 4)
|
||||||
|
|
||||||
if canvas.shape.__len__() == 2:
|
if canvas.shape.__len__() == 2:
|
||||||
ccp.m[canvas == 255] = 255
|
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