initial commit
This commit is contained in:
110
tcl/drivers/ilm.tcl
Normal file
110
tcl/drivers/ilm.tcl
Normal file
@ -0,0 +1,110 @@
|
||||
namespace eval ilm {} {
|
||||
}
|
||||
|
||||
proc stdConfig::ilm {{cfg 1}} {
|
||||
set nodes {{} 0 0}
|
||||
set label "LHe level meter settings"
|
||||
switch $cfg {
|
||||
2 - 211 {
|
||||
set nodes {{} /n2 0}
|
||||
set label "level meter settings"
|
||||
}
|
||||
220 {
|
||||
set nodes {{} /he 0}
|
||||
}
|
||||
221 {
|
||||
set label "level meter settings"
|
||||
set nodes {{} /he /n2}
|
||||
}
|
||||
}
|
||||
|
||||
controller std \r 10
|
||||
|
||||
prop startcmd V
|
||||
|
||||
obj ilm200 rd
|
||||
prop readcmd "R1"
|
||||
prop update ilm::update
|
||||
GraphAdd lev % He_level brown
|
||||
|
||||
kids $label {
|
||||
|
||||
# mode works only for first He channel
|
||||
|
||||
node mode -int wr
|
||||
prop enum "slow,fast (switches to slow automatically after filling)"
|
||||
prop read ilm::rdmode
|
||||
prop write ilm::wrmode
|
||||
prop nodes $nodes
|
||||
|
||||
if {[lindex $nodes 1] eq "/he"} {
|
||||
node he rd
|
||||
prop readcmd "R2"
|
||||
prop update ilm::update
|
||||
}
|
||||
|
||||
if {[lindex $nodes 1] eq "/n2"} {
|
||||
node n2 rd
|
||||
prop readcmd "R2"
|
||||
prop update ilm::update
|
||||
GraphAdd lev.n2 % N2_level black
|
||||
}
|
||||
|
||||
if {[lindex $nodes 2] eq "/n2"} {
|
||||
node he rd
|
||||
prop readcmd "R3"
|
||||
prop update ilm::update
|
||||
GraphAdd lev.n2 % N2_level black
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
proc ilm::update {} {
|
||||
stdSct::scanf "R%d" level
|
||||
sct update [expr $level * 0.1]
|
||||
return idle
|
||||
}
|
||||
|
||||
proc ilm::rdmode {} {
|
||||
sct send X
|
||||
return ilm::updmode
|
||||
}
|
||||
|
||||
proc ilm::updmode {} {
|
||||
stdSct::scanf "X%c%c%cS%2x%2x%2xR" x1 x2 x3 s1 s2 s3
|
||||
set chan 0
|
||||
if {$s1 & 2} {
|
||||
sct update 1
|
||||
} else {
|
||||
sct update 0
|
||||
}
|
||||
foreach n [sct nodes] {
|
||||
incr chan
|
||||
if {$n ne "0"} {
|
||||
if {[set x$chan] == 9} {
|
||||
hsetprop [sct parent]$n geterror "error (probably sensor not connected)"
|
||||
}
|
||||
}
|
||||
}
|
||||
return idle
|
||||
}
|
||||
|
||||
proc ilm::wrmode {} {
|
||||
sct send C3
|
||||
return ilm::wrmode2
|
||||
}
|
||||
|
||||
proc ilm::wrmode2 {} {
|
||||
if {[sct target]} {
|
||||
sct send T1
|
||||
} else {
|
||||
sct send S1
|
||||
}
|
||||
return ilm::wrmode3
|
||||
}
|
||||
|
||||
proc ilm::wrmode3 {} {
|
||||
sct send C0
|
||||
return stdSct::completeUpdate
|
||||
}
|
Reference in New Issue
Block a user