Files
sea/tcl/drivers/motvalve.tcl
2022-08-22 14:59:00 +02:00

50 lines
915 B
Tcl

# motorized valve (DC-motor with endswitch)
namespace eval motvalve {} {
}
proc stdConfig::motvalve {} {
controller std "\n" 5
prop startcmd "t"
obj MotValve wr
prop write motvalve::write
prop read motvalve::read
prop enum close,open,closing,opening
kids "motor valve" {
node pos upd
}
}
proc motvalve::write {} {
if {[sct target] == 1 || [sct target] == 3} {
sct send o
} else {
sct send c
}
return motvalve::read
}
proc motvalve::read {} {
sct send ep
return motvalve::update
}
proc motvalve::update {} {
set pos -1
set state -1
set error ""
scan [sct result] "e%d p%f %s" state pos error
updateval [sct]/pos $pos
switch $state {
0 {sct enum closed,open}
1 {sct enum close,opened}
2 {sct enum close,open,closing}
3 {sct enum close,open,opening=3}
}
sct update $state
if {"$error" ne ""} {
sct geterror $error
}
return idle
}