Add Blocking to DynaCool PPMS During Temperature Ramp
Summary of Changes
- Add blocking function to DynaCool PPMS driver that waits for temperature state to be stable before allowing other functions to be called when setting the temperature.
Codecov Report
:x: Patch coverage is 16.66667% with 5 lines in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 59.88%. Comparing base (eb77989) to head (5f11aae).
| Files with missing lines | Patch % | Lines |
|---|---|---|
| ...ent_drivers/QuantumDesign/DynaCoolPPMS/DynaCool.py | 16.66% | 5 Missing :warning: |
Additional details and impacted files
@@ Coverage Diff @@
## main #7534 +/- ##
==========================================
- Coverage 59.89% 59.88% -0.01%
==========================================
Files 352 352
Lines 31807 31813 +6
==========================================
+ Hits 19051 19052 +1
- Misses 12756 12761 +5
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
Testing Results - Bug Found
Environment:
- PPMS: Quantum Design DynaCool
- QCodes version: 0.55.0.dev194 (this PR branch)
- Testing date: December 19, 2025
Issue: blocking_t() causes PPMS server crash
Steps to Reproduce:
- Fresh PPMS connection - reads work normally (
ppms.temperature()✓) - Execute:
ppms.blocking_t(300) - Result:
VI_ERROR_IOon the TEMP write command - Subsequent reads fail with
VI_ERROR_CONN_LOST - PPMS server connection is lost
Error Details: VisaIOError: VI_ERROR_IO (-1073807298): Could not perform operation because of I/O error at DynaCool.py:434 in write(): self._error_code = int(self.visa_handle.read())
Then: VisaIOError: VI_ERROR_CONN_LOST (-1073807194): The connection for the given session has been lost
Observations:
- ✅
ppms.temperature_setpoint()(non-blocking) works fine - ❌
ppms.blocking_t()crashes the connection - ✅
blocking_tparameter exists and is configured correctly - Issue occurs immediately when TEMP command is sent with blocking enabled
Root Cause Analysis: The failure occurs at line 434 when trying to read the error code response after sending the TEMP command. The PPMS receives the command but fails to respond, then the connection is lost.