|
@@ -5,7 +5,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"errors"
|
|
|
"github.com/tarm/serial"
|
|
|
- "log"
|
|
|
+ "io"
|
|
|
"smart_tunnel_edge/util/config"
|
|
|
"smart_tunnel_edge/util/logger"
|
|
|
"strconv"
|
|
@@ -73,17 +73,24 @@ func OpenSerialPort(portMap map[int8]*config.SerialPort) error {
|
|
|
}
|
|
|
|
|
|
func listenPort(portCode int8, port *serial.Port) {
|
|
|
- //fmt.Println("监听串口...")
|
|
|
+ //logger.Logger.Infof("监听串口:【%v】 \n", portCode)
|
|
|
buf := make([]byte, 512)
|
|
|
for {
|
|
|
// 读取数据
|
|
|
n, err := port.Read(buf)
|
|
|
if err != nil {
|
|
|
- log.Printf("读取串口数据失败: %v", err)
|
|
|
+ if err == io.EOF {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ //打印错误并重新开启监听
|
|
|
+ logger.Logger.Errorf("读取串口失败,错误:%v", err)
|
|
|
+ time.Sleep(2 * time.Second)
|
|
|
+ go listenPort(portCode, port)
|
|
|
return
|
|
|
}
|
|
|
if n > 0 {
|
|
|
dataString := hex.EncodeToString(buf[:n])
|
|
|
+ //logger.Logger.Infof("串口=【%v】,读取到的数据:%v", portCode, dataString)
|
|
|
switch {
|
|
|
case len(dataString) == 42 && dataString[2:6] == "0310": //环境传感器数据
|
|
|
shiDu, _ := strconv.ParseInt(dataString[6:10], 16, 0)
|
|
@@ -180,6 +187,9 @@ func listenPort(portCode int8, port *serial.Port) {
|
|
|
// fmt.Printf("错误数据: %s \n", dataString)
|
|
|
}
|
|
|
if config.Instance().Policy.Id == 1 && config.Instance().Nums.EnvNum == len(env) && config.Instance().Nums.OptNum == len(opt) {
|
|
|
+ if len(dataString) == 16 && dataString[2:6] == "0500" && dataString[10:12] == "00" {
|
|
|
+ continue
|
|
|
+ }
|
|
|
envAverage := calculateAverage(env)
|
|
|
optAverage := calculateAverage(opt)
|
|
|
|