Exemplo n.º 1
0
        /// <summary>
        /// Загружает XML-файл базы данных сигналов.
        /// </summary>
        private AVDeviceDB LoadSignalDB(string path)
        {
            //Чтение базы данных сигналов из файла XML.
            AVDeviceDB newAVDeviceDB = null;

            var serializer = new XmlSerializer(typeof(AVDeviceDB));
            //var fileInfo = new FileInfo(openFileDialog.FileName);
            FileStream fs = null;

            try
            {
                fs            = new FileStream((new FileInfo(path)).FullName, FileMode.Open);
                newAVDeviceDB = (AVDeviceDB)serializer.Deserialize(fs);
            } catch (Exception ex)
            {
                ex.Show($"Ошибка открытия файла:\n{path}");
            } finally
            {
                if (fs != null)
                {
                    fs.Close();
                }
            }

            var dev = newAVDeviceDB.AVDevices;

            deviceName = newAVDeviceDB.GetAVDeviceNames();

            return(newAVDeviceDB);
        }
Exemplo n.º 2
0
        private void LoadDBButton1_Click(object sender, EventArgs e)
        {
            // Read signal database from XML file.
            var openFileDialog = new OpenFileDialog
            {
                Filter           = "XML files (*.xml)|*.xml|All files (*.*)|*.*",
                RestoreDirectory = true
            };
            string FW = redRat3.FirmwareVersion;

            if (openFileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            var        fName = openFileDialog.FileName;
            var        ser   = new XmlSerializer(typeof(AVDeviceDB));
            FileStream fs    = null;

            try
            {
                fs = new FileStream((new FileInfo(fName)).FullName, FileMode.Open);
                var newAVDeviceDB = (AVDeviceDB)ser.Deserialize(fs);
                avDeviceDB = newAVDeviceDB;
                Text       = avDeviceDB.AVDevices[0].Name + " READY!";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                }
            }
            var button_count = avDeviceDB.AVDevices[0].Signals.Count();

            all_button_name.Clear();
            for (int i = 0; i < button_count; i++)
            {
                all_button_name.Add(avDeviceDB.AVDevices[0].Signals[i].Name.ToString());
            }
            RecorderStartButton2.Enabled = true;
            richTextBoxScript.Clear();
            richTextBoxLineNumber.Clear();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Возвращает объект ИК-сигнала из файла DB сигнала, используя имя deviceName и signalName для поиска.
        /// </summary>
        private IRPacket GetSignal(AVDeviceDB signalDB, string deviceName, string signalName)
        {
            var device = signalDB.GetAVDevice(deviceName);

            if (device == null)
            {
                throw new Exception(string.Format("В базе данных сигналов нет устройства с именем '{0}'.", deviceName));
            }
            var signal = device.GetSignal(signalName);

            if (signal == null)
            {
                throw new Exception(string.Format("Нет сигнала с именем '{0}', найденным для устройства '{1}' в базе данных сигналов.", signalName, deviceName));
            }
            return(signal);
        }
Exemplo n.º 4
0
        // Read signal database from XML file and return avDeviceDB.
        protected void LoadDB()
        {
            var openFileDialog = new OpenFileDialog
            {
                Filter           = "XML files (*.xml)|*.xml|All files (*.*)|*.*",
                RestoreDirectory = true
            };

            if (openFileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            avDeviceDBName = openFileDialog.FileName;
            var        fName = openFileDialog.FileName;
            var        ser   = new XmlSerializer(typeof(AVDeviceDB));
            FileStream fs    = null;

            try
            {
                fs         = new FileStream((new FileInfo(fName)).FullName, FileMode.Open);
                avDeviceDB = (AVDeviceDB)ser.Deserialize(fs);;
                //Text = "";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            finally
            {
                if (fs != null)
                {
                    fs.Close();
                }
            }
        }
Exemplo n.º 5
0
        public CustomSignal(string cod_NEC)
        {
            //CustomSignal: показывает, как создать пару ИК-сигналов, а затем сохранить их в стандартном формате XML-файла служебной программы Signal DB,
            //чтобы вы могли загрузить их в служебную программу Signal DB для дальнейшего использования.

            if (cod_NEC.Length == 6 || cod_NEC.Length == 8)
            {
                //Создаем объект декодированного сигнала и выводим полученные данные
                string            Data_RR;
                TransformationCod tc = new TransformationCod();
                tc.Transformation(cod_NEC, out Data_RR);

                //________________________________________________________________Вывод декодированного сигнала
                //MessageBox.Show(Data_RR, "Декодированный сигнал");

                // == Создаем IR-сигналов ==
                var sigData = new byte[]
                {
                    0, 1, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 3, 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 2
                };

                //Засовываем в массив char
                char[] Data_RR_char = Data_RR.ToCharArray();

                //Проверяем символы на 0, 1, 2, 3 и присваиваем массиву sig соответствующие значения - ПРИДУМАТЬ ПО ДРУГОМУ ПОТОМ
                Int32[] sig = new Int32[Data_RR.Length];
                for (int i = 0; i < Data_RR.Length; i++)
                {
                    if (Data_RR_char[i] == '0')
                    {
                        sig[i] = 0;
                    }
                    else if (Data_RR_char[i] == '1')
                    {
                        sig[i] = 1;
                    }
                    else if (Data_RR_char[i] == '2')
                    {
                        sig[i] = 2;
                    }
                    else if (Data_RR_char[i] == '3')
                    {
                        sig[i] = 3;
                    }
                }

                //Конвертируем в byte
                for (int i = 0; i < sigData.Length; i++)
                {
                    sigData[i] = Convert.ToByte(sig[i]);
                }

                var sig1 = CreateSignal("New Signal", sigData);

                // == Создаем объект AV-устройства, чтобы мы могли хранить данные сигнала в файле XML.
                var avDeviceDB = new AVDeviceDB();

                var avDevice = new AVDevice("Sample Device", AVDevice.AVDeviceType.SET_TOP_BOX);
                avDeviceDB.AddAVDevice(avDevice);

                // Добавить сигналы в «Sample Device».
                avDevice.AddSignal(sig1, false);

                // Храните это как файл XML ...
                var        ser    = new XmlSerializer(typeof(AVDeviceDB));
                TextWriter writer = new StreamWriter((new FileInfo("C:\\RedRat3\\OneXMLsignal.xml")).FullName);
                ser.Serialize(writer, avDeviceDB);
                writer.Close();

                //_______________________________MessageBox.Show("Декодированный сигнал сохранен в XML-файл.", "Сохранение в файл");
                return;
            }
            else
            {
                if (cod_NEC == "")
                {
                    MessageBox.Show("Код ПДУ пуст. Введите код ПДУ.");
                }
                else if (cod_NEC.Length != 6 || cod_NEC.Length != 8)
                {
                    MessageBox.Show("Введите правильно NEC код.");
                }
            }
        }
Exemplo n.º 6
0
        //Захват сигнала
        public void CaptureSignal(string fileName)
        {
            if (fileName == "")
            {
                MessageBox.Show("Имя файла отсутствует.", "Ошибка", MessageBoxButtons.OK);
                return;
            }
            else
            {
                FindRedRat3();

                redRat3.LearningSignalIn += SignalDataHandler;
                //Ввод сигнала в RedRat3 осуществляется в течении 10с
                redRat3.GetModulatedSignal(10000);

                haveSignal = false;
                while (!haveSignal)
                {
                    Thread.Sleep(10);
                }

                if (irPacket != null)
                {
                    //Создает новый файл XML для irPacket
                    //XmlTextWriter xmlDoc = new XmlTextWriter("C:\\RedRat3_signalDB\\BD - irPacket.xml", Encoding.UTF8);
                    //xmlDoc.WriteStartDocument();
                    //var fileName = "C:\\RedRat3\\XMLsignal\\XMLsignal.xml";

                    //var fileName = argParser.GetArgOption(ArgumentParser.CaptureArg);
                    if (IsXmlFile(fileName))
                    {
                        //RRUtil.SerializePacketToXML(fileName, irPacket);

                        //Создаем объект AV-устройства, чтобы мы могли хранить данные сигнала в файле XML.
                        var avDeviceDB = new AVDeviceDB();

                        var avDevice = new AVDevice("Sample Device", AVDevice.AVDeviceType.SET_TOP_BOX);
                        avDeviceDB.AddAVDevice(avDevice);

                        irPacket.Name = "New Signal";

                        //Добавить сигналы в «Sample Device».
                        avDevice.AddSignal(irPacket, false);

                        //Храните это как файл XML...
                        var        ser    = new XmlSerializer(typeof(AVDeviceDB));
                        TextWriter writer = new StreamWriter((new FileInfo(fileName)).FullName);
                        ser.Serialize(writer, avDeviceDB);
                        writer.Close();

                        MessageBox.Show("ИК-данные c ПДУ сохранены в формате XML в файл:\n" + fileName);
                    }
                    else
                    {
                        RRUtil.SerializePacketToBinary(fileName, irPacket);
                        MessageBox.Show("Saved in binary format to file: " + fileName);
                    }

                    //xmlDoc.WriteEndDocument();
                    //xmlDoc.Close();
                }
                else
                {
                    MessageBox.Show("Сигнал пуст.");
                    return;
                }
            }
        }