70 lines
1.4 KiB
Go
70 lines
1.4 KiB
Go
package comms
|
|
|
|
import (
|
|
"adam-gui/config"
|
|
"adam-gui/utils"
|
|
"fmt"
|
|
|
|
"go.bug.st/serial"
|
|
"go.bug.st/serial/enumerator"
|
|
)
|
|
|
|
var BoardBlocked chan bool = make(chan bool, 10)
|
|
var SerialPortToUse string
|
|
|
|
func EnumSerialDevices() []*enumerator.PortDetails {
|
|
var err error
|
|
detectedPorts, err := enumerator.GetDetailedPortsList()
|
|
utils.CheckError(err)
|
|
return detectedPorts
|
|
}
|
|
|
|
func EstablishComms() serial.Port {
|
|
mode := &serial.Mode{
|
|
BaudRate: config.SerialPortBaudRate,
|
|
}
|
|
port, err := serial.Open(SerialPortToUse, mode)
|
|
utils.CheckError(err)
|
|
return port
|
|
}
|
|
|
|
func Measure(port serial.Port, verb string) string {
|
|
_, err := port.Write([]byte(verb + "\r\n"))
|
|
utils.CheckError(err)
|
|
buff := make([]byte, 100)
|
|
n := 0
|
|
for {
|
|
n, err = port.Read(buff)
|
|
utils.CheckError(err)
|
|
if n == 0 {
|
|
break
|
|
}
|
|
}
|
|
/*re := regexp.MustCompile("[0-9.-+]+")
|
|
fmt.Printf("println: %v\n", strings.Join(re.FindAllString("+4122000.kg", -1), ""))*/
|
|
return string(buff[:n-2]) // remove \r\n
|
|
}
|
|
|
|
func Tare(port serial.Port) {
|
|
_, err := port.Write([]byte("Z\r\n"))
|
|
utils.CheckError(err)
|
|
}
|
|
|
|
func Hold(port serial.Port) {
|
|
_, err := port.Write([]byte("H\r\n"))
|
|
utils.CheckError(err)
|
|
}
|
|
|
|
func SetDefaultSerialPort() bool {
|
|
found := false
|
|
serialDevices := EnumSerialDevices()
|
|
for _, port := range serialDevices {
|
|
fmt.Printf("%s %s\n", port.SerialNumber, port.Name)
|
|
if port.SerialNumber == config.DefaultPortSerialNumber {
|
|
SerialPortToUse = port.Name
|
|
found = true
|
|
}
|
|
}
|
|
return found
|
|
}
|