C# 如何在C中使用SerialPort的dataReceived事件#

C# 如何在C中使用SerialPort的dataReceived事件#,c#,serial-port,balance,C#,Serial Port,Balance,我有一个应用程序,可以从EXA品牌的秤上,从串行端口c#检索数据。 我也想做同样的事情,但这次是另一个品牌KERN PFB,问题是SerialDataReceiveDevenHandler事件从未执行。我不知道我在这里错过了什么 我试过这个: 我希望数据已收到,但未收到 多谢各位 那么它与设备X完美配合,但与设备Y不配合?更可能是波特率/奇偶校验/停止/数据/握手/rts配置问题?您在哪里调用SetSetting()方法?是的,它与设备X完美配合,但与设备Y不完美。@CaiusJardI在sbP

我有一个应用程序,可以从EXA品牌的秤上,从串行端口c#检索数据。 我也想做同样的事情,但这次是另一个品牌KERN PFB,问题是SerialDataReceiveDevenHandler事件从未执行。我不知道我在这里错过了什么

我试过这个:

我希望数据已收到,但未收到

多谢各位


那么它与设备X完美配合,但与设备Y不配合?更可能是波特率/奇偶校验/停止/数据/握手/rts配置问题?您在哪里调用SetSetting()方法?是的,它与设备X完美配合,但与设备Y不完美。@CaiusJardI在sbPeser_单击中调用SetString()方法,如下所示:private void sbPeser_单击(对象发送方,事件参数e){setSetSetting();float poid=GetPesage();/…/}@jdwengt问题是即使接收到数据,也不会调用事件处理程序。
    public static  SerialPort mySerialPort = new SerialPort("COM1");
    public static string indata = string.Empty;

    public static void SetSetting()
    {
        mySerialPort.BaudRate = 9600;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;
        mySerialPort.RtsEnable = true;

        mySerialPort.DataReceived += MySerialPort_DataReceived;
    }

    public static void MySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        indata += sp.ReadExisting();
    }

    public static float GetPesage()
    {
        indata = string.Empty;
        mySerialPort.Open();
        Thread.Sleep(1000);

        string[] dataSplited = indata.Trim().Split(' ');            
        float poids = 0;
        //
        ...
        //

        mySerialPort.Close();
        return poids;
    }
 Command S : Stable weighing value for the weight is sent via the interface
public static float GetPesage()
{
    indata = string.Empty;
    mySerialPort.Open();
    mySerialPort.Write("s");
    Thread.Sleep(1000);
    string[] dataSplited = indata.Trim().Split(' ');            
    float poids = 0;
    //
    ...
    //
    mySerialPort.Close();
    return poids;
}