C# read only Serial port when data comes

前端 未结 2 2054
旧巷少年郎
旧巷少年郎 2020-12-03 02:13

I want read my serial port but only when data comes(I want not polling).

This is how I do it.

                Schnittstelle = new SerialPort(\"COM3\"         


        
2条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-03 02:38

    You will have to add an eventHandler to the DataReceived event.

    Below is an example from msdn.microsoft.com, with some edits: see comments!:

    public static void Main()
    {
        SerialPort mySerialPort = new SerialPort("COM1");
    
        mySerialPort.BaudRate = 9600;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;
    
        mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
    
        mySerialPort.Open();
    
        Console.WriteLine("Press any key to continue...");
        Console.WriteLine();
        Console.ReadKey();
        mySerialPort.Close();
    }
    
    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Debug.Print("Data Received:");
        Debug.Print(indata);
    }
    

    Everytime data comes in, the DataReceivedHandler will trigger and prints your data to the console. I think you should be able to do this in your code.

提交回复
热议问题