main.go 2.4 KB

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