| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package hk_takephoto
- import (
- "syscall"
- "time"
- "github.com/vishvananda/netlink"
- "hnyfkj.com.cn/rtu/linux/baseapp"
- )
- // 相机模块的名称
- const MODULE_NAME = "HikrobotTakePhoto"
- func setupIface(iface, cidr string) error {
- link, err := netlink.LinkByName(iface)
- if err != nil {
- return err
- }
- if err = netlink.LinkSetUp(link); err != nil {
- return err
- }
- addr, err := netlink.ParseAddr(cidr)
- if err != nil {
- return err
- }
- if err = netlink.AddrAdd(link, addr); err != nil && err != syscall.EEXIST {
- return err
- }
- return nil
- }
- // 相机模块初始化, 设置必要的运行环境参数, 只有成功才能进行后续的拍照操作
- func ModuleInit() bool {
- myUsbfsMemSize := 200 // 单位: 兆字节
- bSetOK := false
- for range 5 {
- if baseapp.IsExit1() {
- return false
- }
- if getSysUsbfsMemCurrentSize() >= myUsbfsMemSize {
- bSetOK = true
- break // 已满足启动拍照程序的条件, 退出循环
- }
- ret := setSysUsbfsMemSize(myUsbfsMemSize)
- if ret == -1 {
- time.Sleep(1 * time.Second)
- }
- }
- if !bSetOK {
- baseapp.Logger.Errorf("[%s] 无法将系统\"usbfs\"的内存大小设置为: %dMB, 相机模块初始化失败!!", MODULE_NAME, myUsbfsMemSize)
- return false
- }
- if err := setupIface("eth1", "192.168.100.123/24"); err != nil { // 通过"eth1"连接网口相机, 相机IP地址必须与"eth1"在同一网段
- baseapp.Logger.Errorf(
- "[%s] 设置网口 %s 的 IP 地址失败: %v",
- MODULE_NAME, "eth1", err,
- )
- return false
- }
- return true
- }
|