static void arv_dom_parser_characters (void *user_data, const xmlChar *ch, int len) { ArvDomSaxParserState *state = user_data; if (!state->is_error) { ArvDomNode *node; char *text; text = g_strndup ((char *) ch, len); node = ARV_DOM_NODE (arv_dom_document_create_text_node (ARV_DOM_DOCUMENT (state->document), text)); arv_dom_node_append_child (state->current_node, node); g_free (text); } }
//! Serialize the tree, used by QArvCamera stream operators. void QArvCamera::QArvFeatureTree::recursiveSerialization( QTextStream& out, QArvCamera* camera, QArvCamera::QArvFeatureTree* tree) { auto node = arv_gc_get_node(camera->genicam, tree->feature()); if (tree->children().count() != 0) { if (QString("Root") != tree->feature()) out << "Category: " << tree->feature() << endl; foreach (auto child, tree->children()) { recursiveSerialization(out, camera, child); } return; } if (ARV_IS_GC_COMMAND(node)) return; out << "\t" << tree->feature() << "\t"; if (ARV_IS_GC_REGISTER_NODE(node) && QString(arv_dom_node_get_node_name(ARV_DOM_NODE(node))) == "IntReg") { QArvRegister r; r.length = arv_gc_register_get_length(ARV_GC_REGISTER(node), NULL); r.value = QByteArray(r.length, 0); arv_gc_register_get(ARV_GC_REGISTER(node), r.value.data(), r.length, NULL); out << "Register\t" << QString::number(r.length) << "\t" << QString("0x") + r.value.toHex() << endl; } else if (ARV_IS_GC_ENUMERATION(node)) { out << "Enumeration\t" << arv_gc_enumeration_get_string_value(ARV_GC_ENUMERATION(node), NULL) << endl; } else if (ARV_IS_GC_STRING(node)) { out << "String\t" << arv_gc_string_get_value(ARV_GC_STRING(node), NULL) << endl; } else if (ARV_IS_GC_FLOAT(node)) { out << "Float\t" << arv_gc_float_get_value(ARV_GC_FLOAT(node), NULL) << "\t" << arv_gc_float_get_unit(ARV_GC_FLOAT(node), NULL) << endl; } else if (ARV_IS_GC_BOOLEAN(node)) { out << "Boolean\t" << arv_gc_boolean_get_value(ARV_GC_BOOLEAN(node), NULL) << endl; } else if (ARV_IS_GC_INTEGER(node)) { out << "Integer\t" << arv_gc_integer_get_value(ARV_GC_INTEGER(node), NULL) << endl; } }
static guint64 arv_gc_struct_entry_node_get_length (ArvGcRegister *gc_register, GError **error) { ArvDomNode *struct_register = arv_dom_node_get_parent_node (ARV_DOM_NODE (gc_register)); GError *local_error = NULL; gint64 length; g_return_val_if_fail (ARV_IS_GC_REGISTER (struct_register), 0); length = arv_gc_register_get_length (ARV_GC_REGISTER (struct_register), &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } return length; }
static const char * _get_value_data (ArvGcPropertyNode *property_node) { ArvDomNode *dom_node = ARV_DOM_NODE (property_node); if (!property_node->value_data_up_to_date) { ArvDomNode *iter; GString *string = g_string_new (NULL); for (iter = dom_node->first_child; iter != NULL; iter = iter->next_sibling) g_string_append (string, arv_dom_character_data_get_data (ARV_DOM_CHARACTER_DATA (iter))); g_free (property_node->value_data); property_node->value_data = string->str; g_string_free (string, FALSE); property_node->value_data_up_to_date = TRUE; } return property_node->value_data; }
void arv_gc_register_feature_node (ArvGc *genicam, ArvGcFeatureNode *node) { const char *name; g_return_if_fail (ARV_IS_GC (genicam)); g_return_if_fail (ARV_IS_GC_FEATURE_NODE (node)); name = arv_gc_feature_node_get_name (node); if (name == NULL) return; g_object_ref (node); g_hash_table_remove (genicam->nodes, (char *) name); g_hash_table_insert (genicam->nodes, (char *) name, node); arv_log_genicam ("[Gc::register_feature_node] Register node '%s' [%s]", name, arv_dom_node_get_node_name (ARV_DOM_NODE (node))); }
static void arv_gc_feature_node_set_attribute (ArvDomElement *self, const char *name, const char *value) { ArvGcFeatureNode *node = ARV_GC_FEATURE_NODE (self); if (strcmp (name, "Name") == 0) { ArvGc *genicam; g_free (node->priv->name); node->priv->name = g_strdup (value); genicam = arv_gc_node_get_genicam (ARV_GC_NODE (self)); /* Kludge around ugly Genicam specification (Really, pre-parsing for EnumEntry Name substitution ?) */ if (strcmp (arv_dom_node_get_node_name (ARV_DOM_NODE (node)), "EnumEntry") != 0) arv_gc_register_feature_node (genicam, node); } else if (strcmp (name, "NameSpace") == 0) { if (g_strcmp0 (value, "Standard") == 0) node->priv->name_space = ARV_GC_NAME_SPACE_STANDARD; else node->priv->name_space = ARV_GC_NAME_SPACE_CUSTOM; } else arv_debug_dom ("[GcFeature::set_attribute] Unknown attribute '%s'", name); }
static gint64 arv_gc_struct_entry_node_get_integer_value (ArvGcInteger *gc_integer, GError **error) { ArvGcStructEntryNode *struct_entry = ARV_GC_STRUCT_ENTRY_NODE (gc_integer); ArvDomNode *struct_register; GError *local_error = NULL; gint64 value; guint lsb; guint msb; struct_register = arv_dom_node_get_parent_node (ARV_DOM_NODE (gc_integer)); if (!ARV_IS_GC_REGISTER_NODE (struct_register)) return 0; lsb = _get_lsb (struct_entry, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } msb = _get_msb (struct_entry, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } value = arv_gc_register_node_get_masked_integer_value (ARV_GC_REGISTER_NODE (struct_register), lsb, msb, &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return 0; } return value; }
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; } }