Windows 10中未触发串行端口事件处理程序

时间:2019-03-01 03:51:29

标签: c# serial-port

以下是我在开发中使用的代码。

    static void Main(string[] args)
    {
        SerialPort mySerialPort = new SerialPort("COM28");

        mySerialPort.BaudRate = 9600;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;
        mySerialPort.RtsEnable = true;

        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();
        Console.WriteLine("Data Received:");
        Console.Write(indata);
    }

但是问题是,此功能在Windows 7 pc中工作正常。但不是在Windows 10 pc中。 Windows 10.serial端口打开中没有显示任何错误,监听工作正常。但是在Windows 10中,它永远不会触发方法'DataReceivedHandler'。

1 个答案:

答案 0 :(得分:0)

对我来说,这段代码非常有效。我曾经模拟串行端口“虚拟串行端口9”,并创建了互连的COM28和COM30。

要使用COM30编写Termite 3.4软件,该软件会为您的软件提交一个“ Hello World”并收到。

我只是在代码中对其进行了更改,但对其没有影响。

        SerialPort mySerialPort = new SerialPort("COM28")
        {
            BaudRate = 9600,
            Parity = Parity.None,
            StopBits = StopBits.One,
            DataBits = 8,
            Handshake = Handshake.None,
            RtsEnable = true
        };

enter image description here