Example #1
0
        private static void MorseSignalDetect(string outputFileName, CancellationTokenSource cts)
        {
            TCPReader reader = new TCPReader();

            reader.Chain(new SignalPreProcessor()
            {
                IQOutput = IQOutputEnum.IChannel
            })
            .Chain(new IQ2Wave(Frequency, SampleRate))
            //.Chain(new SkipSample<float>(250000 / 1000))
            .Chain(new LPF(Frequency, SampleRate, 1000f))
            .Chain(new MoveAverage())
            .Chain(new SignalCompare(0.2f))
            .Chain(new SampleCounter())
            .Chain(new SignalToByteArray(map, SIGNAL_LENGTH))
            .Chain(new MorseDecode())
            .Chain(new SignalReverse())
            .Chain(new SaveToFilePipeline <IEnumerable <bool> >(outputFileName, x =>
            {
                var data = from item in x
                           select item ? "1" : "0";
                return(DateTime.Now.ToString("s") + "," + string.Join(',', data));
            }, "time,data")
            {
                ConsoleOutput = true
            });
            ;
            reader.Start(server, cts.Token);
        }
Example #2
0
        private static void WeatherDataOutput(string outputFileName, CancellationTokenSource cts)
        {
            TCPReader reader = new TCPReader();

            reader.Chain(new SignalPreProcessor()
            {
                IQOutput = IQOutputEnum.IChannel
            })
            .Chain(new IQ2Wave(Frequency, SampleRate))
            //.Chain(new SkipSample<float>(250000 / 1000))
            .Chain(new LPF(Frequency, SampleRate, 1000f))
            .Chain(new MoveAverage())
            .Chain(new SignalCompare(0.2f))
            .Chain(new SampleCounter())
            .Chain(new SignalToByteArray(map, SIGNAL_LENGTH))
            .Chain(new MorseDecode())
            .Chain(new SignalReverse())
            .Chain(new MisolWeatherStationDecoder())
            //.Chain(new ResultToConsole<MisolWeahterData>())
            .Chain(new SaveToFilePipeline <MisolWeahterData>(outputFileName, x =>
            {
                return($"{DateTime.Now.ToString("s")},{Newtonsoft.Json.JsonConvert.SerializeObject(x)}");
            }, "time,data")
            {
                ConsoleOutput = true
            });
            ;
            reader.Start(server, cts.Token);
        }
Example #3
0
        private static void dumpSignalIQ(string output, CancellationTokenSource cts)
        {
            TCPReader reader = new TCPReader();

            reader.Chain(new SignalPreProcessor())
            //.Chain(new IQ2Wave(433900000, 250000))
            //.Chain(new LPF(433900000f, 250000f, 1000f))
            //.Chain(new SkipSample<Complex>(100))
            //.Chain(new MoveAverage())
            .Chain(new SaveToFilePipeline <Complex>(output, x => { return($"{x.Image},{x.Real}"); }, "I,Q"));
            reader.Start(server, cts.Token);
        }
Example #4
0
        private static void dumpSignalIQRAW(string output, CancellationTokenSource cts)
        {
            TCPReader reader = new TCPReader();

            reader
            //.Chain(new SignalPreProcessor())
            //.Chain(new IQ2Wave(Frequency, 250000))
            //.Chain(new LPF(Frequency, 250000f, 1000f))
            //.Chain(new SkipSample<Complex>(100))
            //.Chain(new MoveAverage())
            .Chain(new SaveToFilePipeline <byte[]>(output, x => { return($"{x}"); }));
            reader.Start(server, cts.Token);
        }
Example #5
0
        private static void dumpSignal(CancellationTokenSource cts)
        {
            TCPReader reader = new TCPReader();

            reader.Chain(new SignalPreProcessor()
            {
                IQOutput = IQOutputEnum.IChannel
            })
            .Chain(new IQ2Wave(Frequency, SampleRate))
            .Chain(new LPF(Frequency, SampleRate, 1000f))
            .Chain(new SkipSample <float>(SampleRate / 10000))
            //.Chain(new MoveAverage())
            .Chain(new SaveToFilePipeline <float>("output.csv", x => { return($"{x}"); }));
            reader.Start(server, cts.Token);
        }
Example #6
0
        static void Main(string[] args)
        {
            Dictionary <int, byte> map = new Dictionary <int, byte>
            {
                [0] = 0x0,
                [1] = 0x1
            };
            //map.Add(0, 0);
            //map.Add(1, 1);
            IConfiguration config = new ConfigurationBuilder()
                                    .AddJsonFile("config.json", true, false)
                                    .Build();
            var c = config.GetSection("rtl_tcp").Get <RadioConfig>();

            RadioConfig[] server = new RadioConfig[] { c };

            TCPReader reader = new TCPReader();
            var       node   = reader.Chain(new SignalPreProcessor()
            {
                IQOutput = IQOutputEnum.IChannel
            })
                               .Chain(new IQ2Wave(c.Frequency, c.SampleRate))
                               .Chain(new LPF(c.Frequency, c.SampleRate, 1000f))
                               .Chain(new MoveAverage())
                               .Chain(new SignalCompare(0.2f))
                               .Chain(new SampleCounter())
                               .Chain(new SignalToByteArray(map, SIGNAL_LENGTH))
                               .Chain(new MorseDecode())
                               .Chain(new SignalReverse())
                               .Chain(new MisolWeatherStationDecoder())
                               .Chain(new MQTTSink(config.GetSection("mqtt")?.Get <MQTTConfig>()))
                               .Chain(new IoTHubDeviceSink(config.GetSection("iothub_device")?.Get <IoTHubDeviceSinkConfig>()))
            ;

            reader.Start(server, cts.Token);
            Console.WriteLine("Application Started, Press Enter to exit");
            Console.ReadLine();
            cts.Cancel();
            Console.WriteLine("waiting for threads exit...");
            PipelineManager.Default.WaitAllExit();
            Console.WriteLine("done");
            Environment.Exit(0);
        }
Example #7
0
        private static void simpleTest(CancellationTokenSource cts)
        {
            TCPReader reader = new TCPReader();

            reader
            .Chain(new SignalPreProcessor()
            {
                IQOutput = IQOutputEnum.IChannel
            })
            .Chain(new IQ2Wave(Frequency, SampleRate))
            //.Chain(new LPF(Frequency, SampleRate, 1000f))
            //.Chain(new MoveAverage())
            //.Chain(new SignalCompare(0.2f))
            //.Chain(new SampleCounter())
            //.Chain(new SignalToByteArray(map, SIGNAL_LENGTH))
            //.Chain(new MorseDecode())
            //.Chain(new SignalReverse())
            //.Chain(new MisolWeatherStationDecoder())

            .Chain(new NullProcessor <float>());
            reader.Start(server, cts.Token);
        }
Example #8
0
        private static void BitSignalDetect(string outputFileName, CancellationTokenSource cts)
        {
            TCPReader reader = new TCPReader();

            reader.Chain(new SignalPreProcessor()
            {
                IQOutput = IQOutputEnum.IChannel
            })
            .Chain(new IQ2Wave(Frequency, SampleRate))
            //.Chain(new SkipSample<float>(250000 / 1000))
            .Chain(new LPF(Frequency, SampleRate, 1000f))
            .Chain(new MoveAverage())
            .Chain(new SignalCompare(0.2f))
            .Chain(new SampleCounter())
            .Chain(new SignalToByteArray(map, SIGNAL_LENGTH))
            .Chain(new SaveToFilePipeline <byte[]>(outputFileName, x => { return($"{BitConverter.ToString(x)}"); })
            {
                ConsoleOutput = true
            });
            ;
            reader.Start(server, cts.Token);
        }