Пример #1
0
        public void saveChannelsMetadata(ref ChannelsBundle _channelsBoundle, ReportTypes _reportType)
        {
            XDocument xdoc = getChannelsMetadata(ref _channelsBoundle);

            switch (_reportType)
            {
            case ReportTypes.JSON:
                break;

            case ReportTypes.XML:
                //Сохраняем xml-документ в файл
                xdoc.Save("ChannelsMetadata.xml");
                break;

            case ReportTypes.HTML:
                //создаем объект файла стилей xsl
                XslCompiledTransform xslt = new XslCompiledTransform();
                //заполняем его из файла
                xslt.Load(STYLESHEET_URI_STRING);
                //создаем обект записи, указываем ему имя выходного файла
                XmlTextWriter xmlTextWriter = new XmlTextWriter("ChannelsMetadata.html", null);
                //устанавливаем сохранение форматирования
                xmlTextWriter.Formatting = Formatting.Indented;
                //запускаем трансформацию с выводом в файл, который можно будет открыть в MS Word
                using (var xmlReader = xdoc.CreateReader())
                {
                    xslt.Transform(xmlReader, xmlTextWriter);
                }
                Console.WriteLine("Receive an HTML file!");
                break;

            default:
                break;
            }
        }
Пример #2
0
        public XDocument getChannelsMetadata(ref ChannelsBundle _ChannelsBundle)
        {
            //Корневой узел-элемент
            XElement root = new XElement("bundle");
            //Элемент - коллекция каналов
            XElement channels = new XElement("channels");

            //Число каналов
            int channelsLength = _ChannelsBundle.length();

            //Сколько каналов - столько дочерних элементов
            //добавляем в корневой элемент
            for (int i = 0; i < channelsLength; i++)
            {
                XElement channel = new XElement("channel");
                //Первый дочерний узел в элементе "канал" - атрибут "номер канала"
                channel.SetAttributeValue("number", _ChannelsBundle.numbersArray[i]);
                //Второй дочерний узел в элементе "канал" - элемент "усиление канала"
                XElement amp = new XElement("amplification");
                amp.Add(_ChannelsBundle.ampsArray[i]);
                channel.Add(amp);
                // Определяем максимальное значение амплитуды сигнала из i-го канала,
                //заворачиваем в узел-элемент
                //и присоединяем его к текущему формируемому узлу channel
                XElement max = new XElement("max");
                max.Add(_ChannelsBundle[i].dataArrayList.ToArray().Max());
                channel.Add(max);
                // Определяем минимальное значение амплитуды сигнала из i-го канала,
                //заворачиваем в узел-элемент
                //и присоединяем его к текущему формируемому узлу channel
                XElement min = new XElement("min");
                min.Add(_ChannelsBundle[i].dataArrayList.ToArray().Min());
                channel.Add(min);
                //Добавляем элемент "канал" в элемент-коллекцию каналов
                channels.Add(channel);
            }

            //Создаем узел-элемент с информацией о частоте
            XElement frequency = new XElement("frequency");

            frequency.Add(_ChannelsBundle.frequency);

            //...и добавляем его корню
            root.Add(frequency);
            //также в корень добавляем элемент-коллекцию элементов каналов
            root.Add(channels);

            //Создаем и возвращаем объект xml-документа с заголовком и корневым элементом
            return(new XDocument(new XDeclaration("1.0", "UTF-8", "yes"), root));
        }
Пример #3
0
        public XDocument getChannelsMetadata(ref ChannelsBundle _ChannelsBundle)
        {
            //Корневой узел-элемент
            XElement root = new XElement("bundle");
            //Элемент - коллекция каналов
            XElement channels = new XElement("channels");

            //Число каналов
            int channelsLength = _ChannelsBundle.length();

            //Сколько каналов - столько дочерних элементов
            //добавляем в корневой элемент
            for (int i = 0; i < channelsLength; i++)
            {
                XElement channel = new XElement("channel");
                //Первый дочерний узел в элементе "канал" - атрибут "номер канала"
                channel.SetAttributeValue("number", _ChannelsBundle.numbersArray[i]);
                //Второй дочерний узел в элементе "канал" - элемент "усиление канала"
                XElement amp = new XElement("amplification");
                amp.Add(_ChannelsBundle.ampsArray[i]);
                channel.Add(amp);

                //Третий дочерний узел в элементе "канал" - элемент "данные"
                XElement data = new XElement("data");
                foreach (var itemValue in _ChannelsBundle[i].dataArrayList)
                {
                    XElement itemElement = new XElement("item");
                    itemElement.Add(itemValue);
                    data.Add(itemElement);
                }
                channel.Add(data);

                //Добавляем элемент "канал" в элемент-коллекцию каналов
                channels.Add(channel);
            }

            //Создаем узел-элемент с информацией о частоте
            XElement frequency = new XElement("frequency");

            frequency.Add(_ChannelsBundle.frequency);

            //...и добавляем его корню
            root.Add(frequency);
            //также в корень добавляем элемент-коллекцию элементов каналов
            root.Add(channels);

            //Создаем и возвращаем объект xml-документа с заголовком и корневым элементом
            return(new XDocument(new XDeclaration("1.0", "UTF-8", "yes"), root));
        }
Пример #4
0
        public ChannelsBundle getChannelsMetadata(String _path)
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(_path);

            if (validateChannelsMetadataXML(xmlDocument))
            {
                mFrequency = Int32.Parse(xmlDocument.GetElementsByTagName("frequency")[0].InnerText);
                //Console.WriteLine(mFrequency);

                XmlNode channelsNode = xmlDocument.GetElementsByTagName("channels")[0];

                if (channelsNode.HasChildNodes)
                {
                    mChannelsCount = channelsNode.ChildNodes.Count;
                    //Console.WriteLine(mChannelsCount);

                    mNumbersArray     = new int[mChannelsCount];
                    mAmpsArray        = new int[mChannelsCount];
                    mChannelArrayList = new ArrayList(mChannelsCount);

                    int channelNodeIdx = 0;
                    foreach (XmlNode channelNode in channelsNode)
                    {
                        mNumbersArray[channelNodeIdx] = Int32.Parse(channelNode.Attributes["number"].InnerText);
                        mAmpsArray[channelNodeIdx]    = Int32.Parse(channelNode.ChildNodes[0].InnerText);
                        Channel newChannel = new Channel(mNumbersArray[channelNodeIdx], mAmpsArray[channelNodeIdx]);
                        foreach (XmlNode item in channelNode.ChildNodes[1].ChildNodes)
                        {
                            newChannel.dataArrayList.Add(item.InnerText);
                        }
                        mChannelArrayList.Add(newChannel);
                        channelNodeIdx++;
                    }
                }

                mChannelsBundle = new ChannelsBundle(mNumbersArray, mAmpsArray, mFrequency);
                mChannelsBundle.channelArrayList = mChannelArrayList;

                return(mChannelsBundle);
            }
            else
            {
                throw new Exception("Inavid xml document!");
            }
        }
Пример #5
0
 public void persistChannels(ChannelsBundle _сhannelsBoundle)
 {
     throw new NotImplementedException();
 }
Пример #6
0
        static void Main(string[] args)
        {
            //Channel channel1 = new Channel(1, 0);
            //Channel channel2 = new Channel(2, 0);

            //channel1.addDataItem(0);
            //channel1.addDataItem(1.01);
            //channel1.addDataItem(1.02);
            //channel1.addDataItem(1.03);

            //foreach (double dataItem in channel1.getDataArray())
            //{
            //	Console.WriteLine(dataItem);
            //}

            //ChannelsBundle ChannelsBundle1 = new ChannelsBundle(null, null, 1500);

            //channel2.addDataItem(0.001);
            //channel2.addDataItem(1.015);
            //channel2.addDataItem(1.025);
            //channel2.addDataItem(1.035);

            //ChannelsBundle1[0] = channel1;
            //ChannelsBundle1[1] = channel2;

            //foreach (Channel channel in ChannelsBundle1)
            //{
            //	foreach (double dataItem in channel.getDataArray())
            //	{
            //		Console.WriteLine(dataItem);
            //	}
            //}

            //Filters filters1 = Filters.Batterwort;
            //Filters filters2 = Filters.Chebishev;
            //Console.WriteLine(filters1 < filters2);

            //DataFileFacade dataFileFacade = new DataFileFacade(DataFileTypes.OldDataFile);
            //dataFileFacade.getChannels();
            //dataFileFacade.setDAOType(DataFileTypes.NewDataFile);
            //dataFileFacade.getChannels();
            //dataFileFacade.setDAOType(DataFileTypes.OldDataFile);
            //dataFileFacade.getChannels();

            //Mock<IChannelsBundle> mock = new Mock<IChannelsBundle>();
            //mock.Setup(m => m.channelArray).Returns(
            //	new Channel[]{
            //        //new Channel{dataArray = new double?[3]{1, 2, 3}}
            //        //,new Channel{dataArray = new double?[3]{0, 1, 2}}
            //        new Channel{dataArrayList = (new ArrayList(){1, 2, 3})}
            //		,new Channel{dataArrayList = new ArrayList(){0, 1, 2}}
            //	}
            //);
            //foreach (Channel channel in mock.Object.channelArray.AsEnumerable())
            //{
            //	foreach (double dataItem in channel.getDataArray())
            //	{
            //		Console.WriteLine(dataItem);
            //	}
            //}

            //const Int32 count = 10000000;

            //using (new OperationProfiler("Channel<T>"))
            //{
            //	gen.Channel<double> channel1 = new gen.Channel<double>(1, 0);
            //	for (Int32 n = 0; n < count; n++)
            //	{
            //		channel1.addDataItem(n);
            //	}
            //	channel1 = null;  // для гарантированного выполнения сборки мусора
            //}

            //using (new OperationProfiler("Channel"))
            //{
            //	Channel channel1 = new Channel(1, 0);
            //	for (Int32 n = 0; n < count; n++)
            //	{
            //		channel1.addDataItem(n);
            //	}
            //}

            //gen.Channel<double> channel1 = new gen.Channel<double>(1, 0);


            //Channel channel2 = new Channel();
            //channel2 = null;

            /*Чтение бинарных файлов*/

            /*String filePath = @"D:/Temp/10f";
             *
             * ParamsReader paramsReader = new ParamsReader();
             * List<gen.Channel<double>> channelsArrayList =
             * paramsReader.getParams(filePath + ".prm");
             * Console.WriteLine(paramsReader.Count + " " + paramsReader.Frequency + "\n");
             * foreach (gen.Channel<double> channel in channelsArrayList)
             * {
             * Console.WriteLine(channel.number + " " + channel.amp);
             * }*/

            //DataReader dataReader = new DataReader();
            //dataReader.getData(@"D:/Temp/10f" + ".dat", ref channelsArrayList);
            //foreach (double dataItem in channelsArrayList[1].getDataArray())
            //{
            //	Console.WriteLine(dataItem);
            //}

            //*Запись метаданных в XML-файл*/

            Channel channel1 = new Channel(1, 0);
            Channel channel2 = new Channel(2, 0);

            channel1.addDataItem(0);
            channel1.addDataItem(1.01);
            channel1.addDataItem(1.02);
            channel1.addDataItem(1.03);
            channel1.addDataItem(1.51);
            channel1.addDataItem(1.22);
            channel1.addDataItem(1.03);

            channel2.addDataItem(0.001);
            channel2.addDataItem(1.015);
            channel2.addDataItem(1.025);
            channel2.addDataItem(1.035);
            channel2.addDataItem(1.115);
            channel2.addDataItem(1.095);
            channel2.addDataItem(1.035);

            int[] numbersArray = new int[] { channel1.number, channel2.number };
            int[] ampsArray    = new int[] { channel1.amp, channel2.amp };

            ChannelsBundle ChannelsBundle1 = new ChannelsBundle(numbersArray, ampsArray, 1500);

            ChannelsBundle1[0] = channel1;
            ChannelsBundle1[1] = channel2;

            ExportXML exportXML = new ExportXML();

            exportXML.saveChannelsMetadata(ref ChannelsBundle1, ReportTypes.XML);



            ImportXML      importXML       = new ImportXML();
            ChannelsBundle ChannelsBundle2 =
                importXML.getChannelsMetadata(@"ChannelsMetadata.xml");

            Console.WriteLine("frequency = {0}", ChannelsBundle2.frequency);

            foreach (Channel channel in ChannelsBundle2)
            {
                Console.WriteLine("number = {0}; amplification = {1}", channel.number, channel.amp);
            }

            Console.ReadLine();


            /*Чтение бинарных файлов C++*/

            /*String filePath = @"D:/Temp/10f";
             *
             * ParamsReader paramsReader = new ParamsReader();
             * List<gen.Channel<double>> channelsArrayList =
             *  paramsReader.getParams(filePath + ".prm");
             * Console.WriteLine(paramsReader.Count + " " + paramsReader.Frequency + "\n");
             * foreach (gen.Channel<double> channel in channelsArrayList)
             * {
             *  Console.WriteLine(channel.number + " " + channel.amp);
             * }*/
        }