52 lines
846 B
Tcl
52 lines
846 B
Tcl
namespace eval pfeiffertpg {} {
|
|
}
|
|
|
|
proc stdConfig::pfeiffertpg {} {
|
|
controller std "" 5
|
|
prop read pfeiffertpg::read
|
|
prop update pfeiffertpg::update
|
|
|
|
obj TPG rd
|
|
prop cmd PR1
|
|
kids TPG {
|
|
# node prx rd -text
|
|
# prop cmd PRX
|
|
|
|
node sp1 rd -text
|
|
prop cmd SP1
|
|
|
|
node sp2 rd -text
|
|
prop cmd SP2
|
|
|
|
node sps rd -text
|
|
prop cmd SPS
|
|
}
|
|
}
|
|
|
|
proc pfeiffertpg::read {} {
|
|
sct send "[sct cmd]\r\n"
|
|
return update
|
|
}
|
|
|
|
proc pfeiffertpg::update {} {
|
|
set ack x
|
|
scan [sct result] %c ack
|
|
if {$ack == 6} {
|
|
sct send "\005"
|
|
return pfeiffertpg::update2
|
|
}
|
|
if {$ack == 21} {
|
|
error "NAK received on [sct cmd]"
|
|
}
|
|
return [pfeiffertpg::read]
|
|
}
|
|
|
|
proc pfeiffertpg::update2 {} {
|
|
if {[sct cmd] eq "PR1"} {
|
|
sct update [lindex [split [sct result] ,] 1]
|
|
} else {
|
|
sct update [sct result]
|
|
}
|
|
return idle
|
|
}
|