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; } }