judge_local.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. type StatusMessage struct {
  10. Type string `json:"type"`
  11. Topic string `json:"topic"`
  12. Time int64 `json:"time"`
  13. Data interface{} `json:"data"`
  14. }
  15. func GetLocalStatus(localStatus *string) {
  16. for {
  17. time.Sleep(2 * time.Second)
  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 StatusMessage
  26. err = json.Unmarshal(msg, &statusMessage)
  27. if err != nil {
  28. log.Println("Error in receive:", err)
  29. break
  30. }
  31. fmt.Println("statusMessage:", statusMessage)
  32. if statusMessage.Type == "push" && statusMessage.Topic == "robotStatus" {
  33. data := statusMessage.Data.(map[string]interface{})
  34. fmt.Println("statusMessage.Data", data)
  35. fmt.Println("statusMessage.Data[\"taskStatus\"]", data["taskStatus"])
  36. *localStatus = data["taskStatus"].(string)
  37. }
  38. }
  39. }