瀏覽代碼

优化修改camera模块代码

niujiuru 3 周之前
父節點
當前提交
95fa6c92fe
共有 3 個文件被更改,包括 34 次插入5 次删除
  1. 32 3
      camera/camera.go
  2. 1 1
      main.go
  3. 1 1
      tests/camera/main.go

+ 32 - 3
camera/camera.go

@@ -3,6 +3,7 @@ package camera
 import (
 	"errors"
 	"fmt"
+	"net"
 	"os"
 	"os/exec"
 	"syscall"
@@ -79,19 +80,47 @@ func PingOnce(host string, timeoutSec int) error {
 	return cmd.Run()
 }
 
-func ModuleInit(supportsGigeCamera bool, eth1CIDR, gigeCameraIP string) bool {
+func cidrEqualSemantic(a, b string) (bool, error) {
+	_, na, err := net.ParseCIDR(a)
+	if err != nil {
+		return false, err
+	}
+	_, nb, err := net.ParseCIDR(b)
+	if err != nil {
+		return false, err
+	}
+
+	onesA, bitsA := na.Mask.Size()
+	onesB, bitsB := nb.Mask.Size()
+
+	return na.IP.Equal(nb.IP) && onesA == onesB && bitsA == bitsB, nil
+}
+
+func ModuleInit(supportsGigeCamera bool, eth1CIDR, gigeCameraCIDR string) bool {
 	var err error
+	var gigeCameraIP net.IP
 
 	if !supportsGigeCamera {
 		goto initOK
 	}
 
+	if equal, err := cidrEqualSemantic(eth1CIDR, gigeCameraCIDR); !equal {
+		baseapp.Logger.Errorf("[%s] 网口相机初始化失败: 设备与主机网段不匹配: %v!!", MODULE_NAME, err)
+		return false
+	}
+
 	if err := SetupEth1ForGigeCamera(eth1CIDR); err != nil {
 		baseapp.Logger.Errorf("[%s] 网口相机初始化失败: 设置\"eth1\"地址失败: %v!!", MODULE_NAME, err)
 		return false
 	}
 
-	err = PingOnce(gigeCameraIP, 1)
+	gigeCameraIP, _, err = net.ParseCIDR(gigeCameraCIDR)
+	if err != nil {
+		baseapp.Logger.Errorf("[%s] 网口相机初始化失败: 解析网口-相机地址失败: %v!!", MODULE_NAME, err)
+		return false
+	}
+
+	err = PingOnce(gigeCameraIP.String(), 1)
 	if err == nil {
 		goto initOK
 	}
@@ -107,7 +136,7 @@ func ModuleInit(supportsGigeCamera bool, eth1CIDR, gigeCameraIP string) bool {
 		if baseapp.IsExit1() {
 			return false
 		}
-		err = PingOnce(gigeCameraIP, 1)
+		err = PingOnce(gigeCameraIP.String(), 1)
 		if err == nil {
 			break
 		}

+ 1 - 1
main.go

@@ -114,7 +114,7 @@ func main() {
 	sshd.ModuleInit("", "", "")
 
 	// 05, 初始化相机拍照模块
-	if !camera1.ModuleInit(true, "192.168.100.123/24", "192.168.100.100") { //支持网口
+	if !camera1.ModuleInit(true, "192.168.100.123/24", "192.168.100.100/24") {
 		goto end_p
 	}
 

+ 1 - 1
tests/camera/main.go

@@ -10,7 +10,7 @@ import (
 
 func main() {
 	baseapp.ModuleInit()
-	if !camera.ModuleInit(true, "192.168.100.123/24", "192.168.100.100") {
+	if !camera.ModuleInit(true, "192.168.100.123/24", "192.168.100.100/24") {
 		return
 	}