proc SingleVolt {volt oscno} { histmem mode unlimited newfile HISTOGRAM_XY if {$volt== 0} { PulserOff } else { set pulservolt [expr {($volt*1.0)/4000.0}] pulser send VOLT:OFFS $pulservolt # PulserOn # pulser send "APPL:DC DEF,DEF,$pulservolt" } oscmd start $oscno hmm countblock save 0 oscmd stop } proc SetDC {} { pulseroff pulser send FUNC DC pulser send VOLT:OFFS 0 pulseron } proc VoltRamp {start step fin oscno} { histmem mode unlimited set waszero 0 newfile HISTOGRAM_XY set loopvar 1 set i 0 while {$loopvar} { set j [expr {$i*$step+$start}] if {$j> $fin && $step > 0} {break} if {$j< $fin && $step < 0} {break} if {$j== 0} { PulserOff set waszero 1 } else { set pulservolt [expr {($j*1.0)/4000.0}] pulser send VOLT:OFFS $pulservolt if {$waszero==1} { PulserOn set waszero 0 } # pulser send "APPL:DC DEF,DEF,$pulservolt" } oscmd start $oscno hmm countblock save $i incr i } oscmd stop } proc SquarePulseVolt {start step fin freq oscno} { histmem mode unlimited newfile HISTOGRAM_XYT set loopvar 1 set i 0 while {$loopvar} { set j [expr {$i*$step+$start}] if {$j> $fin && $step > 0} {break} if {$j< $fin && $step < 0} {break} if {$j== 0} { PulserOff } else { set pulservolt [expr {($j*1.0)/4000.0}] PulserSquare $freq $pulservolt PulserOn # pulser send "APPL:SQU $freq,$pulservolt,0" } oscmd start $oscno hmm countblock save $i incr i } oscmd stop } proc SquarePulseFreq {volt freqlist bins oscno} { histmem mode unlimited newfile HISTOGRAM_XYT set loopvar 1 set i 0 foreach freq $freqlist { set pulservolt [expr {($volt*1.0)/4000.0}] histmem_period_strobo $freq $bins wait 3 PulserSquare $freq $pulservolt PulserOn # pulser send "APPL:SQU $freq,$pulservolt,0" oscmd start $oscno hmm countblock save $i incr i } oscmd stop } proc UniPulseFreq {volt freqlist bins oscno} { histmem mode unlimited newfile HISTOGRAM_XYT set loopvar 1 set i 0 foreach freq $freqlist { set pulservolt [expr {($volt*1.0)/4000.0}] histmem_period_strobo $freq $bins wait 3 PulserSquareOffs $freq $pulservolt [expr {$pulservolt/2}] PulserOn # pulser send "APPL:SQU $freq,$pulservolt,[expr {$pulservolt/2}]" oscmd start $oscno hmm countblock save $i incr i } oscmd stop } publish SetDC user publish SingleVolt user publish VoltRamp user publish SquarePulseVolt user publish SquarePulseFreq user publish UniPulseFreq user