time - Time on in Hours, Minutes, Seconds
loadrt time [count=N|names=name1[,name2...]] |
Time
When either the time.N.start or time.N.pause bits goes true the cycle timer resets and starts to time until time.N.start AND time.N.pause go false. When the time.N.pause bit goes true timing is paused until time.N.pause goes false. If you connect time.N.start to halui.program.is-running and leave time.N.pause unconnected the timer will reset during a pause. See the example connections below for more information.
Time returns the hours, minutes, and seconds that time.N.start is true.
Sample PyVCP code to display the hours:minutes:seconds.
<pyvcp>
<hbox>
<label>
<text>"Cycle Time"</text>
<font>("Helvetica",14)</font>
</label>
<u32>
<halpin>"time-hours"</halpin>
<font>("Helvetica",14)</font>
<format>"2d"</format>
</u32>
<label>
<text>":"</text>
<font>("Helvetica",14)</font>
</label>
<u32>
<halpin>"time-minutes"</halpin>
<font>("Helvetica",14)</font>
<format>"2d"</format>
</u32>
<label>
<text>":"</text>
<font>("Helvetica",14)</font>
</label>
<u32>
<halpin>"time-seconds"</halpin>
<font>("Helvetica",14)</font>
<format>"2d"</format>
</u32>
</hbox> </pyvcp>
In your post-gui.hal file you might use one of the following to connect this timer:
For a new config:
loadrt time
addf time.0 servo-thread
net cycle-timer time.0.start <= halui.program.is-running
net cycle-timer-pause time.0.pause <=
halui.program.is-paused
net cycle-seconds pyvcp.time-seconds <= time.0.seconds
net cycle-minutes pyvcp.time-minutes <= time.0.minutes
net cycle-hours pyvcp.time-hours <= time.0.hours
Previous to
this version if you wanted the timer to continue running
during a pause instead of resetting, you had to use a HAL
NOT component
to invert the halui.program.is-idle pin and connect to
time.N.start as
shown below:
loadrt time
loadrt not
addf time.0 servo-thread
addf not.0 servo-thread
net prog-running not.0.in <= halui.program.is-idle
net cycle-timer time.0.start <= not.0.out
net cycle-seconds pyvcp.time-seconds <= time.0.seconds
net cycle-minutes pyvcp.time-minutes <= time.0.minutes
net cycle-hours pyvcp.time-hours <= time.0.hours
For those who
have this setup already, you can simply add a net connecting
time.N.pause to halui.program.is-paused:
net cycle-timer-pause time.0.pause <= halui.program.is-paused
time.N (requires a floating-point thread)
time.N.start bit in
Timer On
time.N.pause bit in (default: 0)
Pause
time.N.seconds u32 out
Seconds
time.N.minutes u32 out
Minutes
time.N.hours u32 out
Hours
John Thornton, itaib, Moses McKnight
GPL