示例#1
0
        public static string SignalToString(ModulatedSignal signal)
        {
            if (signal == null)
            {
                new ArgumentNullException("Сигнал пуст").Throw();
            }
            string _return = "<";

            _return += string.Join(" ", signal.Lengths);
            _return += "> ";
            string sigData = string.Empty;

            foreach (byte tab in signal.SigData)
            {
                if (tab >= 0 && tab <= 9)
                {
                    sigData += tab;
                }
                else
                {
                    sigData += Convert.ToChar(tab);
                }
            }
            return(_return + sigData);
        }
示例#2
0
 public static string SignalToNEC(ModulatedSignal incIRPacket)
 {
     if (incIRPacket == null)
     {
         new ArgumentNullException("Сигнал пуст").Throw();
     }
     return(SignalToNEC(string.Join("", incIRPacket.MainSignal)));
 }
示例#3
0
        public static ModulatedSignal GetSignalFromMain(byte[] mainSignal)
        {
            if (mainSignal == null)
            {
                throw new Exception("Основные сигналы не могут быть нулевыми");
            }
            ModulatedSignal modSig = GetSignalDefault();

            modSig.MainSignal = mainSignal;
            return(modSig);
        }
示例#4
0
        public static ModulatedSignal GetSignalFromSigData(byte[] sigData)
        {
            if (sigData == null)
            {
                throw new Exception("Основные сигналы не могут быть нулевыми");
            }
            ModulatedSignal modSig = GetSignalDefault();

            modSig.SigData = sigData;
            return(modSig);
        }
示例#5
0
        protected ModulatedSignal CreateSignal(string name, byte[] mainSignal)
        {
            // Создание объекта сигнала - укажите его имя и частоту модуляции / несущей.
            var modSig = new ModulatedSignal
            {
                Name           = name,
                ModulationFreq = 38000
            };

            // Создать длины - ms.
            var lengths = new double[5];

            lengths[0]     = 8.897;
            lengths[1]     = 4.515;
            lengths[2]     = 0.558;
            lengths[3]     = 1.539;
            lengths[4]     = 1.671;
            modSig.Lengths = lengths;

            // Время паузы между основными и повторяющимися сигналами
            modSig.IntraSigPause = 0; // 40ms

            // Нет повторений раздела повтора
            modSig.NoRepeats = 0;

            // Данные сигнала
            if (mainSignal == null)
            {
                throw new Exception("Основные сигналы не могут быть нулевыми");
            }
            var sigData      = new byte[mainSignal.Length + 2];
            var sigDataCount = 0;

            // Добавление основных сигналов
            for (var i = 0; i < mainSignal.Length; i++, sigDataCount++)
            {
                sigData[sigDataCount] = mainSignal[i];
            }

            // Отметить конец основного сигнала
            sigData[sigDataCount++] = ModulatedSignal.EOS_MARKER;

            modSig.SigData = sigData;

            //MessageBox.Show("modSig " + Convert.ToString(modSig.SigData), "Сигнал", MessageBoxButtons.OK);

            return(modSig);
        }
示例#6
0
        private static ModulatedSignal GetSignalDefault()
        {
            var modSig = new ModulatedSignal {
                ModulationFreq = 38000
            };                                                           //38000
            var lengths = new double[]
            {
                //3.343, 1.675, 0.414, 1.265
                //8.908, 4.506, 0.558, 1.692, 2.269 //Hartens
                8.9, 4.52, 0.55, 1.6, 7.92 //default
            };

            modSig.Lengths       = lengths;
            modSig.IntraSigPause = 40; // 39.62
            modSig.NoRepeats     = 1;
            return(modSig);
        }
示例#7
0
        public static ModulatedSignal CreateSignal(byte[] mainSignal, string name = "New Signal")
        {
            if (mainSignal == null)
            {
                throw new Exception("Основные сигналы не могут быть нулевыми");
            }
            ModulatedSignal modSig = GetSignalDefault();

            modSig.Name = name;
            var sigData      = new byte[mainSignal.Length + 2];
            var sigDataCount = 0;

            for (var i = 0; i < mainSignal.Length; i++, sigDataCount++)
            {
                sigData[sigDataCount] = mainSignal[i];
            }
            sigData[sigDataCount++] = ModulatedSignal.EOS_MARKER;
            modSig.SigData          = sigData;
            return(modSig);
        }
        /// <summary>
        /// Обрабатывает входной сигнал (или ошибку) из RedRat.
        /// </summary>
        public void SignalDataHandler(object sender, EventArgs e)
        {
            if (e is SignalEventArgs)
            {
                var siea = (SignalEventArgs)e;

                switch (siea.Action)
                {
                //case SignalEventAction.EXCEPTION:
                //    MessageBox.Show(siea.Exceptionex.Info());
                //    break;

                case SignalEventAction.MODULATED_SIGNAL:
                    //MessageBox.Show("Есть ИК-данные...");
                    modSignal = siea.ModulatedSignal;
                    break;

                //case SignalEventAction.IRDA_PACKET:
                //    MessageBox.Show("Have IR data IRDA_PACKET...");
                //    irPacket = siea.IrDaPacket;
                //    break;
                case SignalEventAction.INPUT_CANCELLED:
                    break;

                default:
                    logger.Trace("Сигнал не пришел");
                    //MessageBox.Show("Сигнал не пришел");
                    break;
                }

                haveSignal = true;
            }
            else
            {
                logger.Warn("Event of unknown type....");
                Ex.Show("Event of unknown type....");
            }
        }
示例#9
0
        public static ModulatedSignal GetSignalFromLengthStr(string sigStr)
        {
            if (sigStr == null)
            {
                throw new Exception("Основные сигналы не могут быть нулевыми");
            }
            ModulatedSignal modSig      = GetSignalDefault();
            var             regexLength = new Regex(@"<[^a-z]+>");

            try
            {
                string   lengthSig    = regexLength.IsMatch(sigStr) ? regexLength.Match(sigStr).Value : null;
                var      lengthStr    = lengthSig.Trim(' ', '<', '>').Split(' ', '-');
                double[] lengthDouble = Array.ConvertAll(lengthStr, s => double.Parse(s));
                modSig.Lengths = lengthDouble;

                var sigDataStr = sigStr.Replace(lengthSig, string.Empty).Trim();
                var sigDataArr = new List <byte>(52);
                foreach (var tab in sigDataStr)
                {
                    byte number;
                    if (Byte.TryParse(tab.ToString(), out number))
                    {
                        sigDataArr.Add(number);
                    }
                    else
                    {
                        sigDataArr.Add((byte)tab);
                    }
                }
                modSig.SigData = sigDataArr.ToArray();
            }
            catch (Exception ex)
            {
                new Exception("Неверная строка сигнала", ex).Throw();
            }
            return(modSig);
        }
        // Обрабатывает входной сигнал (или ошибку) из RedRat.
        public void SignalDataHandler(object sender, EventArgs e)
        {
            if (e is SignalEventArgs)
            {
                var siea = (SignalEventArgs)e;

                switch (siea.Action)
                {
                //case SignalEventAction.EXCEPTION:
                //    MessageBox.Show(siea.Exception.Message);
                //    break;
                case SignalEventAction.MODULATED_SIGNAL:
                    //MessageBox.Show("Есть ИК-данные...");
                    irPacket  = siea.ModulatedSignal;
                    modSignal = siea.ModulatedSignal;
                    break;

                //case SignalEventAction.IRDA_PACKET:
                //    MessageBox.Show("Have IR data IRDA_PACKET...");
                //    irPacket = siea.IrDaPacket;
                //    break;
                case SignalEventAction.INPUT_CANCELLED:
                    break;

                default:
                    MessageBox.Show("Сигнал не пришел...");
                    break;
                }

                haveSignal = true;
            }
            else
            {
                MessageBox.Show("Событие неизвестного типа...");
            }
        }