Hej!
Piszę program, który ma za zadanie regulację prędkości obrotowej silniczka DC w połączeniu z Arduino. Projekt na studia, nic specjalnego.
Ma to polegać na tym, że dostajemy dwie prędkości i zrównujemy je ze sobą (regulując jedną z nich) jesli wystąpi znacząca dla nas różnica między tymi wielkościami.
Program napisany, za regulację odpowiada metoda, która przyjmuje dwie wartości i zwraca jedną wyregulowaną. Działa dla zadanych wartości.

I tutaj pytanie.
Potrzebuję stworzyć pętlę, w której będę co sekundę pobierać dane z USB (Arduino) - czyli dwie wartości i korzystając z wczesniej opisanej metody regulować a następnie wysyłać prędkość wyjściową.
Korzystamy z jednego portu, a od wykładowcy usłyszałam tylko "No masz ramkę" - no tak oczywiste.......

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;

namespace Test
{
    class Program
    {

        static public void Main(string[] args)
        {
            bool a = true;
            string w;
            int wk = 0;     //wartosc predkosci obrotowej w dla koła
            int wb = 0;     //wartosc predkosci obrotowej w dla biezni

            SerialPort port = new SerialPort();
            port.PortName = "COM3";     //jaki port chce otworzyć
            port.BaudRate = 9600;       //prędkość 
            port.Open();

            try
            {
                while (a)
                {
                    wk = Convert.ToInt32(port.ReadByte());      //i tutaj nie mam pojęcia co z tymi wartościami....
                    wb = Convert.ToInt32(port.ReadByte());  

                    if (wk > 255 || wk < 25) 
                    {
                        Console.WriteLine("houston mamy problem");
                        wk = 0;
                        w = Convert.ToString(wk);
                        Console.WriteLine("w = " + w);
                        a = false;
                        Console.ReadKey();
                        port.WriteLine(w);

                    } //kiedy w jest niewiarygodna
                    else
                    {
                        w = Convert.ToString(AngularReg(wk, wb));
                        Console.WriteLine();
                        port.WriteLine(w);
                    }

                }
            }
            catch(TimeoutException)
            {
                Console.WriteLine("Brak odpowiedzi portu");
            }
            catch(FormatException)
            {
                Console.WriteLine("Blad konwertowania zmiennej wejsciowej");
            }
            Console.ReadKey();

        }
        static public int AngularReg(int wk, int wb) //funkcja regulująca prędkość
        {

            if (wb != wk)
            {
                if ((wb > 0.9 * wk && wb < 1.1 * wk) || (wk > 0.9 * wb && wk < 1.1 * wb))
                {
                    return wk;
                }
                else wk = wb;
            }

            return wk;
        }

    }
}