Lately, I started to look into adding pulsing functionality to the Keithley 236 SMU driver and wanted to update it to the new “update_” and “apply_” scheme along the way. But it looks like checking the “Use pulse mode” checkbox does not initiate a GUI update.
excerpt from the code in use:
def update_gui_parameters(self, parameters):
self.pulse = parameters.get("CheckPulse", False)
# ... some other code here ...
if self.pulse == True:
new_parameters = {
"SweepMode" : ["Voltage [V]", "Current [A]"],
"Measuring Range": list(self.ranges.keys()),
"CheckPulse": True,
"PulseOnTime": 0.010,
# ...some other code here ...
}
else:
new_parameters = {
"SweepMode" : ["Voltage [V]", "Current [A]"],
"Measuring Range": list(self.ranges.keys()),
"CheckPulse": False,
# ...some other code here ...
}
The dynamic GUI updates have only been developed for parameters in the “Parameters:” Box (i.e. those that are defined in the driver but not always present in the module), which is commonly used in Logger or Switch.
As such, the “Use pulse mode” does not trigger a GUI update, as you have observed (but it’s not related to being a checkbox, but rather being a property that is already present in the SMU module itself).
I’m going to add this detail to the wiki, as it was missing before and also wasn’t clearly stated in the feature announcement.
maybe you can explain what you aimed for and we can present a solution. So far, the pulse section of the SMU module comes with the most used parameters to configure a pulse measurement. Parameters that are not used are greyed out, so that the user can only configure those fields that are processed by the driver.
In the latest version of the SMU module, it has the capability to create a Parameter box to support parameters that are not provided by the fixed GUI fields. The idea is to stick with the fixed GUI fields whenever possible but provide special options whenever an instrument needs them.
I was adding the pulse capability when I read that the instruments demands the measuring range to be set manually if pulses are to be emitted, which in case of the K236 requires a selection that defines a current as well as a voltage range in combination.
Therefore, I used the new possibility to add this selection as a parameter but made the fallacy to think that I need to hide this if no pulsing is being selected. So I rewrote the driver to the new structure with dynamic GUI updates only to realize afterwards that setting the measurement range might be benefitial in ALL use cases, omitting the need to dynamically add or remove it from the GUI.
But now everything was already in the new structure, so I wanted to keep it that way, assuming that the checkbox for pulses can work the same way as other selections for initiating an GUI update.
But as this is not the case, I’ll just transfer the pulse additions to the original driver and leave it in the traditional structure regarding GUI readout.