int sgl_init_camera(CameraSgl *camera, CameraErrorCallback callback) { IMAQdxCameraInformation info[CAMERA_INFO_NUM]; unsigned int count; IMAQdxError error = 0; camera->error_callback = callback; error = IMAQdxEnumerateCameras (NULL, &count, 0); if (count <= 0) { goto ERROR_MSG; } else { IMAQdxEnumerateCameras (info, &count, 0); dump_camera_info(info, count); } camera->camera_count = count; memcpy(camera->info.camera_info, info, sizeof(info)); return 0; ERROR_MSG: sgl_camera_message_error(error, camera->error_callback); return -1; }
// static function for enumerating cameras int Camera::EnumerateCameras() { uInt32 count = sizeof(camInfo) / sizeof(camInfo[0]); // last parameter is "connectedOnly". Why would we want to enumerate non-connected cameras? IMAQdxEnumerateCameras(camInfo, &count, true); cameraCount = count; printf("Cameras (%u):\n", (unsigned int) cameraCount); for (uInt32 i = 0; i != cameraCount; i++) { cameras[i] = new Camera(i); printf(" %s / %s / %s\n", camInfo[i].VendorName, camInfo[i].ModelName, camInfo[i].InterfaceName); } return cameraCount; }