# keithley 2182 nanovoltmeter namespace eval nanov {} { } proc stdConfig::nanov {} { controller std "\n" 5 prop startcmd "*IDN?" obj Keithley2182 rd -none prop read nanov::read kids channels { node u1 upd node u2 upd node chan out default 0 prop write nanov::setchan prop enum auto,chan1,chan2 } } proc nanov::read {} { sct send ":FETCH?" return nanov::update } proc nanov::update {} { set mode [hvali [sct]/chan] if {$mode == 0} { set chan [silent 1 sct channel] } else { set chan $mode } hupdate [sct]/u$chan [sct result] hdelprop [sct]/u$chan geterror if {$mode != 0} { return idle } set chan [expr 3-$chan] sct send ";SENS:CHAN $chan;:SENS:CHAN?" sct channel $chan return stdSct::complete } proc nanov::setchan {} { set mode [sct target] if {$mode == 0} { sct update $mode return idle } set chan $mode sct send ";SENS:CHAN $chan;:SENS:CHAN?" sct channel $chan return nanov::updatechan } proc nanov::updatechan {} { sct update [sct result] return idle }