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 код."); } } }
//Захват сигнала 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; } } }