Files
sea/tcl/archive/drivers/ls370bf.tcl
l_samenv 4d9961fe5c add archive (files probably no longer used)
here we can find old files
2022-08-22 15:28:09 +02:00

87 lines
1.7 KiB
Tcl

#LS370 simple driver
namespace eval ls370bf {} {
}
proc stdConfig::ls370bf {} {
variable ctrl
controller std "\n" 5
prop startcmd "*IDN?"
obj ls370bf rd
default 0
prop read ls370bf::read
prop period 15
prop period0 0
kids "Sensor Channels" {
node set wr
prop writecmd "SETP %g;*OPC?"
prop readcmd "SETP?"
prop readfmt "%g"
node htr rd
prop readcmd "HTR?"
prop readfmt "%g"
node still wr
prop writecmd "STILL %g;*OPC?"
prop readcmd "STILL?"
prop readfmt "%g"
foreach chan {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} {
node active$chan par 1
prop enum 1
if {$chan == 1} {
prop newline 1
}
}
foreach chan {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16} {
node chan$chan upd
if {$chan == 1} {
prop newline 1
}
node res$chan upd
}
}
}
proc ls370bf::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 ls370bf::readR
}
sct update 1
sct send "SCAN 1,0;SCAN?"
return stdSct::complete
}
proc ls370bf::readR {} {
set chan [hvali [sct]]
hdelprop [sct]/chan$chan geterror
hupdate [sct]/chan$chan [sct result]
sct send "RDGR?$chan"
return ls370bf::update
}
proc ls370bf::update {} {
set chan [hvali [sct]]
hdelprop [sct]/res$chan geterror
hupdate [sct]/res$chan [sct result]
for {set i 0} {$i < 16} {incr i} {
incr chan
if {$chan > 16} {
set chan 1
}
if {[hvali [sct]/active$chan]} {
break
}
}
sct update $chan
sct send "SCAN $chan,0;SCAN?"
return stdSct::complete
}