Beispiel #1
0
int sgl_open_camera(char *interface_name, CameraSgl *camera)
{
	IMAQdxSession 	session_id;
	IMAQdxError 	error = 0;
	int 			display_win_num;
	int i = 0; 

	error = IMAQdxOpenCamera (interface_name, IMAQdxCameraControlModeController, &session_id);
	if (error) {
		goto ERROR_MSG;
	}

	imaqGetWindowHandle (&display_win_num);

	// OK,则返回正确的CameraSgl
	camera->session_id = session_id;
	camera->display_win_num = display_win_num;
	camera->visible = TRUE;
	size_t size = sizeof(camera->interface_name);
	memset(camera->interface_name, 0, size);
	strncpy(camera->interface_name, interface_name, size);

	for (i = 0; i < camera->camera_count; i++)  {
		if (0 == strcmp(interface_name, camera->info.camera_info[i].InterfaceName)) {
			camera->info.info_id = i;
		}
	}
	
	// 获取相机的信息
	IMAQdxGetAttribute(camera->session_id, IMAQdxAttributeWidth, IMAQdxValueTypeU32, &camera->info.width);
	IMAQdxGetAttribute(camera->session_id, IMAQdxAttributeHeight, IMAQdxValueTypeU32, &camera->info.height);
	IMAQdxGetAttribute(camera->session_id, IMAQdxAttributeBayerGainR, IMAQdxValueTypeF64, &camera->info.R);
	IMAQdxGetAttribute(camera->session_id, IMAQdxAttributeBayerGainG, IMAQdxValueTypeF64, &camera->info.G);
	IMAQdxGetAttribute(camera->session_id, IMAQdxAttributeBayerGainB, IMAQdxValueTypeF64, &camera->info.B);
	
	sgl_init_camera_data(camera, IMAQ_IMAGE_RGB);
	
	// 注册回调接口
	//IMAQdxRegisterFrameDoneEvent (camera->session_id, 1, frame_done_callback, NULL); 
	
	sgl_set_acquisition_mode(camera, 1);

	return 0;

ERROR_MSG:
	sgl_camera_message_error(error, camera->error_callback);

	return -1;
}
Beispiel #2
0
void Camera::DumpAttrs() {
	//IMAQdxEnumerateAttributes(IMAQdxSession id, IMAQdxAttributeInformation attributeInformationArray[], uInt32* count, const char* root);
	IMAQdxAttributeInformation attributeInformationArray[300];
	uInt32 count;
	IMAQdxEnumerateAttributes(session, NULL, &count, "");
	union {
		uInt32 a;
		uInt64 b;
		double c;
		char *d;
		unsigned int e;bool f;
		char y[256];	// just in case
	} x;
	printf("IMAQdxEnumerateAttributes - there are %lu attributes", count);
	if (count
			> sizeof(attributeInformationArray)
					/ sizeof(attributeInformationArray[0])) {
		printf(" -- that's too many to enumerate\n");
	} else
		printf("\n");
	IMAQdxEnumerateAttributes(session, attributeInformationArray, &count, "");
	for (uInt32 i = 0; i != count; i++) {
		printf("  attr[%lu] is %s, type %u, writeable %lu, value=", i,
				attributeInformationArray[i].Name,
				attributeInformationArray[i].Type,
				attributeInformationArray[i].Writable);
		IMAQdxGetAttribute(session, attributeInformationArray[i].Name,
				(IMAQdxValueType) attributeInformationArray[i].Type, &x);
		switch (attributeInformationArray[i].Type) {
		case IMAQdxValueTypeU32:
			printf("%lu\n", x.a);
			break;
		case IMAQdxValueTypeI64:
			printf("%llu\n", x.b);
			break;
		case IMAQdxValueTypeF64:
			printf("%f\n", x.c);
			break;
		case IMAQdxValueTypeString:
			//printf("%s\n", x.d);
			printf("%s\n", x.y);
			break;
		case IMAQdxValueTypeEnumItem:
			printf("%u\n", x.e);
			break;
		case IMAQdxValueTypeBool:
			printf("%d\n", x.f);
			break;
		default:
			printf("%x\n", x.e);
			break;

		}
	}
}