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

76 lines
1.4 KiB
Tcl

#LS370 simple driver
namespace eval ls370 {} {
}
proc stdConfig::ls370 {} {
variable ctrl
controller std "\n" 5
prop startcmd "*IDN?"
obj calib370 rd
default 0
prop read calib370::read
prop period 15
prop period0 0
kids "Sensor Channels" {
node chan1 upd
prop newline 1
node active1 par 1
prop enum 1
node chan2 upd
node active2 par 1
prop enum 1
node chan3 upd
node active3 par 1
prop enum 1
node chan4 upd
node active4 par 1
prop enum 1
node chan5 upd
node active5 par 1
prop enum 1
node chan6 upd
node active6 par 1
prop enum 1
node chan7 upd
node active7 par 1
prop enum 1
node chan8 upd
node active8 par 1
prop enum 1
}
}
proc ls370::read {} {
if {[sct period] ne [sct period0]} {
[sct controller] poll [sct] [sct period] read read
sct period0 [sct period]
}
if {[hvali [sct]] > 0} {
sct send "RDGK?[hvali [sct]]"
return ls370::update
}
sct update 1
sct send "SCAN 1,0;SCAN?"
return stdSct::complete
}
proc ls370::update {} {
set chan [hvali [sct]]
hdelprop [sct]/chan$chan geterror
hupdate [sct]/chan$chan [sct result]
for {set i 0} {$i < 8} {incr i} {
incr chan
if {$chan > 8} {
set chan 1
}
if {[hvali [sct]/active$chan]} {
break
}
}
sct update $chan
sct send "SCAN $chan,0;SCAN?"
return stdSct::complete
}