private void accuracyButton_Click(object sender, EventArgs e) { frankChart.Series[0].Points.Clear(); geneticChart.Series[0].Points.Clear(); annealChart.Series[0].Points.Clear(); avgChart.Series[0].Points.Clear(); avgChart.Series[1].Points.Clear(); avgChart.Series[2].Points.Clear(); frankChart.Titles.Clear(); geneticChart.Titles.Clear(); annealChart.Titles.Clear(); avgChart.Titles.Clear(); for (int i = 2; i < numOfIterations.Value; i++) { CounterResult res = counter.CountTime(10, i, decimal.ToInt32(sumIntervalStart.Value), decimal.ToInt32(sumIntervalEnd.Value), decimal.ToInt32(amountIntervalStart.Value), decimal.ToInt32(amountIntervalEnd.Value)); frankChart.Series[0].Points.AddXY(i, res.FrankBetter / 10); geneticChart.Series[0].Points.AddXY(i, res.GeneticBetter / 10); annealChart.Series[0].Points.AddXY(i, res.AnnealBetter / 10); avgChart.Series[0].Points.AddXY(i, res.FrankBetter / 10); avgChart.Series[1].Points.AddXY(i, res.GeneticBetter / 10); avgChart.Series[2].Points.AddXY(i, res.AnnealBetter / 10); } frankChart.ChartAreas["ChartArea1"].AxisY.Title = "% of better solutions"; geneticChart.ChartAreas["ChartArea1"].AxisY.Title = "% of better solutions"; annealChart.ChartAreas["ChartArea1"].AxisY.Title = "% of better solutions"; avgChart.ChartAreas["ChartArea1"].AxisY.Title = "% of better solutions"; frankChart.Titles.Add("Залежність точності від кількості продуктів"); geneticChart.Titles.Add("Залежність точності від кількості продуктів"); annealChart.Titles.Add("Залежність точності від кількості продуктів"); avgChart.Titles.Add("Залежність точності від кількості продуктів"); }
private void timeButton_Click(object sender, EventArgs e) { frankChart.Series[0].Points.Clear(); geneticChart.Series[0].Points.Clear(); annealChart.Series[0].Points.Clear(); avgChart.Series[0].Points.Clear(); avgChart.Series[1].Points.Clear(); avgChart.Series[2].Points.Clear(); frankChart.Titles.Clear(); geneticChart.Titles.Clear(); annealChart.Titles.Clear(); avgChart.Titles.Clear(); for (int i = 2; i < numOfIterations.Value; i++) { CounterResult res = counter.CountTime(10, i, decimal.ToInt32(sumIntervalStart.Value), decimal.ToInt32(sumIntervalEnd.Value), decimal.ToInt32(amountIntervalStart.Value), decimal.ToInt32(amountIntervalEnd.Value)); frankChart.Series[0].Points.AddXY(i, res.WolfAvg); geneticChart.Series[0].Points.AddXY(i, res.GeneticAvg); annealChart.Series[0].Points.AddXY(i, res.AnnealAvg); avgChart.Series[0].Points.AddXY(i, res.WolfAvg); avgChart.Series[1].Points.AddXY(i, res.GeneticAvg); avgChart.Series[2].Points.AddXY(i, res.AnnealAvg); } frankChart.ChartAreas["ChartArea1"].AxisY.Title = "Execution time"; geneticChart.ChartAreas["ChartArea1"].AxisY.Title = "Execution time"; annealChart.ChartAreas["ChartArea1"].AxisY.Title = "Execution time"; avgChart.ChartAreas["ChartArea1"].AxisY.Title = "Execution time"; frankChart.Titles.Add("Залежність часу виконання програми від кількості продуктів"); geneticChart.Titles.Add("Залежність часу виконання програми від кількості продуктів"); annealChart.Titles.Add("Залежність часу виконання програми від кількості продуктів"); avgChart.Titles.Add("Залежність часу виконання програми від кількості продуктів"); }
private void AddInnerOperationResult(CounterResult result) { if (_innerOperationResults == null) { _innerOperationResults = new List <CounterResult>(); } _innerOperationResults.Add(result); }
private static void BuildMessage(CounterResult result, StringBuilder builder, String prefix = "\t") { builder.AppendLine().Append(prefix).Append(result.Name).Append(": ").Append(result.ElapsedMs).Append(" ms"); if (result.InnerResults == null) { return; } var nextPrefix = prefix + "\t"; foreach (var inner in result.InnerResults) { BuildMessage(inner, builder, nextPrefix); } }
public Reader() { var eventWriter = new EventWriter("CounterResults"); Receive <Shared.Event>(message => { Console.WriteLine($"Message received by Reader {Self}"); string paymentReference; switch ((MessageType)message.MessageType) { case MessageType.ApprovalStatusChanged: paymentReference = JsonConvert.DeserializeObject <PaymentApprovalStatusChangedMessage>(message.Message).PaymentReference; Console.WriteLine($"**ApprovalStatusChanged Event received for payment {paymentReference}"); break; case MessageType.PaymentStatusChanged: var pscmessage = JsonConvert.DeserializeObject <PaymentStatusChangedMessage>(message.Message); var calculator = new CustomerPaymentCounterCalculator(); var result = calculator.GetPaymentChanges(pscmessage); var eReader1 = new Hackathon.EventStore.Core.EventReader($"evt-{pscmessage.Payment.PaymentReference}"); var allMessages = eReader1.ReadAllMessages(pscmessage.Payment.PaymentReference); var counterResult = new CounterResult { CustomerReference = pscmessage.Customer.CustomerReference, PaymentReference = pscmessage.Payment.PaymentReference, Increment = result }; eventWriter.WriteEvent(counterResult.AsJsonString(), "IncrementCalculated"); Console.WriteLine($"**Event received for payment {pscmessage.Payment.PaymentReference}"); break; case MessageType.CustomerAccountChanged: paymentReference = JsonConvert.DeserializeObject <PaymentCustomerAccountChangedMessage>(message.Message).PaymentReference; Console.WriteLine($"**CustomerAccountChanged Event received for payment {paymentReference}"); break; case MessageType.WithdrawalChannelChanged: paymentReference = JsonConvert.DeserializeObject <WithdrawalChannelChangedMessage>(message.Message).PaymentReference; Console.WriteLine($"**WithdrawalChannelChanged Event received for payment {paymentReference}"); break; default: Console.WriteLine("arrrrr"); return; } }); }
static void Main(string[] args) { EventStoreLoader.SetupEventStore(); var eventReader = new EventReader("Payments"); var eventWriter = new EventWriter("CounterResults"); eventReader.ConnectToPersistentSubscription("Payments", "Payments_Counter", (_, e) => { var data = Encoding.ASCII.GetString(e.Event.Data); switch (e.Event.EventType) { case "PaymentStatusChanged": var pscmessage = data.ParseJson <PaymentStatusChangedMessage>(); var calculator = new CustomerPaymentCounterCalculator(); var result = calculator.GetPaymentChanges(pscmessage); var eReader1 = new EventReader($"evt-{pscmessage.Payment.PaymentReference}"); var allMessages = eReader1.ReadAllMessages(pscmessage.Payment.PaymentReference); var counterResult = new CounterResult { CustomerReference = pscmessage.Customer.CustomerReference, PaymentReference = pscmessage.Payment.PaymentReference, Increment = result }; eventWriter.WriteEvent(counterResult.AsJsonString(), "IncrementCalculated"); Console.WriteLine($"**Event received for payment {pscmessage.Payment.PaymentReference}"); break; case "ApprovalStatusChanged": var asmessage = data.ParseJson <PaymentApprovalStatusChangedMessage>(); break; case "CustomerAccountChanged": var camessage = data.ParseJson <PaymentCustomerAccountChangedMessage>(); break; case "WithdrawalChannelChanged": var wcmessage = data.ParseJson <WithdrawalChannelChangedMessage>(); break; default: Console.WriteLine("Cannot parse event type"); return; } }); Console.ReadLine(); }
public unsafe IResult Detect(SoftwareBitmap image) { CounterResult result = new CounterResult() { Count = 0, Image = new SoftwareBitmap(image.BitmapPixelFormat, image.PixelWidth, image.PixelHeight) }; image.CopyTo(result.Image); using (BitmapBuffer buffer = result.Image.LockBuffer(BitmapBufferAccessMode.Write)) { using (var reference = buffer.CreateReference()) { ((IMemoryBufferByteAccess)reference).GetBuffer(out byte *dataInBytes, out uint capacity); // Fill-in the BGRA plane BitmapPlaneDescription bufferLayout = buffer.GetPlaneDescription(0); for (int i = 0; i < bufferLayout.Height; i++) { for (int j = 0; j < bufferLayout.Width; j++) { int b = dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 0] - Color.B; int g = dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 1] - Color.G; int r = dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 2] - Color.R; if (b * b + g * g + r * r < Delta * Delta) { result.Count++; dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 0] = 0; dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 1] = 0; dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 2] = 255; dataInBytes[bufferLayout.StartIndex + bufferLayout.Stride * i + 4 * j + 3] = (byte)255; } } } } } return(result); }
public async Task <CounterResult> GetValue() { var random = new Random().Next(1, 1000); var counterState = await this.StateManager.GetOrAddAsync <IReliableDictionary <string, string> >( "counterState"); var cts = new CancellationTokenSource(); var token = cts.Token; token.ThrowIfCancellationRequested(); CounterResult result = null; await this.circuitBreaker.Invoke( async() => { // mocking service result. randomly failing the service call. var failureSeed = new Random().Next(1, 20); if (failureSeed % 3 == 0) { throw new ApplicationException(); } Thread.Sleep(TimeSpan.FromSeconds(2)); result = new CounterResult { Value = random, ReportTime = DateTime.UtcNow, CircuitState = "Open" }; using (var tx = this.StateManager.CreateTransaction()) { await counterState.AddOrUpdateAsync( tx, "savedCount", key => JsonConvert.SerializeObject(result), (key, val) => JsonConvert.SerializeObject(result)); await tx.CommitAsync(); } }, async() => { using (var tx = this.StateManager.CreateTransaction()) { // service faulted. read old value and populate. var value = await counterState.TryGetValueAsync(tx, "savedCount"); if (value.HasValue) { result = JsonConvert.DeserializeObject <CounterResult>(value.Value); } else { result = new CounterResult { ReportTime = DateTime.UtcNow, Value = 0 }; await counterState.AddOrUpdateAsync( tx, "savedCount", key => JsonConvert.SerializeObject(result), (key, val) => JsonConvert.SerializeObject(result)); await tx.CommitAsync(); } result.CircuitState = "Closed"; } }); return(result); }
public override CounterResult ExecuteCommand() { Result = new CounterResult(); StendDLLCommands stend = new StendDLLCommands(); try { stend.SetRefClockStend(0, StendSettings.ComPort); //Если стенд не оборудован блоком точности хода часов } catch (StendConnectionException) { } try { stend.ErrorClear(StendSettings.ComPort); //Если стенд однофазный и у него две токовые цепи, то выбираю первую цепь (A) if (StendSettings.OnePhaseTwoCircuits) { stend.SelectCurrentCircuit(0, StendSettings.ComPort); } stend.SetReviseMode(3); //Подаю напряжение на счетчики stend.AdjustUI(Phase, Rated_Volt, 0, Rated_Freq, PhaseSrequence, IsRevers, Volt_Per, Curr_Per, IABC, CosP, StendSettings.SModel, StendSettings.ComPort); //Даю время запуститься счетчикам Thread.Sleep(5000); if (IsActiveEnergy == 1) { StendSettings.Constant = StendSettings.ConstantAP; } else { StendSettings.Constant = StendSettings.ConstantRP; } //Запускаю тест for (int j = 0; j < StendSettings.ActivePlaces.Count; j++) { stend.setPulseChannel(StendSettings.ActivePlaces[j], (byte)(2 * (IsActiveEnergy == 1 ? 0 : 1) + IsRevers), StendSettings.ComPort); stend.ConstTestStart(StendSettings.ActivePlaces[j], StendSettings.Constant, StendSettings.ComPort); } //Подаю ток, который выставлен для испытания stend.AdjustUI(Phase, Rated_Volt, Rated_Curr, Rated_Freq, PhaseSrequence, IsRevers, Volt_Per, Curr_Per, IABC, CosP, StendSettings.SModel, StendSettings.ComPort); bool[] result = new bool[StendSettings.ActivePlaces.Count]; while (!Cancel) { double count = 0; for (int j = 0; j < StendSettings.ActivePlaces.Count; j++) { if (result[j]) { continue; } stend.ConstPulseRead(out double meter_kW, out double std_kW, StendSettings.Constant, StendSettings.ActivePlaces[j], StendSettings.ComPort); //Amount тут используется как количество энергии, которое должно поступить для окончания испытаний count += std_kW > Amount ? Amount : std_kW; result[j] = std_kW >= Amount; //Высчитываю процент погрешности между энергией, которую накрутил счётчик и которую посчитал эталонный счетчик установки if (result[j]) { Result[StendSettings.ActivePlaces[j]] = string.Format("{0:f5}", (100 * (1.0 - (meter_kW / std_kW)))) + "%"; } } Progress = ProgressMaxValue * count / (Amount * StendSettings.ActivePlaces.Count); //Дожидаюсь пока получу готовность подсчета всех счетчиков bool exit = true; for (int j = 0; j < StendSettings.ActivePlaces.Count; j++) { exit &= result[j]; } if (exit) { break; } Thread.Sleep(400); } Progress = ProgressMaxValue; } catch { Progress = ProgressMinValue; throw; } finally { stend.ErrorClear(StendSettings.ComPort); stend.PowerOff(StendSettings.ComPort); } return(Result); }
public void SetUserCancel() => Result = CounterResult.UserCancel;
public void SetSuccess() => Result = CounterResult.Success;
public void SetFailure() => Result = CounterResult.Failure;
public void SetUserFault() => Result = CounterResult.UserFault;