Add some more checking and fix drive end bug

This commit is contained in:
Douglas Clowes
2014-09-19 15:14:47 +10:00
parent 9f8d01bebe
commit cf77588861

View File

@ -11,10 +11,15 @@ driver knauer_pump = {
group dummy = {
type = text; readable = 1; data = false; control = false; nxsave = false;
var status = { read_command = 'STATUS?'; read_function = read_status; }
var glp = { read_command = 'GLP?'; read_function = read_glp; }
var glp = { read_command = 'GLP?'; read_function = read_glp; property real_data = ' '; }
}
group pump = {
var remote = {
type = int;
readable = 1; read_command = 'REMOTE?'; read_function = remote_read;
writeable = 1; write_function = remote_write;
}
var state = {
type = text;
readable = 1;
@ -157,7 +162,11 @@ driver knauer_pump = {
set index ${cmd_str}
set data [hgetpropval ${tc_root}/dummy/glp real_data]
set dlist [split ${data} ","]
sct result [lindex ${dlist} ${index}]
if { [llength ${dlist}] > ${index} } {
sct result [lindex ${dlist} ${index}]
} else {
sct result ""
}
set cmd "@@NOSEND@@"
%%}
@ -165,14 +174,21 @@ driver knauer_pump = {
set index ${cmd_str}
set data [hgetpropval ${tc_root}/dummy/status real_data]
set dlist [split ${data} ","]
sct result [lindex ${dlist} ${index}]
if { [llength ${dlist}] > ${index} } {
sct result [lindex ${dlist} ${index}]
} else {
sct result ""
}
set cmd "@@NOSEND@@"
%%}
code read_glp = {%%
set dlist [split [lindex [split ${data} ":"] 1] ","]
sct real_data "[join [lrange ${dlist} 0 end] ,]"
set data "Hidden in real_data property"
if { [string equal -nocase -length 6 ${data} "ERROR:"] } {
} else {
set dlist [split [lindex [split ${data} ":"] 1] ","]
sct real_data "[join [lrange ${dlist} 0 end] ,]"
set data "Hidden in real_data property"
}
%%}
code read_status = {%%
set dlist [split [lindex [split ${data} ":"] 1] ","]
@ -271,6 +287,22 @@ driver knauer_pump = {
}
%%}
code remote_read = {%%
if { [string equal -length 7 ${data} "REMOTE:"] } {
set data [lindex [split ${data} :] 1]
} else {
sct geterror "bad response"
error "[sct geterror]"
}
%%}
code remote_write = {%%
if { ${par} == 0 } {
set cmd "LOCAL"
} else {
set cmd "REMOTE"
}
%%}
code volume_fetch = {%%
set data [hgetpropval ${tc_root}/dummy/glp real_data]
set dlist [split ${data} ","]
@ -284,10 +316,10 @@ driver knauer_pump = {
sct raw_volume ${pump_volume}
if { [hpropexists [sct] base_volume] } {
set pump_volume [expr {${pump_volume} - [sct base_volume]}]
} else {
} elseif { [hpropexists [sct] raw_volume] } {
sct base_volume [sct raw_volume]
}
sct result ${pump_volume}
sct result [format "%.2f" ${pump_volume}]
set cmd "@@NOSEND@@"
%%}
code volume_write = {%%
@ -297,6 +329,13 @@ driver knauer_pump = {
set ratio_tgt [join [split [hval ${tc_root}/pump/ratio_sp] /] ,]
set cmd "RAMP:0,${flow_tgt},${ratio_tgt},0,0,0,0,0,0,0,0,3"
sct pumping 1
set data ${par}
if { ${data} != [sct oldval] } {
debug_log ${tc_root} 1 "[sct] changed to new:${data}, from old:[sct oldval]"
sct oldval ${data}
sct update ${data}
sct utime readtime
}
%%}
code volume_checkpumping = {%%
@ -313,6 +352,7 @@ driver knauer_pump = {
set ratio_tgt [join [split [hval ${tc_root}/pump/ratio_sp] /] ,]
set cmd "RAMP:0,${flow_tgt},${ratio_tgt},0,0,0,0,0,0,0,0,2"
set nextState noResponse
sct driving 0
sct pumping 0
}
}