55 lines
940 B
Tcl
55 lines
940 B
Tcl
namespace eval ami136 {} {
|
|
}
|
|
|
|
proc stdConfig::ami136 {{unit cm}} {
|
|
controller std \r\n 10
|
|
if {$unit ne "cm" && $unit ne "percent"} {
|
|
error "illegal ami136 unit: $unit"
|
|
}
|
|
prop startcmd $unit
|
|
|
|
obj ami_level rd
|
|
prop readcmd "level"
|
|
prop update ami136::update
|
|
prop last -2
|
|
kids "LHe vessel" {
|
|
node mode -int wr
|
|
prop enum slow,fast
|
|
prop write ami136::wrmode
|
|
prop read ami136::rdmode
|
|
}
|
|
}
|
|
|
|
proc ami136::update {} {
|
|
set res [sct result]
|
|
# workaround for misreadings
|
|
if {abs($res - [sct last]) < 0.5} {
|
|
sct update $res
|
|
}
|
|
sct last $res
|
|
return idle
|
|
}
|
|
|
|
proc ami136::wrmode {} {
|
|
if {[sct target]} {
|
|
sct send "interval=0"
|
|
} else {
|
|
sct send "interval=10"
|
|
}
|
|
return stdSct::completeUpdate
|
|
}
|
|
|
|
proc ami136::rdmode {} {
|
|
sct send interval
|
|
return ami136::updmode
|
|
}
|
|
|
|
proc ami136::updmode {} {
|
|
if {[sct result] < 0.25} {
|
|
sct update 1
|
|
} else {
|
|
sct update 0
|
|
}
|
|
return idle
|
|
}
|