aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gui/widget/widget.go17
-rw-r--r--main.go21
2 files changed, 26 insertions, 12 deletions
diff --git a/gui/widget/widget.go b/gui/widget/widget.go
index f9fe658..82f67c6 100644
--- a/gui/widget/widget.go
+++ b/gui/widget/widget.go
@@ -89,31 +89,30 @@ Loop:
}
}
-func Output(val <-chan uint, r image.Rectangle, env gui.Env, wg *sync.WaitGroup) {
+func Output(val <-chan float64, r image.Rectangle, env gui.Env, wg *sync.WaitGroup) {
defer wg.Done()
defer close(env.Draw())
- redraw := func(n uint) func(draw.Image) image.Rectangle {
+ redraw := func(v float64) func(draw.Image) image.Rectangle {
return func(drw draw.Image) image.Rectangle {
- drawText([]byte(fmt.Sprint(n)), drw, r, BLACK, WHITE)
+ drawText([]byte(fmt.Sprintf("%.3f", v)), drw, r, BLACK, WHITE)
return r
}
}
+ var v float64 = 0.0
- var n uint = 0
-
- env.Draw() <- redraw(n)
+ env.Draw() <- redraw(v)
Loop:
for {
select {
- case n = <-val:
- env.Draw() <- redraw(n)
+ case v = <-val:
+ env.Draw() <- redraw(v)
case event, ok := <-env.Events():
if !ok { // channel closed
break Loop
}
if event, ok := event.(win.WiFocus); ok && event.Focused {
- env.Draw() <- redraw(n)
+ env.Draw() <- redraw(v)
}
}
}
diff --git a/main.go b/main.go
index 51f2667..6492533 100644
--- a/main.go
+++ b/main.go
@@ -22,6 +22,8 @@ const (
R = 8314.3 // gas constant
M = 28.962 // molar mass of air
+
+ WIDEST_LABEL = "mass flow (kg/min)"
)
func run() {
@@ -36,6 +38,8 @@ func run() {
veChan [POINTS]chan uint
imapChan [POINTS]chan uint
actChan [POINTS]chan uint
+
+ flowChan [POINTS]chan float64
)
defer wg.Wait()
defer focus.Close()
@@ -45,11 +49,13 @@ func run() {
veChan[i] = make(chan uint)
imapChan[i] = make(chan uint)
actChan[i] = make(chan uint)
-
defer close(rpmChan[i])
defer close(veChan[i])
defer close(imapChan[i])
defer close(actChan[i])
+
+ flowChan[i] = make(chan float64)
+ defer close(flowChan[i])
}
w, err := win.New(win.Title("volute"), win.Size(WIDTH, HEIGHT))
@@ -61,7 +67,7 @@ func run() {
defer close(env.Draw())
bounds := layout.Grid{
- Rows: []int{2, 7, 7, 7, 7},
+ Rows: []int{2, 7, 7, 7, 7, 7},
Background: color.Gray{255},
Gap: 1,
Split: split,
@@ -90,6 +96,8 @@ func run() {
go widget.Label("IMAP (mbar)", bounds[4+2*POINTS], mux.MakeEnv(), wg)
wg.Add(1)
go widget.Label("ACT (°C)", bounds[5+3*POINTS], mux.MakeEnv(), wg)
+ wg.Add(1)
+ go widget.Label("mass flow (kg/min)", bounds[6+4*POINTS], mux.MakeEnv(), wg)
for i := 0; i < POINTS; i++ {
wg.Add(1)
go widget.Input( // speed
@@ -123,6 +131,13 @@ func run() {
mux.MakeEnv(),
wg,
)
+ wg.Add(1)
+ go widget.Output( // mass flow
+ flowChan[i],
+ bounds[7+4*POINTS+i],
+ mux.MakeEnv(),
+ wg,
+ )
}
focus.widgets[focus.p.Y][focus.p.X] <- true
@@ -162,7 +177,7 @@ Loop:
func split(elements int, space int) []int {
bounds := make([]int, elements)
widths := []int{
- widget.TextSize("displacement (cc)").X,
+ widget.TextSize(WIDEST_LABEL).X,
widget.TextSize("123456").X,
}
for i := 0; i < elements && space > 0; i++ {