76 lines
1.4 KiB
Tcl
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
|
|
}
|