main.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package main
  2. import (
  3. "cicv-data-closedloop/common/util"
  4. "errors"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9. // 用于执行rosbag命令
  10. func main() {
  11. //// 定义一个字符串切片来存储转换后的结果
  12. //envVars := []string{
  13. // "C_INCLUDE_PATH=/usr/include/drm:",
  14. // "USER=root",
  15. // "ROS_PACKAGE_PATH=/opt/ros/melodic/share",
  16. // "LD_LIBRARY_PATH=/opt/ros/melodic/lib:/opt/ros/melodic/lib/aarch64-linux-gnu",
  17. // "ROS_ETC_DIR=/opt/ros/melodic/etc/ros",
  18. // "SHLVL=1",
  19. // "HOME=/root",
  20. // "ROS_PYTHON_VERSION=2",
  21. // "PCMANFM_OUTLINE_MODE=on",
  22. // "CPLUS_INCLUDE_PATH=/usr/include/drm:",
  23. // "ROS_DISTRO=melodic",
  24. // "ROS_VERSION=1",
  25. // "PKG_CONFIG_PATH=/opt/ros/melodic/lib/pkgconfig",
  26. // "PATH=/opt/ros/melodic/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/root/go/bin",
  27. // "ROS_ROOT=/opt/ros/melodic/share/ros",
  28. // "ROSLISP_PACKAGE_DIRECTORIES=",
  29. // "ROS_MASTER_URI=http://192.168.1.104:11311",
  30. // "PYTHONPATH=/opt/ros/melodic/lib/python2.7/dist-packages",
  31. // "ROS_HOSTNAME=192.168.1.104",
  32. // "CMAKE_PREFIX_PATH=/opt/ros/melodic",
  33. //}
  34. //// 1 启动父命令
  35. //c_log.GlobalLogger.Info("record 环境变量为:", config.RosbagEnvs)
  36. //
  37. //cmd, _ := util.ExecuteWithEnvAndDirAsync(config.RosbagEnvs, config.CloudConfig.BagDataDir, config.RosbagPath, command...)
  38. //recordProcessPid := cmd.Process.Pid
  39. //recordSubProcessPid, _ := util.GetSubProcessPid(recordProcessPid)
  40. //c_log.GlobalLogger.Info("获取进程 ", recordProcessPid, " 的子进程的pid:", recordSubProcessPid)
  41. for {
  42. time.Sleep(time.Duration(2) * time.Second)
  43. snCode, err := getSnCode()
  44. if err != nil {
  45. fmt.Println("获取sn码失败:", err.Error())
  46. continue
  47. }
  48. fmt.Println("SN码为:", snCode)
  49. break
  50. }
  51. }
  52. func getSnCode() (string, error) {
  53. rosparamPath := "/opt/ros/melodic/bin/rosparam"
  54. var command []string
  55. command = append(command, "get")
  56. command = append(command, "sn")
  57. _, snOutput, err := util.ExecuteSync(rosparamPath, command...)
  58. if err != nil {
  59. return "", errors.New("执行获取sn码命令" + rosparamPath + util.ToString(command) + "出错:" + util.ToString(err))
  60. }
  61. fmt.Println("执行获取sn码命令", command, "成功,结果为:", snOutput)
  62. snCode := strings.Replace(strings.Replace(snOutput, " ", "", -1), "\n", "", -1)
  63. return snCode, nil
  64. }