소스 검색

优化海康相机模块代码

niujiuru 5 일 전
부모
커밋
a12f240359
3개의 변경된 파일10개의 추가작업 그리고 9개의 파일을 삭제
  1. 2 2
      hk_takephoto/hkcam_reset.c
  2. 6 5
      hk_takephoto/takephoto.c
  3. 2 2
      hk_takephoto/takephoto.go

+ 2 - 2
hk_takephoto/hkcam_reset.c

@@ -10,7 +10,7 @@ static const char *manufacturer = "Hikrobot"; // 制造厂商
 int main(int argc,char *argv[])
 {
   HANDLE hCam = NULL; MV_CC_DEVICE_INFO_LIST devList = { 0 };
-  MV_CC_DEVICE_INFO *pDevInfo; int ret, index = 0; char name[MAX_LINE_CHARS] = { 0 };
+  MV_CC_DEVICE_INFO *pDevInfo; int ret, index = 0; char name[MAX_LINE_CHARS];
 
   // 1, 查找相机
   ret = MV_CC_Initialize();
@@ -43,7 +43,7 @@ findp:
     goto end_p;
   }
 
-  if(0) ;
+  name[0] = '\0'; if(0) ;
   else if(pDevInfo && pDevInfo->nTLayerType == MV_USB_DEVICE /*U口相机*/) strcpy(name, (const char *)pDevInfo->SpecialInfo.stUsb3VInfo.chManufacturerName);
   else if(pDevInfo && pDevInfo->nTLayerType == MV_GIGE_DEVICE/*G口相机*/) strcpy(name, (const char *)pDevInfo->SpecialInfo.stGigEInfo.chManufacturerName);
   if(xstrcasecmp(name, manufacturer) != 0) goto findp;

+ 6 - 5
hk_takephoto/takephoto.c

@@ -92,8 +92,8 @@ getp:
 int TakePhoto(EImgType imgType, const char *saveImgPath, int timeout, SImgMark *pImgMark)
 {
   int fd; char runDir[MAX_PATH_CHARS] = { 0 }, lockFile[MAX_PATH_CHARS+32] = { 0 };
-  int ret; SImgMark imgMark = { 0 }; HANDLE hCam = NULL; PthotoProcCtx ctx = { 0 }; int index = 0;
-  MV_CC_DEVICE_INFO_LIST devList = { 0 }; MV_CC_DEVICE_INFO *pDevInfo = NULL; MVCC_ENUMVALUE exposureMode =  { 0 };
+  int ret, index = 0; SImgMark imgMark = { 0 }; HANDLE hCam = NULL; PthotoProcCtx ctx = { 0 };
+  MV_CC_DEVICE_INFO_LIST devList = { 0 }; MV_CC_DEVICE_INFO *pDevInfo; MVCC_ENUMVALUE exposureMode =  { 0 };
 
   // 1, 占用锁定, 避免同时间拍照
   xGetSelfRunningInfo(runDir, NULL);
@@ -128,6 +128,7 @@ int TakePhoto(EImgType imgType, const char *saveImgPath, int timeout, SImgMark *
     goto end_p;
   }
 
+  char name[MAX_LINE_CHARS]; // 存放相机制造商名字
 findp:
   pDevInfo = devList.pDeviceInfo[index++];
   if(!pDevInfo)
@@ -137,7 +138,7 @@ findp:
     goto end_p;
   }
 
-  char name[MAX_LINE_CHARS] = { 0 }; if(0) ;
+  name[0] = '\0'; if(0) ;
   else if(pDevInfo->nTLayerType == MV_USB_DEVICE /*U口相机*/)
   {
     strcpy(name, (const char *)pDevInfo->SpecialInfo.stUsb3VInfo.chManufacturerName);
@@ -372,11 +373,11 @@ int GetHKCameraCount()
 
   if(ret > 0)
   {
-    int index = 0, cnt = 0; MV_CC_DEVICE_INFO *pDevInfo = NULL; char name[MAX_LINE_CHARS] = { 0 };
+    int index = 0, cnt = 0; MV_CC_DEVICE_INFO *pDevInfo; char name[MAX_LINE_CHARS];
 findp:
     pDevInfo = devList.pDeviceInfo[index++];
     
-    if(0) ;
+    name[0] = '\0'; if(0) ;
     else if(pDevInfo && pDevInfo->nTLayerType == MV_USB_DEVICE /*U口相机*/) strcpy(name, (const char *)pDevInfo->SpecialInfo.stUsb3VInfo.chManufacturerName);
     else if(pDevInfo && pDevInfo->nTLayerType == MV_GIGE_DEVICE/*G口相机*/) strcpy(name, (const char *)pDevInfo->SpecialInfo.stGigEInfo.chManufacturerName);
 

+ 2 - 2
hk_takephoto/takephoto.go

@@ -9,7 +9,7 @@ import (
 )
 
 // 相机模块的名称
-const MODULE_NAME = "TakePhoto"
+const MODULE_NAME = "HikrobotTakePhoto"
 
 func setupIface(iface, cidr string) error {
 	link, err := netlink.LinkByName(iface)
@@ -57,7 +57,7 @@ func ModuleInit() bool {
 		return false
 	}
 
-	if err := setupIface("eth1", "192.168.100.123/24"); err != nil {
+	if err := setupIface("eth1", "192.168.100.123/24"); err != nil { // 通过"eth1"连接网口相机, 相机IP地址必须与"eth1"在同一网段
 		baseapp.Logger.Errorf(
 			"[%s] 设置网口 %s 的 IP 地址失败: %v",
 			MODULE_NAME, "eth1", err,