private async Task Run() { //ListAvailiblePorts(); var spf = new SerialPortFactory(); var serialPort = spf.Create("COM3", baudRate: 115200); var of = new ObservableFactory(); var linesObservable = of.GetLinesObservable(serialPort); linesObservable.Subscribe(Console.WriteLine); var sw = Stopwatch.StartNew(); while (sw.Elapsed.TotalMinutes < 1 && !serialPort.IsOpen) { try { serialPort.Open(); } catch (IOException IoException) when(IoException.Message.EndsWith("does not exist.")) { //we ignore this error and try again } await Task.Delay(TimeSpan.FromMilliseconds(300)); } await linesObservable.ToTask(); }
public void GetBinaryGenericMetaData() { var serializer = new JsonSerializer(); string eventName = "File"; byte[] message = new byte[] { 1, 2, 3 }; var metaData = new List <KeyValue>(); string serializedMetaData = serializer.Serialize(metaData); Action <object, string> onMetaSerialized = (cSharpObj, json) => { Assert.Equal(serializedMetaData, json); Assert.True(cSharpObj is List <KeyValue>); }; var metaSerializer = new SerializationMock(onMetaSerialized); ConnectionMock connection = new ConnectionMock(); var factory = new ObservableFactory(connection, metaSerializer); // Sending generic T var observable = factory.GetBinary <List <KeyValue> >(eventName, metaSerializer); observable.Subscribe(msg => { Assert.Equal(message, msg.Data); Assert.Equal(metaData, msg.MetaData); }); var serverEvent = connection.ServerEvents[eventName] as Action <string, byte[]>; Assert.NotNull(serverEvent); serverEvent(serializedMetaData, message); }
//public IObservable<Tuple<KeyValuePair<DateTime, double>[], IEnumerable<KeyValuePair<DateTime, Tuple<double, double>[]>>>> LastPredictions { get; } public PredictionService2(IObservable <KeyValuePair <DateTime, double> > series, IScheduler scheduler) { List <KeyValuePair <DateTime, double> > lst = new List <KeyValuePair <DateTime, double> >(); series.SubscribeOn(scheduler).Subscribe(_ => lst.Add(_), () => Console.WriteLine("finished")); var y = ObservableFactory.Build(() => Helper.Trim(lst), TimeSpan.FromSeconds(1), scheduler) .Where(_ => _ != null).Distinct() .TakeUntil(series.Delay(TimeSpan.FromSeconds(0)).GetAwaiter()); Predictions = Filter.Optimisation.BGWorker.GetOptimisedGPPredictions(y, 1) /*.Take(TimeSpan.FromSeconds(15))*/; }
public void GetSerializedGenericMetaData() { string eventName = "Person"; Person message = new Person() { Name = "Alice", Age = 27 }; var metaData = new List <KeyValue>(); var serializer = new JsonSerializer(); string serializedMetaData = serializer.Serialize(metaData); string serializedData = serializer.Serialize(message); int serializationCounter = 0; Action <string, object> onDeserialized = (json, cSharpObj) => { if (cSharpObj is Person) { Assert.Equal(serializedData, json); } if (cSharpObj is List <KeyValue> ) { Assert.Equal(serializedMetaData, json); } Assert.True(cSharpObj is List <KeyValue> || cSharpObj is Person); serializationCounter++; }; var customSerializer = new SerializationMock(onDeserialized); ConnectionMock connection = new ConnectionMock(); var factory = new ObservableFactory(connection, serializer); // Sending generic MetaData var observable = factory.GetSerialized <Person, List <KeyValue> >(eventName, customSerializer); observable.Subscribe(msg => { Assert.Equal(message.Name, msg.Data.Name); Assert.Equal(message.Age, msg.Data.Age); Assert.Equal(metaData, msg.MetaData); }); var serverEvent = connection.ServerEvents[eventName] as Action <string, string>; Assert.NotNull(serverEvent); serverEvent(serializedMetaData, serializedData); Assert.Equal(2, serializationCounter); }
//public IObservable<Tuple<KeyValuePair<DateTime, double>[], IEnumerable<KeyValuePair<DateTime, Tuple<double, double>[]>>>> LastPredictions { get; } public PredictionService4(IObservable <KeyValuePair <DateTime, Tuple <double, double> > > series, IScheduler scheduler) { List <KeyValuePair <DateTime, Tuple <double, double> > > lst = new List <KeyValuePair <DateTime, Tuple <double, double> > >(); series.SubscribeOn(scheduler).Subscribe(_ => lst.Add(_), () => Console.WriteLine("finished")); var y = ObservableFactory.Build(() => Helper.Trim(lst), TimeSpan.FromSeconds(3), scheduler) .Where(_ => _ != null); //.TakeUntil(series.Delay(TimeSpan.FromSeconds(0)).GetAwaiter()); var prs1 = Filter.Optimisation.BGWorker.GetOptimisedKFPredictions(y.Select(_ => _.Select(_d => new KeyValuePair <DateTime, double>(_d.Key, _d.Value.Item1)).ToArray()), 5).Select(_ => _.Output); /*.Take(TimeSpan.FromSeconds(15))*/; var prs2 = Filter.Optimisation.BGWorker.GetOptimisedKFPredictions(y.Select(_ => _.Select(_d => new KeyValuePair <DateTime, double>(_d.Key, _d.Value.Item2)).ToArray()), 5).Select(_ => _.Output); Predictions = prs1.Zip(prs2, (c, d) => c.Zip(d, (e, f) => new KeyValuePair <DateTime, Tuple <double, double>[]>(f.Key, Combine(e.Value, f.Value)))); }
public void GetStringGenericMetaData() { var serializer = new JsonSerializer(); string eventName = "Chat"; string message = "Hola"; var metaData = new List <KeyValue>(); string serializedMetaData = serializer.Serialize(metaData); ConnectionMock connection = new ConnectionMock(); var factory = new ObservableFactory(connection, serializer); // Sending generic T var observable = factory.GetString <List <KeyValue> >(eventName, serializer); observable.Subscribe(msg => { Assert.Equal(message, msg.Data); Assert.Equal(metaData, msg.MetaData); }); var serverEvent = connection.ServerEvents[eventName] as Action <string, string>; Assert.NotNull(serverEvent); serverEvent(serializedMetaData, message); }