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); }
public static string SignalToNEC(ModulatedSignal incIRPacket) { if (incIRPacket == null) { new ArgumentNullException("Сигнал пуст").Throw(); } return(SignalToNEC(string.Join("", incIRPacket.MainSignal))); }
public static ModulatedSignal GetSignalFromMain(byte[] mainSignal) { if (mainSignal == null) { throw new Exception("Основные сигналы не могут быть нулевыми"); } ModulatedSignal modSig = GetSignalDefault(); modSig.MainSignal = mainSignal; return(modSig); }
public static ModulatedSignal GetSignalFromSigData(byte[] sigData) { if (sigData == null) { throw new Exception("Основные сигналы не могут быть нулевыми"); } ModulatedSignal modSig = GetSignalDefault(); modSig.SigData = sigData; return(modSig); }
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); }
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); }
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...."); } }
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("Событие неизвестного типа..."); } }