Преглед изворни кода

优化修改海康相机模块代码, 提高拍照回调退出的可控性

niujiuru пре 2 месеци
родитељ
комит
61ab5dde7c
2 измењених фајлова са 9 додато и 4 уклоњено
  1. 5 0
      hk_takephoto/readme.txt
  2. 4 4
      hk_takephoto/takephoto.c

+ 5 - 0
hk_takephoto/readme.txt

@@ -6,4 +6,9 @@
 - 在具体的项目代码中调用该模块的: “GetHKCameraCount()” 获取当前相机的数量
 - 在具体的项目代码中调用该模块的: “TakePhoto()”        函数拍照并保存文件
 
+备注说明:
+- 该模块初始化时只会初始化U口相机的使用环境,虽然模块本身已支持G口相机使用,
+  但没有在该模块中对G口相机环境进行初始化(耗时、耗电),若需使用,请参考更上
+  层的“camera”模块封装。
+
 2026年1月6日  written by niujiuru

+ 4 - 4
hk_takephoto/takephoto.c

@@ -1,7 +1,7 @@
 #include "takephoto.h"
 
 // 模块名称
-static const char MODULE_NAME[] = "TakePhoto";
+static const char MODULE_NAME[] = "HkTakePhoto";
 
 // 相机类型
 static unsigned int device_type =  MV_GIGE_DEVICE | MV_USB_DEVICE;
@@ -52,9 +52,8 @@ static int PhotoProc(unsigned long wParam, unsigned long lParam) // 线程回调
   PthotoProcCtx *ctx = (PthotoProcCtx *)wParam; MV_FRAME_OUT frame = { 0 }; int ret;
 
   // 1, 触发一次拍照
-getp:
   ret = (setTriggerMode == MV_TRIGGER_MODE_ON) ? MV_CC_SetCommandValue(ctx->hCam, "TriggerSoftware") : MV_OK;
-  if(setTriggerMode == MV_TRIGGER_MODE_ON) sw_thrd_delay(1000); // 软触发后-延时一秒, 等待执行完成
+  if(setTriggerMode == MV_TRIGGER_MODE_ON) sw_thrd_delay(1000);  // 软触发后延时, 预留一些执行时间
 
   // 2, 等待获取图像
   if(MV_OK == ret)
@@ -87,7 +86,7 @@ getp:
       {
         MV_CC_FreeImageBuffer(ctx->hCam, &frame);
         ctx->lastExpTime = curExpTime; if(0 == ctx->expStableCnt) ctx->expStableCnt = 1;
-        sw_thrd_delay(1); goto getp; // 继续取图像
+        ret = 1; goto retp; /// 继续取下一帧
       }
     }
 
@@ -105,6 +104,7 @@ getp:
     ctx->rCode = ret; sw_signal_give(ctx->hESig); ret = -1; break;
   }
 
+retp:
   return ret;
 }