forked from M-Labs/thermostat
Status bar limits warning
This commit is contained in:
parent
e4d1f0133e
commit
442450667b
@ -85,14 +85,12 @@ class WrappedClient(QObject, Client):
|
||||
async def _check_zero_limits(self):
|
||||
pwm_report = await self.get_pwm()
|
||||
for pwm_channel in pwm_report:
|
||||
ch = pwm_channel["channel"]
|
||||
if (neg := pwm_channel["max_i_neg"]["value"]) != (pos := pwm_channel["max_i_pos"]["value"]):
|
||||
# Set the minimum of the 2
|
||||
lcd = min(neg, pos)
|
||||
await self.set_param("pwm", pwm_channel["channel"], 'max_i_neg', lcd)
|
||||
await self.set_param("pwm", pwm_channel["channel"], 'max_i_pos', lcd)
|
||||
for limit in ["max_i_pos", "max_v"]:
|
||||
if pwm_channel[limit]["value"] == 0.0:
|
||||
QtWidgets.QMessageBox.warning(self.parent(), "Limits", "Max {} is set to zero on channel {}!".format("Current" if limit == "max_i_pos" else "Voltage", pwm_channel["channel"]))
|
||||
lowest = min(neg, pos)
|
||||
await self.set_param("pwm", ch, 'max_i_neg', lowest)
|
||||
await self.set_param("pwm", ch, 'max_i_pos', lowest)
|
||||
|
||||
|
||||
class ClientWatcher(QObject):
|
||||
@ -509,6 +507,39 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||
|
||||
self.plot_settings.setMenu(self.plot_menu)
|
||||
|
||||
@pyqtSlot(list)
|
||||
def set_limits_warning(self, limits_zeroed: list):
|
||||
for channel in limits_zeroed:
|
||||
if len(channel) != 0:
|
||||
break
|
||||
else:
|
||||
self.limits_warning.setPixmap(QtGui.QPixmap())
|
||||
self.limits_warning.setToolTip("")
|
||||
return
|
||||
|
||||
report_str = "The following output limits are set to zero:\n"
|
||||
for ch in range(2):
|
||||
had_zeros = False
|
||||
first = True
|
||||
for limit in "max_i_pos", "max_v":
|
||||
if limit in limits_zeroed[ch]:
|
||||
if not first:
|
||||
report_str += ", "
|
||||
if not had_zeros:
|
||||
report_str += f"Channel {ch}: "
|
||||
had_zeros = True
|
||||
report_str += '"Max Absolute Current"' if limit == "max_i_pos" else '"Max Absolute Voltage"'
|
||||
first = False
|
||||
if had_zeros:
|
||||
report_str += '\n'
|
||||
|
||||
report_str += "\nThere will be no overall output on channels with zeroed limits."
|
||||
|
||||
pixmapi = getattr(QtWidgets.QStyle.StandardPixmap, "SP_MessageBoxWarning")
|
||||
icon = self.style().standardIcon(pixmapi)
|
||||
self.limits_warning.setPixmap(icon.pixmap(16, 16))
|
||||
self.limits_warning.setToolTip(report_str)
|
||||
|
||||
@pyqtSlot(int)
|
||||
def set_max_samples(self, samples: int):
|
||||
for channel_graph in self.channel_graphs:
|
||||
@ -767,12 +798,20 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||
|
||||
@pyqtSlot(list)
|
||||
def update_pwm(self, pwm_data):
|
||||
channel_zeroed_limits = [[] for i in range(2)]
|
||||
|
||||
for pwm_params in pwm_data:
|
||||
channel = pwm_params["channel"]
|
||||
with QSignalBlocker(self.params[channel]):
|
||||
self.params[channel].child("Output Config", "Limits", "Max Absolute Voltage").setValue(pwm_params["max_v"]["value"])
|
||||
self.params[channel].child("Output Config", "Limits", "Max Absolute Current").setValue(pwm_params["max_i_pos"]["value"])
|
||||
|
||||
for limit in "max_i_pos", "max_v":
|
||||
if pwm_params[limit]["value"] == 0.0:
|
||||
channel_zeroed_limits[channel].append(limit)
|
||||
|
||||
self.set_limits_warning(channel_zeroed_limits)
|
||||
|
||||
@pyqtSlot(list)
|
||||
def update_postfilter(self, postfilter_data):
|
||||
for postfilter_params in postfilter_data:
|
||||
|
@ -252,6 +252,9 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="limits_warning"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="background_task_lbl">
|
||||
<property name="text">
|
||||
|
@ -127,6 +127,9 @@ class Ui_MainWindow(object):
|
||||
self.plot_settings.setPopupMode(QtWidgets.QToolButton.ToolButtonPopupMode.InstantPopup)
|
||||
self.plot_settings.setObjectName("plot_settings")
|
||||
self.settings_layout.addWidget(self.plot_settings)
|
||||
self.limits_warning = QtWidgets.QLabel(parent=self.bottom_settings_group)
|
||||
self.limits_warning.setObjectName("limits_warning")
|
||||
self.settings_layout.addWidget(self.limits_warning)
|
||||
self.background_task_lbl = QtWidgets.QLabel(parent=self.bottom_settings_group)
|
||||
self.background_task_lbl.setObjectName("background_task_lbl")
|
||||
self.settings_layout.addWidget(self.background_task_lbl)
|
||||
|
Loading…
Reference in New Issue
Block a user