Example #1
0
static void
arv_gc_enumeration_set_integer_value (ArvGcInteger *gc_integer, gint64 value, GError **error)
{
	ArvGcEnumeration *gc_enumeration = ARV_GC_ENUMERATION (gc_integer);

	return arv_gc_enumeration_set_int_value (gc_enumeration, value, error);
}
Example #2
0
void
arv_gc_enumeration_set_string_value (ArvGcEnumeration *enumeration, const char *value, GError **error)
{
	const GSList *iter;

	g_return_if_fail (ARV_IS_GC_ENUMERATION (enumeration));
	g_return_if_fail (error == NULL || *error == NULL);

	for (iter = enumeration->entries; iter != NULL; iter = iter->next)
		if (g_strcmp0 (arv_gc_feature_node_get_name (iter->data), value) == 0) {
			GError *local_error = NULL;
			gint64 enum_value;

			arv_log_genicam ("[GcEnumeration::set_string_value] value = %d - string = %s",
					 &enumeration->value, value);

			enum_value = arv_gc_enum_entry_get_value (iter->data, &local_error);

			if (local_error != NULL) {
				g_propagate_error (error, local_error);
				return;
			}

			arv_gc_enumeration_set_int_value (enumeration, enum_value, &local_error);

			if (local_error != NULL)
				g_propagate_error (error, local_error);

			return;
		}

	arv_warning_genicam ("[GcEnumeration::set_string_value] entry %s not found", value);
}
Example #3
0
void
arv_gc_enumeration_set_string_value (ArvGcEnumeration *enumeration, const char *value)
{
	const GSList *iter;

	g_return_if_fail (ARV_IS_GC_ENUMERATION (enumeration));

	for (iter = enumeration->entries; iter != NULL; iter = iter->next)
		if (g_strcmp0 (arv_gc_feature_node_get_name (iter->data), value) == 0) {
			arv_log_genicam ("[GcEnumeration::set_string_value] value = %d - string = %s",
					 &enumeration->value, value);
			arv_gc_enumeration_set_int_value (enumeration, arv_gc_enum_entry_get_value (iter->data));
			return;
		}

	arv_warning_genicam ("[GcEnumeration::set_string_value] entry %s not found", value);
}
Example #4
0
void
arv_camera_set_frame_rate (ArvCamera *camera, double frame_rate)
{
    ArvGcNode *feature;
    double minimum;
    double maximum;

    g_return_if_fail (ARV_IS_CAMERA (camera));

    if (frame_rate <= 0.0)
        return;

    arv_camera_get_frame_rate_bounds(camera, &minimum, &maximum);

    if (frame_rate < minimum)
        frame_rate = minimum;
    if (frame_rate > maximum)
        frame_rate = maximum;

    switch (camera->priv->vendor) {
    case ARV_CAMERA_VENDOR_BASLER:
        arv_device_set_string_feature_value (camera->priv->device, "TriggerSelector",
                                             "AcquisitionStart");
        arv_device_set_string_feature_value (camera->priv->device, "TriggerMode", "Off");
        arv_device_set_string_feature_value (camera->priv->device, "TriggerSelector",
                                             "FrameStart");
        arv_device_set_string_feature_value (camera->priv->device, "TriggerMode", "Off");
        arv_device_set_integer_feature_value (camera->priv->device, "AcquisitionFrameRateEnable",
                                              1);
        arv_device_set_float_feature_value (camera->priv->device, "AcquisitionFrameRateAbs",
                                            frame_rate);
        break;
    case ARV_CAMERA_VENDOR_PROSILICA:
        arv_device_set_string_feature_value (camera->priv->device, "TriggerSelector",
                                             "FrameStart");
        arv_device_set_string_feature_value (camera->priv->device, "TriggerMode", "Off");
        arv_device_set_float_feature_value (camera->priv->device, "AcquisitionFrameRateAbs",
                                            frame_rate);
        break;
    case ARV_CAMERA_VENDOR_TIS:
        arv_device_set_string_feature_value (camera->priv->device, "TriggerSelector",
                                             "FrameStart");
        arv_device_set_string_feature_value (camera->priv->device, "TriggerMode", "Off");
        feature = arv_device_get_feature (camera->priv->device, "FPS");
        if (ARV_IS_GC_FEATURE_NODE (feature) &&
                g_strcmp0 (arv_dom_node_get_node_name (ARV_DOM_NODE (feature)), "Enumeration") == 0) {
            gint64 *values;
            guint n_values;
            guint i;

            values = arv_gc_enumeration_get_available_int_values (ARV_GC_ENUMERATION (feature), &n_values, NULL);
            for (i = 0; i < n_values; i++) {
                if (values[i] > 0) {
                    double e;

                    e = (int)((10000000/(double) values[i]) * 100 + 0.5) / 100.0;
                    if (e == frame_rate) {
                        arv_gc_enumeration_set_int_value (ARV_GC_ENUMERATION (feature), values[i], NULL);
                        break;
                    }
                }
            }
            g_free (values);
        } else
            arv_device_set_float_feature_value (camera->priv->device, "FPS", frame_rate);
        break;
    case ARV_CAMERA_VENDOR_DALSA:
    case ARV_CAMERA_VENDOR_UNKNOWN:
        arv_device_set_string_feature_value (camera->priv->device, "TriggerSelector",
                                             "FrameStart");
        arv_device_set_string_feature_value (camera->priv->device, "TriggerMode", "Off");

        arv_device_set_float_feature_value (camera->priv->device,
                                            camera->priv->use_acquisition_frame_rate_abs ?
                                            "AcquisitionFrameRateAbs":
                                            "AcquisitionFrameRate", frame_rate);
        break;
    }
}