在C#winform中的按钮单击事件上尝试从串行端口读取数据?

在C#winform中的按钮单击事件上尝试从串行端口读取数据?,c#,winforms,serial-port,C#,Winforms,Serial Port,我在winform应用程序中从串行端口读取数据时遇到问题…这是我的代码 private void rtrvBtn_Click(object sender, EventArgs e) { btnid = 2; mySerialPort = new SerialPort(port); mySerialPort.Open(); compacket(btnid); if (combuffer[0] != 0)

我在winform应用程序中从串行端口读取数据时遇到问题…这是我的代码

private void rtrvBtn_Click(object sender, EventArgs e)
    {
        btnid = 2;
        mySerialPort = new SerialPort(port);
        mySerialPort.Open();
        compacket(btnid);

        if (combuffer[0] != 0)
        {
            mySerialPort.Write(combuffer, 0, 4);
            System.Threading.Thread.Sleep(500);
            mySerialPort.DataReceived += new SerialDataReceivedEventHandler(this.port_rec);
        }
        else
        {
            lblmsg.Text = "FL";
        }
        mySerialPort.Close();


        rtrvBtn.Enabled = false;
        conBtn.Enabled = true;
    }

public void port_rec(object sender, SerialDataReceivedEventArgs e)
    {
        string s = Convert.ToString(mySerialPort.ReadExisting());
        MessageBox.Show(s);
    }
所以这里我没有得到任何数据,也没有输入port_rec事件。。有人能帮忙吗。。。我的串口设置如下

 public void SettingRS232(string port)
    {
        try
        {
            mySerialPort = new SerialPort(port);
            mySerialPort.PortName = port;
            mySerialPort.BaudRate = 9600;
            mySerialPort.Parity = Parity.None;
            mySerialPort.StopBits = StopBits.One;
            mySerialPort.DataBits = 8;
            mySerialPort.Handshake = Handshake.None;
            mySerialPort.ReadTimeout = 2000;
            mySerialPort.WriteTimeout = 500;

            mySerialPort.DtrEnable = true;
            mySerialPort.RtsEnable = true;


        }
        catch (Exception ex)
        {
            lblmsg.Text = ex.Message;
        }
    }

伙计们,帮帮我吧

我猜这两个方法与mySerialPort字段在同一个类中。您不应该在单击事件中创建新的串行端口对象,您应该使用您已有的串行端口对象。

是的,我以前尝试过,但不起作用。。数据不正常,所以我现在尝试了这个,数据正常,我检查过了,但我现在无法读取