Hirdetés

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

  • t-shirt

    veterán

    Sziasztok!

    Egy kis segítséget szeretnék kérni. Nem vagyok túl jártas a C# nyelvben, de össze kellene raknom egy kis programot. Amivel gondom akadt, hogy a programnak soros porton keresztül kell adatot fogadnia és küldenie.

    Össze ollóztam a netről egy kis programot, amivel a kommunikációt akartam lepróbálni, de sajnos csak részben működik. A program fogadni képes a portra érkező adatot, de ha küldök rá akkor ledob hibával, a „sendSerialPort.Open();” sort jelöli ki és valami olyasmi volt a hibaüzenet hogy nincs jogosultságom (nem vagyok otthon így nem tudom pontosan).

    Ha valakinek van ötlete, hogy mi lehet a hiba a programban vagy tud egy jó leírást soros port kommunikációjához esetleg akad egy működő példa program soros portra azt nagyon megköszönném.

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

    namespace ConsoleApp1
    {
    class Program
    {
    static void Main(string[] args)
    {
    SerialPort 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(Console.ReadLine());
    }
    port.Close();
    sendSerialPort.Close();
    }

    static SerialPort sendSerialPort = new SerialPort("COM4");

    private static void WriteData(string readLine)
    {
    if(sendSerialPort.IsOpen == false)
    {
    sendSerialPort.BaudRate = 9600;
    sendSerialPort.Parity = Parity.None;
    sendSerialPort.StopBits = StopBits.One;
    sendSerialPort.DataBits = 8;
    sendSerialPort.Handshake = Handshake.None;
    sendSerialPort.RtsEnable = true;

    sendSerialPort.Open();
    }

    sendSerialPort.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