Преглед изворни кода

add HuaLong & Cadence trigger

zwh пре 10 месеци
родитељ
комит
0afa0baa37
1 измењених фајлова са 86 додато и 0 уклоњено
  1. 86 0
      trigger/pjisuv/cicv_ticker/HuaLong/main/HuaLong.go

+ 86 - 0
trigger/pjisuv/cicv_ticker/HuaLong/main/HuaLong.go

@@ -0,0 +1,86 @@
+package main
+
+import (
+	"cicv-data-closedloop/pjisuv_ticker"
+	"fmt"
+	"sync"
+	"time"
+)
+
+var (
+	threshold float64 = 60.0
+)
+
+// 定时任务触发器固定的
+func Topic() string {
+	return pjisuv_ticker.TickerTopic
+}
+
+// ******* 禁止存在下划线_
+// 触发器标记
+
+func Label() string {
+	return "HuaLong"
+}
+
+func Rule(shareVars *sync.Map) {
+	defer func() {
+		if r := recover(); r != nil {
+			fmt.Println("Recovered from panic:", r)
+		}
+	}()
+	// 1 使用goroutine
+	go func(shareVars *sync.Map) {
+		// 2 定义触发器的间隔时间
+		ticker := time.NewTicker(time.Duration(6) * time.Second)
+		defer ticker.Stop()
+		// 3 运行一个无限循环
+		for {
+			select {
+			// 定时器触发时执行的代码
+			case <-ticker.C:
+				FinalCallback(shareVars)
+
+			}
+		}
+	}(shareVars)
+}
+func countChanges(slice []float64) int {
+	count := 0
+lable1:
+	for i := 0; i < len(slice); {
+		if slice[i] <= -threshold || slice[i] > threshold {
+			for j := 0; j < len(slice)-i-1; j++ {
+				if (slice[i] <= -threshold && slice[1+i+j] >= threshold) || (slice[i] >= threshold && slice[1+i+j] <= -threshold) {
+					count++
+					i = i + j + 1
+					continue lable1
+				}
+			}
+			break lable1
+		} else {
+			i++
+		}
+
+	}
+	return count
+}
+
+func FinalCallback(shareVars *sync.Map) {
+	OutsideWorkshopFlag, ok := shareVars.Load("OutsideWorkshopFlag")
+	egoSteeringRealOfDataRead, ok1 := shareVars.Load("egoSteeringRealOfDataRead")
+
+	if ok && ok1 && OutsideWorkshopFlag.(bool) == true {
+		count := countChanges(egoSteeringRealOfDataRead.([]float64))
+		if count >= 3 {
+			event_lable := "HuaLong"
+			fmt.Println(event_lable)
+			pjisuv_ticker.TickerChan <- pjisuv_ticker.TickInfo{FaultLabel: Label(), FaultHappenTime: pjisuv_ticker.GetNowTimeCustom()}
+		}
+
+		egoSteeringRealOfDataRead = []float64{}
+		shareVars.Store("egoSteeringRealOfDataRead", egoSteeringRealOfDataRead)
+
+	}
+
+}