judge_local.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package pkg
  2. import (
  3. "cicv-data-closedloop/aarch64/pjibot_guide/common/config"
  4. "encoding/json"
  5. "fmt"
  6. "log"
  7. "time"
  8. )
  9. // idle 空闲状态,此状态下机器人可进行任务下发
  10. // running 繁忙状态,此状态机器人不接受新任务
  11. // error 错误状态(硬件,不能正常工作的)
  12. func GetLocalStatus(localStatus *string, lastLocalStatus *string, turnLength int) {
  13. defer config.WsConn.Close()
  14. // 轮询本地任务状态
  15. for {
  16. time.Sleep(time.Duration(turnLength) * time.Second)
  17. *lastLocalStatus = *localStatus
  18. _, msg, err := config.WsConn.ReadMessage()
  19. if err != nil {
  20. log.Println("Error in receive:", err)
  21. break
  22. }
  23. //log.Printf("Received: %s\n", msg)
  24. // 将响应字节解码为JSON
  25. var statusMessage config.StatusMessage
  26. err = json.Unmarshal(msg, &statusMessage)
  27. if err != nil {
  28. log.Println("Error in receive:", err)
  29. break
  30. }
  31. fmt.Println("websocket:", config.WsConn)
  32. fmt.Println("statusMessage:", statusMessage)
  33. if statusMessage.Type == "push" && statusMessage.Topic == "robotStatus" {
  34. //fmt.Println("statusMessage:", statusMessage)
  35. data := statusMessage.Data.(map[string]interface{})
  36. //fmt.Println("statusMessage.Data", data)
  37. fmt.Println("statusMessage.Data[\"status\"]", data["status"])
  38. *localStatus = data["status"].(string)
  39. }
  40. }
  41. }