示例#1
0
        private void readBoardInfos()
        {
            this.micros_list = new List <Microcontroller>();

            XmlDocument xml_doc = new XmlDocument();

            try
            {
                xml_doc.Load(µC_file_settings_name);
            }
            catch (Exception e) {
                MessageBox.Show("XML Error: " + e.Message);
            }

            XmlNodeList xml_boards  = xml_doc.GetElementsByTagName("microcontroller");
            int         boards_size = xml_boards.Count;

            Microcontroller micro;

            foreach (XmlNode a_xml_board in xml_boards)
            {
                micro = new Microcontroller(a_xml_board.Attributes[0].Value);
                micro.setFamily(a_xml_board.Attributes[1].Value);
                micro.setManufacturer(a_xml_board.Attributes[2].Value);

                //Architecture
                string size_archi_str = a_xml_board.ChildNodes[0].Attributes[0].Value;
                string unit_archi_str = a_xml_board.ChildNodes[0].Attributes[1].Value;
                micro.setArchitecture(Int32.Parse(size_archi_str), unit_archi_str);

                //Processor
                string speed_proc_str = a_xml_board.ChildNodes[1].Attributes[0].Value;
                string unit_proc_str  = a_xml_board.ChildNodes[1].Attributes[1].Value;
                micro.setProcessor(Int32.Parse(speed_proc_str), unit_proc_str);

                //Ram Memory
                string ram_type = a_xml_board.ChildNodes[2].Attributes[0].Value;
                string ram_size = a_xml_board.ChildNodes[2].Attributes[1].Value;
                string ram_unit = a_xml_board.ChildNodes[2].Attributes[2].Value;
                micro.setRamMemory(ram_type, Int32.Parse(ram_size), ram_unit);

                //Program Memory
                string prog_type = a_xml_board.ChildNodes[3].Attributes[0].Value;
                string prog_size = a_xml_board.ChildNodes[3].Attributes[1].Value;
                string prog_unit = a_xml_board.ChildNodes[3].Attributes[2].Value;
                micro.setProgramMemory(prog_type, Int32.Parse(prog_size), prog_unit);

                //Data Memory
                string data_type = a_xml_board.ChildNodes[4].Attributes[0].Value;
                string data_size = a_xml_board.ChildNodes[4].Attributes[1].Value;
                string data_unit = a_xml_board.ChildNodes[4].Attributes[2].Value;
                micro.setDataMemory(data_type, Int32.Parse(data_size), data_unit);

                //Read Digital pins and save
                micro.max_digital_pin = Int32.Parse(a_xml_board.ChildNodes[5].Attributes[0].Value);
                int N_Digit_Pins = a_xml_board.ChildNodes[5].ChildNodes.Count;
                for (int i = 0; i < N_Digit_Pins; i++)
                {
                    string pin_address = a_xml_board.ChildNodes[5].ChildNodes[i].Attributes[0].Value;
                    string pin_type    = a_xml_board.ChildNodes[5].ChildNodes[i].Attributes[1].Value;
                    micro.pins_list_digital.Add(new IOPin(pin_address, pin_type));
                }

                //Read Analog pins and save
                micro.max_analog_pin = Int32.Parse(a_xml_board.ChildNodes[6].Attributes[0].Value);
                int N_Analog_Pins = a_xml_board.ChildNodes[6].ChildNodes.Count;
                for (int i = 0; i < N_Analog_Pins; i++)
                {
                    string pin_address = a_xml_board.ChildNodes[6].ChildNodes[i].Attributes[0].Value;
                    string pin_type    = a_xml_board.ChildNodes[6].ChildNodes[i].Attributes[1].Value;
                    micro.pins_list_analog.Add(new IOPin(pin_address, pin_type));
                }

                micro.set_SC_header_path(a_xml_board.ChildNodes[7].ChildNodes[0].Attributes[0].Value);
                micro.set_SC_read_pins_path(a_xml_board.ChildNodes[7].ChildNodes[1].Attributes[0].Value);
                micro.set_SC_write_pins_path(a_xml_board.ChildNodes[7].ChildNodes[2].Attributes[0].Value);
                micro.set_SC_pinMode_config_path(a_xml_board.ChildNodes[7].ChildNodes[3].Attributes[0].Value);
                micro.set_SC_timer_definition_path(a_xml_board.ChildNodes[7].ChildNodes[4].Attributes[0].Value);
                micro.set_SC_readInMemory_path(a_xml_board.ChildNodes[7].ChildNodes[5].Attributes[0].Value);
                micro.set_SC_writeInMemory_path(a_xml_board.ChildNodes[7].ChildNodes[6].Attributes[0].Value);

                this.micros_list.Add(micro);
            }
        }