takephoto.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package hk_takephoto
  2. import (
  3. "syscall"
  4. "time"
  5. "github.com/vishvananda/netlink"
  6. "hnyfkj.com.cn/rtu/linux/baseapp"
  7. )
  8. // 相机模块的名称
  9. const MODULE_NAME = "TakePhoto"
  10. func SetupIface(iface, cidr string) error {
  11. link, err := netlink.LinkByName(iface)
  12. if err != nil {
  13. return err
  14. }
  15. if err = netlink.LinkSetUp(link); err != nil {
  16. return err
  17. }
  18. addr, err := netlink.ParseAddr(cidr)
  19. if err != nil {
  20. return err
  21. }
  22. if err = netlink.AddrAdd(link, addr); err != nil && err != syscall.EEXIST {
  23. return err
  24. }
  25. return nil
  26. }
  27. // 相机模块初始化, 设置必要的运行环境参数, 只有成功才能进行后续的拍照操作
  28. func ModuleInit() bool {
  29. myUsbfsMemSize := 200 // 单位: 兆字节
  30. bSetOK := false
  31. for range 5 {
  32. if baseapp.IsExit1() {
  33. return false
  34. }
  35. if getSysUsbfsMemCurrentSize() >= myUsbfsMemSize {
  36. bSetOK = true
  37. break // 已满足启动拍照程序的条件, 退出循环
  38. }
  39. ret := setSysUsbfsMemSize(myUsbfsMemSize)
  40. if ret == -1 {
  41. time.Sleep(1 * time.Second)
  42. }
  43. }
  44. if !bSetOK {
  45. baseapp.Logger.Errorf("[%s] 无法将系统\"usbfs\"的内存大小设置为: %dMB, 相机模块初始化失败!!", MODULE_NAME, myUsbfsMemSize)
  46. return false
  47. }
  48. if err := SetupIface("eth1", "192.168.100.123/24"); err != nil {
  49. baseapp.Logger.Errorf(
  50. "[%s] 设置网口 %s 的 IP 地址失败: %v",
  51. MODULE_NAME, "eth1", err,
  52. )
  53. return false
  54. }
  55. return true
  56. }