main.go 997 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package main
  2. import (
  3. "cicv-data-closedloop/pjisuv_msgs"
  4. "github.com/bluenviron/goroslib/v2"
  5. "log"
  6. "os"
  7. "os/signal"
  8. "time"
  9. )
  10. func main() {
  11. // create a node and connect to the master
  12. n, err := goroslib.NewNode(goroslib.NodeConf{
  13. Name: "goroslib_pub_fault_info",
  14. MasterAddress: "127.0.0.1:11311",
  15. })
  16. if err != nil {
  17. panic(err)
  18. }
  19. defer n.Close()
  20. // create a publisher
  21. pub, err := goroslib.NewPublisher(goroslib.PublisherConf{
  22. Node: n,
  23. Topic: "/fault_info",
  24. Msg: &pjisuv_msgs.FaultVec{},
  25. })
  26. if err != nil {
  27. panic(err)
  28. }
  29. defer pub.Close()
  30. r := n.TimeRate(1 * time.Second)
  31. c := make(chan os.Signal, 1)
  32. signal.Notify(c, os.Interrupt)
  33. for {
  34. select {
  35. // publish a message every second
  36. case <-r.SleepChan():
  37. msg := &pjisuv_msgs.FaultVec{
  38. InfoVec: []pjisuv_msgs.FaultInfo{
  39. {ErrorCode: 12345}, // 发送故障码12345
  40. },
  41. }
  42. log.Printf("Outgoing: %+v\n", msg)
  43. pub.Write(msg)
  44. // handle CTRL-C
  45. case <-c:
  46. return
  47. }
  48. }
  49. }