using System;
using System.ComponentModel;
using System.Threading;
using System.Windows;
using MonoBrick.EV3;//use this to run the example on the EV3
namespace KockaTest
{
///
/// 3. Kolo , Uloha c. 1 - Kyvadlo
/// NAVOD NA OBSLUHU KOCKY JE NA :
/// http://www.monobrick.dk/software/monobrick/
/// Program na meranie signalu z optickeho senzora na EV3
///
public partial class MainWindow : Window
{
BackgroundWorker merac = new BackgroundWorker(); // proces ktory paraelne zbiera data z optickeho senzora na kocke
Brick EV3_kocka;
public MainWindow()
{
InitializeComponent();
intervalTB.Text = "30";
pocetTB.Text = "400";
MierkaXTB.Text = "5";
MierkaYTB.Text = "3";
try
{
EV3_kocka = new Brick("usb");
EV3_kocka.Connection.Open();
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine("Error: " + e.Message);
}
merac.DoWork += spustimeranie; // Metoda, ktora zbiera signaly zo senzora
merac.ProgressChanged += novemeranie; // Metoda, ktora sa zavola po kazdom novom merani a zobrazi novy bod na obrazovke
merac.WorkerReportsProgress = true;
}
private void button_zmaz_obrazovku(object sender, RoutedEventArgs e)
{
Ciara.Points.Clear();
}
private void button_zacni_merat(object sender, EventArgs e)
{
Interval = Convert.ToInt32(intervalTB.Text);
pocetmerani = Convert.ToInt32(pocetTB.Text);
MierkaX = Convert.ToDouble(MierkaXTB.Text);
MierkaY = Convert.ToDouble(MierkaYTB.Text);
merac.RunWorkerAsync();
}
private void spustimeranie(object sender, System.ComponentModel.DoWorkEventArgs e)
{
for (int i = 0; i < pocetmerani; i++)
{
Thread.Sleep(Interval);
X = i;
Y = Convert.ToDouble(EV3_kocka.Sensor1.ReadAsString()); // hodnota z optickeho senzora
data = new Point(X*MierkaX, Y*MierkaY); // novy bod
merac.ReportProgress(i); // vykreslenie na obrazovku
}
System.Diagnostics.Debug.WriteLine("Koniec - moze sa merat znova");
}
private void novemeranie(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
Ciara.Points.Add(data); // prida sa bod do zobrazenej ciary
}
int Interval;
int pocetmerani;
public double MierkaY = 5;
public double MierkaX = 3;
public Point data;
public double X;
public double Y;
}
}