|
|
@@ -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
|