|
@@ -1012,6 +1012,32 @@ func PrepareTimeWindowProducerQueue() {
|
|
},
|
|
},
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
+ // 37
|
|
|
|
+ if topic == masterConfig.TopicOfPjiGps && len(masterConfig.RuleOfPjiGps) > 0 {
|
|
|
|
+ subscribers[i], err = goroslib.NewSubscriber(goroslib.SubscriberConf{
|
|
|
|
+ Node: commonConfig.RosNode,
|
|
|
|
+ Topic: topic,
|
|
|
|
+ Callback: func(data *pjisuv_msgs.PerceptionLocalization) {
|
|
|
|
+ subscribersTimeMutexes[i].Lock()
|
|
|
|
+ if time.Since(subscribersTimes[i]).Seconds() > 1 {
|
|
|
|
+ subscribersMutexes[i].Lock()
|
|
|
|
+ faultHappenTime := util.GetNowTimeCustom() // 获取当前故障发生时间
|
|
|
|
+ lastTimeWindow := entity.GetLastTimeWindow() // 获取最后一个时间窗口
|
|
|
|
+ var faultLabel string
|
|
|
|
+ for _, f := range masterConfig.RuleOfPjiGps {
|
|
|
|
+ faultLabel = f(data)
|
|
|
|
+ if faultLabel != "" {
|
|
|
|
+ saveTimeWindow(faultLabel, faultHappenTime, lastTimeWindow)
|
|
|
|
+ subscribersTimes[i] = time.Now()
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ subscribersMutexes[i].Unlock()
|
|
|
|
+ }
|
|
|
|
+ subscribersTimeMutexes[i].Unlock()
|
|
|
|
+ },
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
|
|
if err != nil {
|
|
if err != nil {
|
|
c_log.GlobalLogger.Info("创建订阅者报错:", err)
|
|
c_log.GlobalLogger.Info("创建订阅者报错:", err)
|