|
@@ -133,9 +133,10 @@ func tick() {
|
|
urlExamTick,
|
|
urlExamTick,
|
|
map[string]string{"Authorization": "U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM"},
|
|
map[string]string{"Authorization": "U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM"},
|
|
map[string]string{
|
|
map[string]string{
|
|
- "teamName": teamName,
|
|
|
|
- "positionX": util.ToString(cachePositionX),
|
|
|
|
- "positionY": util.ToString(cachePositionY),
|
|
|
|
|
|
+ "teamName": teamName,
|
|
|
|
+ "positionX": util.ToString(cachePositionX),
|
|
|
|
+ "positionY": util.ToString(cachePositionY),
|
|
|
|
+ "equipmentNo": config.LocalConfig.EquipmentNo, // 设备编号
|
|
},
|
|
},
|
|
)
|
|
)
|
|
c_log.GlobalLogger.Infof("队伍 %v 的心跳发送到云端成功。", teamName)
|
|
c_log.GlobalLogger.Infof("队伍 %v 的心跳发送到云端成功。", teamName)
|
|
@@ -144,55 +145,55 @@ func tick() {
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
-// data格式为队伍编号
|
|
|
|
-// 保存单次考试时间区间
|
|
|
|
-func examBeginBak() {
|
|
|
|
- _, _ = goroslib.NewSubscriber(goroslib.SubscriberConf{
|
|
|
|
- Node: commonConfig.RosNode,
|
|
|
|
- Topic: topic,
|
|
|
|
- Callback: func(data *std_msgs.String) {
|
|
|
|
- teamName := data.Data
|
|
|
|
- cacheMutex.Lock()
|
|
|
|
- {
|
|
|
|
- if !util.ContainsKey(cacheTeamName, teamName) { // 1 如果缓存数组中没有此队名,代表考试开始,缓存此队名,和当前时间戳
|
|
|
|
- examBeginTime := time.Now()
|
|
|
|
- cacheTeamName[teamName] = examBeginTime
|
|
|
|
- _, _ = util.HttpPostJsonWithHeaders(
|
|
|
|
- urlExamBegin,
|
|
|
|
- map[string]string{"Authorization": "U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM"},
|
|
|
|
- map[string]string{"teamName": teamName},
|
|
|
|
- )
|
|
|
|
- c_log.GlobalLogger.Infof("队伍 %v 的考试开始。", teamName)
|
|
|
|
- } else { // 2 如果缓存数组中有此队名,代表考试进行中,刷新时间戳
|
|
|
|
- cacheTeamName[teamName] = time.Now()
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- cacheMutex.Unlock()
|
|
|
|
- },
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func examEndBak() {
|
|
|
|
- for {
|
|
|
|
- time.Sleep(time.Duration(1) * time.Second)
|
|
|
|
- cacheMutex.Lock()
|
|
|
|
- {
|
|
|
|
- var keysToDelete []string
|
|
|
|
- for teamName, heartBeatTime := range cacheTeamName {
|
|
|
|
- if time.Since(heartBeatTime) > heartBeatTimeThreshold { // 检查缓存中的队名,如果超过心跳时间,则代表考试结束,删除缓存中的队名
|
|
|
|
- keysToDelete = append(keysToDelete, teamName)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- for _, teamName := range keysToDelete { // 检查缓存中的队名,如果超过心跳时间,则代表考试结束,删除缓存中的队名
|
|
|
|
- delete(cacheTeamName, teamName)
|
|
|
|
- _, _ = util.HttpPostJsonWithHeaders(
|
|
|
|
- urlExamEnd,
|
|
|
|
- map[string]string{"Authorization": "U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM"},
|
|
|
|
- map[string]string{"teamName": teamName},
|
|
|
|
- )
|
|
|
|
- c_log.GlobalLogger.Infof("队伍 %v 的考试结束。", teamName)
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- cacheMutex.Unlock()
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
|
|
+//// data格式为队伍编号
|
|
|
|
+//// 保存单次考试时间区间
|
|
|
|
+//func examBeginBak() {
|
|
|
|
+// _, _ = goroslib.NewSubscriber(goroslib.SubscriberConf{
|
|
|
|
+// Node: commonConfig.RosNode,
|
|
|
|
+// Topic: topic,
|
|
|
|
+// Callback: func(data *std_msgs.String) {
|
|
|
|
+// teamName := data.Data
|
|
|
|
+// cacheMutex.Lock()
|
|
|
|
+// {
|
|
|
|
+// if !util.ContainsKey(cacheTeamName, teamName) { // 1 如果缓存数组中没有此队名,代表考试开始,缓存此队名,和当前时间戳
|
|
|
|
+// examBeginTime := time.Now()
|
|
|
|
+// cacheTeamName[teamName] = examBeginTime
|
|
|
|
+// _, _ = util.HttpPostJsonWithHeaders(
|
|
|
|
+// urlExamBegin,
|
|
|
|
+// map[string]string{"Authorization": "U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM"},
|
|
|
|
+// map[string]string{"teamName": teamName},
|
|
|
|
+// )
|
|
|
|
+// c_log.GlobalLogger.Infof("队伍 %v 的考试开始。", teamName)
|
|
|
|
+// } else { // 2 如果缓存数组中有此队名,代表考试进行中,刷新时间戳
|
|
|
|
+// cacheTeamName[teamName] = time.Now()
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// cacheMutex.Unlock()
|
|
|
|
+// },
|
|
|
|
+// })
|
|
|
|
+//}
|
|
|
|
+//
|
|
|
|
+//func examEndBak() {
|
|
|
|
+// for {
|
|
|
|
+// time.Sleep(time.Duration(1) * time.Second)
|
|
|
|
+// cacheMutex.Lock()
|
|
|
|
+// {
|
|
|
|
+// var keysToDelete []string
|
|
|
|
+// for teamName, heartBeatTime := range cacheTeamName {
|
|
|
|
+// if time.Since(heartBeatTime) > heartBeatTimeThreshold { // 检查缓存中的队名,如果超过心跳时间,则代表考试结束,删除缓存中的队名
|
|
|
|
+// keysToDelete = append(keysToDelete, teamName)
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// for _, teamName := range keysToDelete { // 检查缓存中的队名,如果超过心跳时间,则代表考试结束,删除缓存中的队名
|
|
|
|
+// delete(cacheTeamName, teamName)
|
|
|
|
+// _, _ = util.HttpPostJsonWithHeaders(
|
|
|
|
+// urlExamEnd,
|
|
|
|
+// map[string]string{"Authorization": "U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM"},
|
|
|
|
+// map[string]string{"teamName": teamName},
|
|
|
|
+// )
|
|
|
|
+// c_log.GlobalLogger.Infof("队伍 %v 的考试结束。", teamName)
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// cacheMutex.Unlock()
|
|
|
|
+// }
|
|
|
|
+//}
|