C# 如何调用串口C中的接收数据#

C# 如何调用串口C中的接收数据#,c#,serial-port,C#,Serial Port,我是C#串口的新手 我有一个虚拟串口驱动程序,并尝试此代码 private string strPortData = null; private void okButton_Click(object sender, EventArgs e) { if (!serialPort1.IsOpen) { serialPort1.Open(); }

我是C#串口的新手

我有一个虚拟串口驱动程序,并尝试此代码

 private string strPortData = null;

    private void okButton_Click(object sender, EventArgs e)
    {
                if (!serialPort1.IsOpen)
                {
                    serialPort1.Open();
                }

                string strPortData= "CMD1";

                serialPort1.WriteLine(strPortData);

    }

    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        textBox1.Text = serialPort1.ReadLine();
    }
但不要在任何时候调用serialPort1_DataReceived


我应该如何处理call DataReceived?

尝试创建一个新的控制台应用程序,代码如下所示

void Main()
{
    using (SerialPort serialPort1 = new SerialPort("COM1"))
    using (SerialPort serialPort2 = new SerialPort("COM2"))
    {
        serialPort1.DataReceived += (sender, args) => {
            Console.WriteLine("COM1 Received: " + serialPort1.ReadLine());
        };

        serialPort2.DataReceived += (sender, args) => {
            Console.WriteLine("COM2 Received: " + serialPort2.ReadLine());
        };

        serialPort1.Open();
        serialPort2.Open();

        serialPort1.WriteLine("Hello, COM2!");

        Thread.Sleep(200);
    }
}

上述代码打开两个串行端口,设置数据接收事件,并通过它发送数据。如果运行该代码,您将看到“COM2已接收:您好,COM2!”输出。

serialPort1.Dispose()使用异步通信看起来非常错误。。。您应该在发送命令后立即关闭端口。谢谢@AlexeiLevenkov的提示!但是我的问题还没有解决。@user3512208删除serialPort1.Close();全部陈述。你要在任何数据返回之前关闭它,就像阿列克谢说的。哦!我做错了什么事。谢谢你,马特。我编辑过。但我的问题是一样的!您的虚拟串行端口连接到什么?非常感谢@Matt!成功了!但是在第11行中,serialPort2.ReadLine()是正确的!你帮了我很多。祝你玩得愉快。@user3512208哦,好极了,我已经用你的补丁编辑了我的答案:)