Skip to content
This repository was archived by the owner on Dec 14, 2023. It is now read-only.

Commit

Permalink
add basic windows port detection (#24)
Browse files Browse the repository at this point in the history
* add basic windows port detection

* Update app.go
  • Loading branch information
charlie-haley authored May 9, 2021
1 parent eb474c7 commit 980283e
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 6 deletions.
6 changes: 3 additions & 3 deletions src/flowcontrol/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import (
"time"
"fmt"

"github.com/charlie-haley/flowcontrol/flwserial"
"github.com/charlie-haley/flowcontrol/setup"
"github.com/tarm/serial"
"github.com/wailsapp/wails"
)

Expand All @@ -38,8 +38,8 @@ type wailsstruct struct {

func (w *wailsstruct) WailsInit(runtime *wails.Runtime) error {
w.runtime = runtime
c := &serial.Config{Name: "COM6", Baud: 9600}
s, err := serial.OpenPort(c)

s, err := flwserial.GetValidPort()
//Go Routine for fetching stats from the flowcontrol-monitor application
go func() {
for {
Expand Down
12 changes: 12 additions & 0 deletions src/flowcontrol/flwserial/flwserial_linux.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// +build linux

package flwserial


import (
"errors"
)

func SetupCmd() {
return nil, errors.New("Not implemented")
}
54 changes: 54 additions & 0 deletions src/flowcontrol/flwserial/flwserial_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// +build windows

package flwserial

import (
"golang.org/x/sys/windows/registry"
"github.com/tarm/serial"
"log"
"bufio"
"errors"
)

func GetValidPort() (*serial.Port, error) {
//Find active serial ports from registry key
k, err := registry.OpenKey(registry.LOCAL_MACHINE, `HARDWARE\\DEVICEMAP\\SERIALCOMM`, registry.QUERY_VALUE)
if err != nil {
log.Fatal(err)
}
defer k.Close()
ki, err := k.Stat()
if err != nil {
log.Fatal(err)
}
r, err := k.ReadValueNames(int(ki.ValueCount))
if err != nil {
log.Fatal(err)
}
kvalue := make([]string, ki.ValueCount)
for i, test := range r {
q, _, err := k.GetStringValue(test)
if err != nil {
log.Fatal(err)
}
kvalue[i] = q
}
var s *serial.Port
for _, element := range kvalue {
c := &serial.Config{Name: element, Baud: 9600}
s, err = serial.OpenPort(c)
if err != nil {
log.Print("Can't connect to port")
continue
}
scanner := bufio.NewScanner(s)
for scanner.Scan() {
text := scanner.Text()
//Rubbish way of checking if the device is correct
if text[0] == '{' {
return s, nil
}
}
}
return nil, errors.New("Error finding valid port")
}
3 changes: 2 additions & 1 deletion src/flowcontrol/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ go 1.16

require (
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07
github.com/wailsapp/wails v1.16.0
github.com/wailsapp/wails v1.16.3
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd
)
4 changes: 2 additions & 2 deletions src/flowcontrol/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ github.com/syossan27/tebata v0.0.0-20180602121909-b283fe4bc5ba h1:2DHfQOxcpWdGf5
github.com/syossan27/tebata v0.0.0-20180602121909-b283fe4bc5ba/go.mod h1:iLnlXG2Pakcii2CU0cbY07DRCSvpWNa7nFxtevhOChk=
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 h1:UyzmZLoiDWMRywV4DUYb9Fbt8uiOSooupjTq10vpvnU=
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
github.com/wailsapp/wails v1.16.0 h1:zi5qaL+ezlf++EdGA0eyF/sofDYpoA2yKGlnFWinVyk=
github.com/wailsapp/wails v1.16.0/go.mod h1:aADbAvTzZrKGd4Td7d1l4Dp5Hx7lLJEvVH7guIHoDf8=
github.com/wailsapp/wails v1.16.3 h1:wuJJU9PnnrrDvhh+DTr1MfqUSR1PDR5H+RilM5Wwd7c=
github.com/wailsapp/wails v1.16.3/go.mod h1:aADbAvTzZrKGd4Td7d1l4Dp5Hx7lLJEvVH7guIHoDf8=
golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
Expand Down

0 comments on commit 980283e

Please sign in to comment.