Selaa lähdekoodia

优化修改代码

niujiuru 1 päivä sitten
vanhempi
commit
4f72a7d63c
3 muutettua tiedostoa jossa 27 lisäystä ja 1 poistoa
  1. 1 0
      air720u/air720u.c
  2. 1 0
      ec200u/ec200u.c
  3. 25 1
      hk_takephoto/takephoto.go

+ 1 - 0
air720u/air720u.c

@@ -222,6 +222,7 @@ int Air720U_Repower()
 {
   sysfs_write("/sys/class/gpio/unexport",             "116");                // 撤销原导出
   if(sysfs_write("/sys/class/gpio/export",            "116") < 0) return -2; // 重设新导出
+  sw_thrd_delay(50);                                                         // 等导出完成-毫秒
   if(sysfs_write("/sys/class/gpio/gpio116/direction", "out") < 0) return -3; // 设置为输出
   if(sysfs_write("/sys/class/gpio/gpio116/value",       "1") < 0) return -4; // 输出高电平-断电
   sw_thrd_delay(5000);                                                       // 等一段时间-毫秒

+ 1 - 0
ec200u/ec200u.c

@@ -244,6 +244,7 @@ int EC200U_Repower()
 {
   sysfs_write("/sys/class/gpio/unexport",             "116");                // 撤销原导出
   if(sysfs_write("/sys/class/gpio/export",            "116") < 0) return -2; // 重设新导出
+  sw_thrd_delay(50);                                                         // 等导出完成-毫秒
   if(sysfs_write("/sys/class/gpio/gpio116/direction", "out") < 0) return -3; // 设置为输出
   if(sysfs_write("/sys/class/gpio/gpio116/value",       "1") < 0) return -4; // 输出高电平-断电
   sw_thrd_delay(5000);                                                       // 等一段时间-毫秒

+ 25 - 1
hk_takephoto/takephoto.go

@@ -1,6 +1,7 @@
 package hk_takephoto
 
 import (
+	"os"
 	"syscall"
 	"time"
 
@@ -33,6 +34,21 @@ func setupIface(iface, cidr string) error {
 	return nil
 }
 
+func powerOnGigeCamera() error {
+	_ = os.WriteFile("/sys/class/gpio/unexport", []byte("22"), 0644)
+	if err := os.WriteFile("/sys/class/gpio/export", []byte("22"), 0644); err != nil {
+		return err
+	}
+	time.Sleep(50 * time.Millisecond)
+	if err := os.WriteFile("/sys/class/gpio/gpio22/direction", []byte("out"), 0644); err != nil {
+		return err
+	}
+	if err := os.WriteFile("/sys/class/gpio/gpio22/value", []byte("1"), 0644); err != nil {
+		return err
+	}
+	return nil
+}
+
 // 相机模块初始化, 设置必要的运行环境参数, 只有成功才能进行后续的拍照操作
 func ModuleInit() bool {
 	myUsbfsMemSize := 200 // 单位: 兆字节
@@ -57,9 +73,17 @@ func ModuleInit() bool {
 		return false
 	}
 
+	if err := powerOnGigeCamera(); err != nil { // RTU板子上连接的网口相机电源由GPIO22控制, 默认是关闭的, 若相机由RTU板供电,需打开
+		baseapp.Logger.Errorf(
+			"[%s] 打开网口相机的电源失败: %v",
+			MODULE_NAME, err,
+		)
+		return false
+	}
+
 	if err := setupIface("eth1", "192.168.100.123/24"); err != nil { // 通过"eth1"连接网口相机, 相机IP地址必须与"eth1"在同一网段
 		baseapp.Logger.Errorf(
-			"[%s] 设置网口 %s 的 IP 地址失败: %v",
+			"[%s] 设置网口%s的IP地址失败: %v",
 			MODULE_NAME, "eth1", err,
 		)
 		return false