Hirdetés

Keresés

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

  • dqdb

    nagyúr

    válasz t-shirt #8650 üzenetére

    A soros port egy olyan állatfajta, amit egyszerre csak egy példányban lehet megnyitni, ráadásul full duplex átvitelre képes, így azon az egy példányon keresztül mehet a küldés-fogadás.

    Emellett érdemes rászokni a using használatára olyan esetben, amikor IDisposable interfészt megvalósító osztállyal dolgozol, mint a SerialPort, hogy exception esetében is garantáltan meghívódjon a Dispose metódus.

    Vakon belemódosítva valami ilyesmi lenne:

    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApp1
    {
    class Program
    {
    static void Main(string[] args)
    {
    using (var port = new SerialPort("COM4"))
    {
    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();

    Console.WriteLine("Küldj üzenetet a COM4 portra:");
    while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)) {
    WriteData(port, Console.ReadLine());
    }
    }

    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();
    Console.WriteLine("A vissza jövö uzenet a COM4 port ra: " + dataReceived);
    }
    }
    }

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