Ejemplo n.º 1
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 код.");
                }
            }
        }
Ejemplo n.º 2
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;
                }
            }
        }