int main(int argc, char** argv){ xc::configure xmlwriter("root"); xmlwriter.field<xc::C>("first").attr<xc::C>("first_attribute") = 1; xmlwriter.field<xc::C>("second").attr<xc::C>("first_attribute") = "xml_configure"; xmlwriter.field<xc::C>("third").attr<xc::C>("first_attribute") = "true"; xmlwriter.field<xc::C>("fouth").attr<xc::C>("first_attribute") = false; xmlwriter.field<xc::C>("fifth").attr<xc::C>("first_attribute") = 34.65; xmlwriter.field<xc::C>("sixth").attr<xc::C>("first_attribute") = 34.234f; xmlwriter.field<xc::C>("seventh").attr<xc::C>("first_attribute") = 75u; xmlwriter.save("D:/1.xml"); xc::configure xmlreader; xmlreader.read("D:/1.xml"); return 0; }
bool Serialization::writeMcconfXml(const mc_configuration &mcconf, QWidget *parent) { QString filename = QFileDialog::getSaveFileName(parent, tr("Save Configuration"), ".", tr("Xml files (*.xml)")); if (!filename.toLower().endsWith(".xml")) { filename.append(".xml"); } QFile file(filename); if (!file.open(QIODevice::WriteOnly)) { return false; } QXmlStreamWriter xmlwriter(&file); xmlwriter.setAutoFormatting(true); xmlwriter.writeStartDocument(); xmlwriter.writeStartElement("MCConfiguration"); xmlwriter.writeTextElement("pwm_mode", QString::number(mcconf.pwm_mode)); xmlwriter.writeTextElement("comm_mode", QString::number(mcconf.comm_mode)); xmlwriter.writeTextElement("motor_type", QString::number(mcconf.motor_type)); xmlwriter.writeTextElement("sensor_mode", QString::number(mcconf.sensor_mode)); xmlwriter.writeTextElement("l_current_max", QString::number(mcconf.l_current_max)); xmlwriter.writeTextElement("l_current_min", QString::number(mcconf.l_current_min)); xmlwriter.writeTextElement("l_in_current_max", QString::number(mcconf.l_in_current_max)); xmlwriter.writeTextElement("l_in_current_min", QString::number(mcconf.l_in_current_min)); xmlwriter.writeTextElement("l_abs_current_max", QString::number(mcconf.l_abs_current_max)); xmlwriter.writeTextElement("l_min_erpm", QString::number(mcconf.l_min_erpm)); xmlwriter.writeTextElement("l_max_erpm", QString::number(mcconf.l_max_erpm)); xmlwriter.writeTextElement("l_max_erpm_fbrake", QString::number(mcconf.l_max_erpm_fbrake)); xmlwriter.writeTextElement("l_max_erpm_fbrake_cc", QString::number(mcconf.l_max_erpm_fbrake_cc)); xmlwriter.writeTextElement("l_min_vin", QString::number(mcconf.l_min_vin)); xmlwriter.writeTextElement("l_max_vin", QString::number(mcconf.l_max_vin)); xmlwriter.writeTextElement("l_battery_cut_start", QString::number(mcconf.l_battery_cut_start)); xmlwriter.writeTextElement("l_battery_cut_end", QString::number(mcconf.l_battery_cut_end)); xmlwriter.writeTextElement("l_slow_abs_current", QString::number(mcconf.l_slow_abs_current)); xmlwriter.writeTextElement("l_rpm_lim_neg_torque", QString::number(mcconf.l_rpm_lim_neg_torque)); xmlwriter.writeTextElement("l_temp_fet_start", QString::number(mcconf.l_temp_fet_start)); xmlwriter.writeTextElement("l_temp_fet_end", QString::number(mcconf.l_temp_fet_end)); xmlwriter.writeTextElement("l_temp_motor_start", QString::number(mcconf.l_temp_motor_start)); xmlwriter.writeTextElement("l_temp_motor_end", QString::number(mcconf.l_temp_motor_end)); xmlwriter.writeTextElement("l_min_duty", QString::number(mcconf.l_min_duty)); xmlwriter.writeTextElement("l_max_duty", QString::number(mcconf.l_max_duty)); xmlwriter.writeTextElement("sl_min_erpm", QString::number(mcconf.sl_min_erpm)); xmlwriter.writeTextElement("sl_min_erpm_cycle_int_limit", QString::number(mcconf.sl_min_erpm_cycle_int_limit)); xmlwriter.writeTextElement("sl_max_fullbreak_current_dir_change", QString::number(mcconf.sl_max_fullbreak_current_dir_change)); xmlwriter.writeTextElement("sl_cycle_int_limit", QString::number(mcconf.sl_cycle_int_limit)); xmlwriter.writeTextElement("sl_cycle_int_limit_high_fac", QString::number(mcconf.sl_phase_advance_at_br)); xmlwriter.writeTextElement("sl_cycle_int_rpm_br", QString::number(mcconf.sl_cycle_int_rpm_br)); xmlwriter.writeTextElement("sl_bemf_coupling_k", QString::number(mcconf.sl_bemf_coupling_k)); xmlwriter.writeTextElement("hall_table_0", QString::number(mcconf.hall_table[0])); xmlwriter.writeTextElement("hall_table_1", QString::number(mcconf.hall_table[1])); xmlwriter.writeTextElement("hall_table_2", QString::number(mcconf.hall_table[2])); xmlwriter.writeTextElement("hall_table_3", QString::number(mcconf.hall_table[3])); xmlwriter.writeTextElement("hall_table_4", QString::number(mcconf.hall_table[4])); xmlwriter.writeTextElement("hall_table_5", QString::number(mcconf.hall_table[5])); xmlwriter.writeTextElement("hall_table_6", QString::number(mcconf.hall_table[6])); xmlwriter.writeTextElement("hall_table_7", QString::number(mcconf.hall_table[7])); xmlwriter.writeTextElement("hall_sl_erpm", QString::number(mcconf.hall_sl_erpm)); xmlwriter.writeTextElement("s_pid_kp", QString::number(mcconf.s_pid_kp)); xmlwriter.writeTextElement("s_pid_ki", QString::number(mcconf.s_pid_ki)); xmlwriter.writeTextElement("s_pid_kd", QString::number(mcconf.s_pid_kd)); xmlwriter.writeTextElement("s_pid_min_rpm", QString::number(mcconf.s_pid_min_erpm)); xmlwriter.writeTextElement("p_pid_kp", QString::number(mcconf.p_pid_kp)); xmlwriter.writeTextElement("p_pid_ki", QString::number(mcconf.p_pid_ki)); xmlwriter.writeTextElement("p_pid_kd", QString::number(mcconf.p_pid_kd)); xmlwriter.writeTextElement("cc_startup_boost_duty", QString::number(mcconf.cc_startup_boost_duty)); xmlwriter.writeTextElement("cc_min_current", QString::number(mcconf.cc_min_current)); xmlwriter.writeTextElement("cc_gain", QString::number(mcconf.cc_gain)); xmlwriter.writeTextElement("cc_ramp_step_max", QString::number(mcconf.cc_ramp_step_max)); xmlwriter.writeTextElement("m_fault_stop_time_ms", QString::number(mcconf.m_fault_stop_time_ms)); xmlwriter.writeTextElement("m_duty_ramp_step", QString::number(mcconf.m_duty_ramp_step)); xmlwriter.writeTextElement("m_duty_ramp_step_rpm_lim", QString::number(mcconf.m_duty_ramp_step_rpm_lim)); xmlwriter.writeTextElement("m_current_backoff_gain", QString::number(mcconf.m_current_backoff_gain)); xmlwriter.writeTextElement("meta_description", mcconf.meta_description); xmlwriter.writeEndElement(); xmlwriter.writeEndDocument(); file.close(); return true; }