add t_start t_end

This commit is contained in:
remilia 2025-01-20 13:03:02 +08:00
parent 9a3bcbfd2c
commit 5011d6c476
10 changed files with 276 additions and 103 deletions

View File

@ -0,0 +1,66 @@
[Root]
VersionDriverOEMPA=1.3.0.0
CycleCount=1
EnableFMC=1
FMCElementStart=0
FMCElementStop=63
FMCElementStep=1
DisableUSB3=1
AscanBitSize=14Bits
Enable256=0
[Cycle:0]
GainDigital=0.000000 dB
BeamCorrection=0.0 dB
Start=0.000000 us
Range=60.000000 us
TimeSlot=792.700000 us
PointFactor=2
CompressionType=Decimation
Rectification=Signed
FilterIndex=0
GainAnalog=40.000000 dB
GateCount=0
[Cycle:0\Pulser]
WedgeDelay=0.0 us
Element.count=64
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
Delay.count=64;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
Width.count=64
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
[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

View File

@ -0,0 +1,66 @@
[Root]
VersionDriverOEMPA=1.3.0.0
CycleCount=1
EnableFMC=1
FMCElementStart=0
FMCElementStop=63
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=1056.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=64
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
Delay.count=64;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
Width.count=64
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
[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

View File

@ -21,7 +21,7 @@ class Beamformer(Node):
def __init__(self):
super(Beamformer, self).__init__()
self.arg = ImageArgMsg('', v1=1499)
self.arg = ImageArgMsg('', t_start=0, t_end=1499)
self.seq_meta = None
self.record_enable = False
self.record_commit = None
@ -31,7 +31,7 @@ class Beamformer(Node):
if data is None:
return
d2 = (data
.crop1(self.arg.v1)
.crop(self.arg.t_start, self.arg.t_end)
.rotate90()
.grey()
.cpu()

View File

@ -17,7 +17,7 @@ class Device(Node):
def __init__(self):
super(Device, self).__init__()
self.arg = ImageArgMsg('', v1=1499)
self.arg = ImageArgMsg('',t_start=0, t_end=1499)
self.seq_meta = None
self.device_rep_socket = None
self.ok = b'ok\x00'
@ -55,14 +55,16 @@ class Device(Node):
logger.error(f"Device msg: {rb}")
def online(self):
code = subprocess.run(['curl', '-m', '1', 'http://11.6.1.66:22'], stderr=subprocess.DEVNULL,
code = subprocess.run(['curl', '-m', '1', f'http://{LIVE_REP_SOCKET}'], stderr=subprocess.DEVNULL,
stdout=subprocess.DEVNULL).returncode
if code == 28:
self.send(DeviceOnlineMsg(False))
return False
else:
self.send(DeviceOnlineMsg(True))
return True
print(code)
match code:
case 28 | 7:
self.send(DeviceOnlineMsg(False))
return False
case _:
self.send(DeviceOnlineMsg(True))
return True
def enabled(self):
self.device_rep_socket.send(b'enabled')

View File

@ -22,10 +22,11 @@ class Adv(QMainWindow, Ui_MainWindow):
zmq_receiver = ZMQReceiver(self)
zmq_receiver.zmq_event.connect(self.on_zmq_event)
zmq_receiver.start()
self.horizontalSlider.valueChanged.connect(self.vc)
self.s_t_start.valueChanged.connect(self.on_t_start)
self.s_t_end.valueChanged.connect(self.on_t_end)
self.comboBox.currentIndexChanged.connect(self.cbc)
self.s_sid.valueChanged.connect(self.c_sid)
self.arg = ImageArgMsg('ui', v1=1499)
self.arg = ImageArgMsg('ui', t_start=0, t_end=1499)
self.b_base.clicked.connect(lambda: self.p.send(SetBaseMsg(self.l_base.text())))
self.seq_meta: RfSequenceMeta | None = None
self.b_exit.clicked.connect(lambda: self.p.send(KillMsg('')))
@ -75,7 +76,8 @@ class Adv(QMainWindow, Ui_MainWindow):
if msg.name == '':
self.close()
elif isinstance(msg, ImageArgMsg):
self.horizontalSlider.setValue(msg.v1)
self.s_t_end.setValue(msg.t_start)
self.s_t_end.setValue(msg.t_end)
elif isinstance(msg, MoveAxisMsg):
match msg.axis:
case 'S':
@ -93,21 +95,22 @@ class Adv(QMainWindow, Ui_MainWindow):
self.b_play_playback.setEnabled(True)
elif isinstance(msg, SeqMetaMsg):
self.seq_meta = RfSequenceMeta.from_name(msg.s)
self.horizontalSlider.setMaximum(max(self.seq_meta.shape))
self.s_t_start.setMaximum(max(self.seq_meta.shape))
self.s_t_end.setMaximum(max(self.seq_meta.shape))
elif isinstance(msg, DeviceConnectedMsg):
if msg.value:
self.b_device_connected.setStyleSheet("background-color: red;")
self.b_device_connected.setStyleSheet("background-color: green;")
self.device_connected = True
else:
self.b_device_connected.setStyleSheet("")
self.b_device_connected.setStyleSheet("background-color: red;")
self.device_connected = False
elif isinstance(msg, DeviceEnabledMsg):
if msg.value:
self.b_device_enabled.setStyleSheet("background-color: red;")
self.b_device_enabled.setStyleSheet("background-color: green;")
self.device_enabled = True
else:
self.b_device_enabled.setStyleSheet("")
self.b_device_enabled.setStyleSheet("background-color: red;")
self.device_enabled = False
elif isinstance(msg, DeviceOnlineMsg):
if msg.value:
@ -121,9 +124,15 @@ class Adv(QMainWindow, Ui_MainWindow):
self.c_seq_meta.addItem(name, txt)
@QtCore.pyqtSlot(int)
def vc(self, v):
if self.horizontalSlider.sender() is None:
self.arg.v1 = v
def on_t_start(self, v):
if self.s_t_end.sender() is None:
self.arg.t_start = v
self.p.send(self.arg)
@QtCore.pyqtSlot(int)
def on_t_end(self, v):
if self.s_t_end.sender() is None:
self.arg.t_end = v
self.p.send(self.arg)
@QtCore.pyqtSlot(int)

View File

@ -35,43 +35,53 @@ class Ui_MainWindow(object):
self.gridLayout.addLayout(self.gridLayout_3, 0, 0, 1, 1)
self.gridLayout_5 = QtWidgets.QGridLayout()
self.gridLayout_5.setObjectName("gridLayout_5")
self.horizontalSlider = QtWidgets.QSlider(parent=self.centralwidget)
self.horizontalSlider.setMinimum(1)
self.horizontalSlider.setMaximum(1500)
self.horizontalSlider.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalSlider.setObjectName("horizontalSlider")
self.gridLayout_5.addWidget(self.horizontalSlider, 1, 1, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
self.gridLayout_5.addItem(spacerItem, 4, 1, 1, 1)
self.horizontalSlider_4 = QtWidgets.QSlider(parent=self.centralwidget)
self.horizontalSlider_4.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalSlider_4.setObjectName("horizontalSlider_4")
self.gridLayout_5.addWidget(self.horizontalSlider_4, 3, 1, 1, 1)
self.label_5 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_5.setObjectName("label_5")
self.gridLayout_5.addWidget(self.label_5, 1, 0, 1, 1)
self.horizontalSlider_2 = QtWidgets.QSlider(parent=self.centralwidget)
self.horizontalSlider_2.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalSlider_2.setObjectName("horizontalSlider_2")
self.gridLayout_5.addWidget(self.horizontalSlider_2, 2, 1, 1, 1)
self.spinBox = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox.setObjectName("spinBox")
self.gridLayout_5.addWidget(self.spinBox, 1, 2, 1, 1)
self.spinBox_2 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_2.setObjectName("spinBox_2")
self.gridLayout_5.addWidget(self.spinBox_2, 3, 2, 1, 1)
self.label_7 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_7.setObjectName("label_7")
self.gridLayout_5.addWidget(self.label_7, 4, 0, 1, 1)
self.label_6 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_6.setObjectName("label_6")
self.gridLayout_5.addWidget(self.label_6, 3, 0, 1, 1)
self.s_t_end = QtWidgets.QSlider(parent=self.centralwidget)
self.s_t_end.setMinimum(1)
self.s_t_end.setMaximum(1500)
self.s_t_end.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_t_end.setObjectName("s_t_end")
self.gridLayout_5.addWidget(self.s_t_end, 2, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_2.setObjectName("label_2")
self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 3)
self.label_6 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_6.setObjectName("label_6")
self.gridLayout_5.addWidget(self.label_6, 2, 0, 1, 1)
self.label_7 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_7.setObjectName("label_7")
self.gridLayout_5.addWidget(self.label_7, 3, 0, 1, 1)
self.spinBox_2 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_2.setObjectName("spinBox_2")
self.gridLayout_5.addWidget(self.spinBox_2, 2, 2, 1, 1)
self.horizontalSlider_4 = QtWidgets.QSlider(parent=self.centralwidget)
self.horizontalSlider_4.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalSlider_4.setObjectName("horizontalSlider_4")
self.gridLayout_5.addWidget(self.horizontalSlider_4, 4, 1, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
self.gridLayout_5.addItem(spacerItem, 5, 1, 1, 1)
self.spinBox = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox.setObjectName("spinBox")
self.gridLayout_5.addWidget(self.spinBox, 2, 2, 1, 1)
self.label_5 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_5.setObjectName("label_5")
self.gridLayout_5.addWidget(self.label_5, 2, 0, 1, 1)
self.horizontalSlider_2 = QtWidgets.QSlider(parent=self.centralwidget)
self.horizontalSlider_2.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalSlider_2.setObjectName("horizontalSlider_2")
self.gridLayout_5.addWidget(self.horizontalSlider_2, 3, 1, 1, 1)
self.spinBox_3 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_3.setObjectName("spinBox_3")
self.gridLayout_5.addWidget(self.spinBox_3, 3, 2, 1, 1)
self.gridLayout_5.addWidget(self.spinBox_3, 4, 2, 1, 1)
self.spinBox_12 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_12.setObjectName("spinBox_12")
self.gridLayout_5.addWidget(self.spinBox_12, 1, 2, 1, 1)
self.s_t_start = QtWidgets.QSlider(parent=self.centralwidget)
self.s_t_start.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_t_start.setObjectName("s_t_start")
self.gridLayout_5.addWidget(self.s_t_start, 1, 1, 1, 1)
self.label_15 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_15.setObjectName("label_15")
self.gridLayout_5.addWidget(self.label_15, 1, 0, 1, 1)
self.gridLayout.addLayout(self.gridLayout_5, 1, 0, 1, 1)
self.gridLayout_2 = QtWidgets.QGridLayout()
self.gridLayout_2.setObjectName("gridLayout_2")
@ -201,7 +211,7 @@ class Ui_MainWindow(object):
self.gridLayout.addWidget(self.b_exit, 2, 0, 1, 2)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1177, 22))
self.menubar.setGeometry(QtCore.QRect(0, 0, 1177, 30))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
@ -215,12 +225,13 @@ class Ui_MainWindow(object):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.b_device_enabled.setText(_translate("MainWindow", "Beam"))
self.b_device_connected.setText(_translate("MainWindow", "Connect"))
self.b_device_connected.setText(_translate("MainWindow", "Connection"))
self.l_online.setText(_translate("MainWindow", "Device Offline"))
self.label_5.setText(_translate("MainWindow", "cut_t"))
self.label_2.setText(_translate("MainWindow", "Imaging"))
self.label_6.setText(_translate("MainWindow", "TextLabel"))
self.label_7.setText(_translate("MainWindow", "TextLabel"))
self.label_6.setText(_translate("MainWindow", "TextLabel"))
self.label_2.setText(_translate("MainWindow", "Imaging"))
self.label_5.setText(_translate("MainWindow", "t_end"))
self.label_15.setText(_translate("MainWindow", "t_start"))
self.b_play_playback.setText(_translate("MainWindow", "Playback"))
self.b_record.setText(_translate("MainWindow", "Record"))
self.label_4.setText(_translate("MainWindow", "Frame ID"))

View File

@ -30,7 +30,7 @@
<item row="1" column="0">
<widget class="QPushButton" name="b_device_connected">
<property name="text">
<string>Connect</string>
<string>Connection</string>
</property>
</widget>
</item>
@ -48,8 +48,25 @@
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_5">
<item row="1" column="1">
<widget class="QSlider" name="horizontalSlider">
<item row="3" column="2">
<widget class="QSpinBox" name="spinBox_2"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSlider" name="s_t_end">
<property name="minimum">
<number>1</number>
</property>
@ -61,7 +78,21 @@
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Imaging</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSlider" name="horizontalSlider_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -74,57 +105,43 @@
</property>
</spacer>
</item>
<item row="3" column="1">
<widget class="QSlider" name="horizontalSlider_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<item row="2" column="2">
<widget class="QSpinBox" name="spinBox"/>
</item>
<item row="1" column="0">
<item row="2" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>cut_t</string>
<string>t_end</string>
</property>
</widget>
</item>
<item row="2" column="1">
<item row="3" column="1">
<widget class="QSlider" name="horizontalSlider_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="spinBox"/>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Imaging</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QSpinBox" name="spinBox_2"/>
</item>
<item row="3" column="2">
<item row="4" column="2">
<widget class="QSpinBox" name="spinBox_3"/>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="spinBox_12"/>
</item>
<item row="1" column="1">
<widget class="QSlider" name="s_t_start">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>t_start</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1">
@ -379,7 +396,7 @@
<x>0</x>
<y>0</y>
<width>1177</width>
<height>22</height>
<height>30</height>
</rect>
</property>
</widget>

View File

@ -159,7 +159,8 @@ class MoveAxisMsg(Msg):
@dataclasses.dataclass
class ImageArgMsg(Msg):
sender: str
v1: int
t_start: int
t_end: int
@dataclasses.dataclass

View File

@ -78,8 +78,8 @@ class RfMat:
return self
return self.copy(self.m.get())
def crop1(self, v1):
return self.copy(self.m[:, :v1])
def crop(self, t_start: int, t_end: int):
return self.copy(self.m[:, t_start:t_end])
def watermark(self, watermark=None):
assert self.m.dtype == np.uint8

View File

@ -1,5 +1,6 @@
import subprocess
if __name__ == '__main__':
code = subprocess.run(['curl', '-m', '1', 'http://11.6.1.66:22'], stderr=subprocess.DEVNULL,
code = subprocess.run(['curl', '-m', '1', 'http://11.6.1.66:5556'], stderr=subprocess.DEVNULL,
stdout=subprocess.DEVNULL).returncode
print(code)