Exemple #1
0
        public MainWindow()
        {
            view = new ViewParams();
            InitializeComponent();
            scale   = new ScaleTransform(1, 1, 0, 0);
            pan     = new TranslateTransform(0, plot.Height);
            signals = new SignalCollection(this);
            signals.scaleSignalStrokes(scale);
            signals.updateLabels();
            resetTransform();
            ports = SerialPort.GetPortNames();

            Console.WriteLine("ports:");
            foreach (string port in ports)
            {
                comportList.Items.Add(port.ToString());
                Console.WriteLine(port);
            }
            arduinoPort             = new SerialPort();
            arduinoPort.Parity      = Parity.None;
            arduinoPort.StopBits    = StopBits.One;
            arduinoPort.DataBits    = 8;
            arduinoPort.BaudRate    = 115200;
            arduinoPort.ReadTimeout = 200;
            if (comportList.Items.Count > 0)
            {
                arduinoPort.PortName = comportList.Items[0].ToString();
            }
            else
            {
                Console.WriteLine("No ports available");
                connectButton.IsEnabled = false;
            }
        }
        //Constructor
        public SignalCollection(MainWindow uiWindow)
        {
            brushes = new List <SolidColorBrush>();
            brushes.Add(Brushes.MediumVioletRed);
            brushes.Add(Brushes.LightBlue);
            brushes.Add(Brushes.BurlyWood);
            brushes.Add(Brushes.LightPink);
            brushes.Add(Brushes.Yellow);
            brushes.Add(Brushes.LightGreen);
            brushes.Add(Brushes.Gold);
            window         = uiWindow;
            dataDispatcher = window.Dispatcher;
            signals        = new List <Signal>(0);
            this.view      = uiWindow.view; //set initial view params
            //view.XMAX = 2000;
            view.YMIN      = 0;
            view.YMAX      = 255;
            view.XMIN      = 0;
            view.LINESCALE = 1;
            horizontals    = new List <gridLine>(10);
            verticals      = new List <gridLine>(10);
            plotlineH      = createHLine(0, false);
            plotlineH.hideLabel();
            plotlineV = createVLine(0, false);
            plotlineV.hideLabel();
            preparePlot();

            drawWorkerDelegate w = drawWorker;

            w.BeginInvoke(null, null);

            //addSignal(true);
        }
Exemple #3
0
        public Signal(MainWindow main, bool fake = false)
        {
            this.view   = main.view; //Refer to the view parameters
            values      = new List <double>(0);
            window      = main;
            line        = new Path(); //Path, to be filled with streamgeometry
            line.Stroke = Brushes.Red;
            line.SnapsToDevicePixels = true;
            line.Visibility          = Visibility.Visible;
            line.RenderTransform     = new ScaleTransform(1.0, view.LINESCALE);
            createGeometry();
            window.plot.Children.Add(line);

            //Create pointer
            pointer        = new Ellipse();
            pointer.Fill   = line.Stroke;
            pointer.Width  = 5;
            pointer.Height = 5;
            pointer.Name   = "signalPointer";
            window.plot.Children.Add(pointer);
            setThickness(1 / (main.plot.Height / view.YMAX));
            Canvas.SetLeft(pointer, -10);
            Canvas.SetTop(pointer, -10);


            if (fake)   //Create dummy graph
            {
                Random random = new Random();
                //Fill the signal with 200 random data points
                for (int i = 0; i < 2000; i++)
                {
                    int randomNumber = (int)Math.Floor(500 * Math.Sin(i * (Math.PI / 180))) + 500;
                    addValue(randomNumber);
                }
            }
        }