Bladeren bron

新增GetUsbCameraCount()获取USB口相机数量的函数

niujiuru 1 maand geleden
bovenliggende
commit
c646c1485d
4 gewijzigde bestanden met toevoegingen van 41 en 1 verwijderingen
  1. 3 0
      .vscode/settings.json
  2. 6 0
      mvs_u_takephoto/bridge.go
  3. 29 1
      mvs_u_takephoto/takephoto.c
  4. 3 0
      mvs_u_takephoto/takephoto.h

+ 3 - 0
.vscode/settings.json

@@ -8,5 +8,8 @@
     "*.go": "go",
     "*.sh": "shellscript",
     "*.md": "markdown",
+    "compare": "c",
+    "limits": "c",
+    "new": "c"
   }
 }

+ 6 - 0
mvs_u_takephoto/bridge.go

@@ -39,6 +39,12 @@ func setSysUsbfsMemSize(val int) int {
 	return ret
 }
 
+// 获取当前连接在USB口上的相机数, 失败返回: <0值, 成功返回: >=0
+func GetUsbCameraCount() int {
+	ret := int(C.GetUsbCameraCount())
+	return ret
+}
+
 // 单次执行相机拍照, 并保存到文件, 成功返回: 本次拍照图像的水印信息, 失败返回: 错误原因和空的水印信息
 // 参数说明:
 // "imgType"         - 图像保存类型: 1-".bmp", 2-".jpg"

+ 29 - 1
mvs_u_takephoto/takephoto.c

@@ -86,7 +86,7 @@ int TakePhoto(EImgType imgType, const char *saveImgFilename, int timeout, SImgMa
     goto end_p;
   }
 
-  ret = MV_CC_EnumDevices(MV_USB_DEVICE, &devList); // 目前只枚举USB连接的相机
+  ret = MV_CC_EnumDevices(MV_USB_DEVICE, &devList);
   if(MV_OK != ret)
   {
     sw_log_error("[%s] USB口枚举相机失败, errCode=0x%x!!", MODULE_NAME, ret);
@@ -279,3 +279,31 @@ int SetSysUsbfsMemSize(int val)
   if(val >= 0 && sw_file_update(usbfsFile, "w", buf, strlen(buf)) == strlen(buf)) return 0;
   else return -1;
 }
+
+// 获取当前连接在USB口上的相机数, 失败返回: <0值, 成功返回: >=0
+int GetUsbCameraCount()
+{
+  MV_CC_DEVICE_INFO_LIST devList = { 0 };
+  MV_CC_DEVICE_INFO *pDevInfo; int ret;
+
+  ret = MV_CC_Initialize();
+  if(MV_OK != ret)
+  {
+    sw_log_error("[%s] 相机SDK初始化失败, errCode=0x%x!!", MODULE_NAME, ret);
+    goto end_p;
+  }
+
+  ret = MV_CC_EnumDevices(MV_USB_DEVICE, &devList);
+  if(MV_OK != ret)
+  {
+    sw_log_error("[%s] USB口枚举相机失败, errCode=0x%x!!", MODULE_NAME, ret);
+    goto end_p;
+  }
+
+  ret = devList.nDeviceNum;
+
+end_p:
+  MV_CC_Finalize();
+
+  return ret;
+}

+ 3 - 0
mvs_u_takephoto/takephoto.h

@@ -33,6 +33,9 @@ int GetSysUsbfsMemCurrentSize();
 // 设置系统新的USBFS内存大小(MB), 成功返回: 0值, 失败返回: -1值
 int SetSysUsbfsMemSize(int val);
 
+// 获取当前连接在USB口上的相机数, 失败返回: <0值, 成功返回: >=0
+int GetUsbCameraCount();
+
 // 单次执行相机拍照, 并保存到文件, 成功返回: 0值, 失败返回:非0值
 // "imgType"         - 获取图像类型
 // "saveImgFilename" - 保存的文件名