Új hozzászólás Aktív témák

  • t-shirt

    veterán

    Sikerült megírni amit szerettem volna, de nem lett túl elegáns, ami valószínűleg csak az én járatlanságomnak köszönhető.
    A port kommunikáció elvár működése: a „munkagép” küld egy üzenetet a soros porton keresztül a PC-nek miszerint várja a következő adatot. A program ezt az eseményt érzékelve egy tömbből elküldi a következő adatot és várja az újabb adatkérést.

    A gondom azzal volt, hogy a példa programban amit sikerült életre kelteni a küldés és fogadás külön metódus, és nem sikerült egybe gyúrnom a kettőt. Szerintem az egyik ideális megoldás az lenne, hogy a fogadás metódusnál megtörténik az esemény kezelés és az meghívná a küldés metódust. Ezt viszont nem tudtam megírni mert ahhoz, hogy meghívjam a küldésnek át kell adnom a többek között a ’port’-ot is, de azt meg nem tudtam bevinni a ’Port_DataReceived’-hez.

    A jelenlegi működés az hogy ha jön üzenet akkor egy változóba írok ’mentes_valtozo’ ezt a változót egy ciklusban (main, using) kiértékelve meghívom a küldés metódust és nullázom a ’mentes_valtozo’-t.

    using (var port = new SerialPort("COM" + cp))
    {
    port.BaudRate = 9600;
    port.Parity = Parity.None;
    port.StopBits = StopBits.One;
    port.DataBits = 8;
    port.Handshake = Handshake.None;
    port.RtsEnable = true;

    port.DataReceived += Port_DataReceived;
    port.Open();


    while (fo_tomb_index <= (fo_tomb_merete-1))
    {
    if (mentes_valtozo != null)
    {
    WriteData(port, fo_tomb[fo_tomb_index]);
    mentes_valtozo = null;
    Console.WriteLine(fo_tomb[fo_tomb_index]);
    fo_tomb_index++;
    }

    }

    }

    }
    private static string mentes_valtozo;

    private static void WriteData(SerialPort port, string readLine)
    {
    port.WriteLine(readLine);
    }

    private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
    var sp = (SerialPort)sender;
    string dataReceived = sp.ReadExisting();
    mentes_valtozo = dataReceived;
    }

    [ Szerkesztve ]

Új hozzászólás Aktív témák