基本逻辑完成

This commit is contained in:
2024-11-01 17:40:34 +08:00
commit f9b9beea4b
40 changed files with 1869 additions and 0 deletions

44
pkg/relay/relay.go Normal file
View File

@@ -0,0 +1,44 @@
package relay
import (
"bufio"
"fmt"
"go.bug.st/serial"
"io"
)
type Device struct {
port serial.Port
}
func (r *Device) Close() error {
return r.port.Close()
}
func (r *Device) On(num int) error {
_, err := io.WriteString(r.port, fmt.Sprintf("AT+OUT%v+1=ON\r\n", num))
return err
}
func (r *Device) Off(num int) error {
_, err := io.WriteString(r.port, fmt.Sprintf("AT+OUT%v+1=OFF\r\n", num))
return err
}
func New(portName string, reader func(msg string)) (*Device, error) {
port, err := serial.Open(portName, &serial.Mode{
BaudRate: 9600,
DataBits: 8,
})
if err != nil {
return nil, err
}
go func() {
for {
r := bufio.NewReader(port)
line, _, _ := r.ReadLine()
reader(string(line))
}
}()
return &Device{port: port}, nil
}