【问题标题】:How do I use dataReceived event of the SerialPort in C#如何在 C# 中使用 SerialPort 的 dataReceived 事件
【发布时间】:2019-01-09 12:09:53
【问题描述】:

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

我试过这个:How do I use dataReceived event of the SerialPort Port Object in C#?

    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;
    }

我希望收到数据但没有收到。

谢谢。

【问题讨论】:

  • 所以它可以完美地与设备 X 一起工作,但不能与设备 Y 一起工作?更有可能是波特/奇偶校验/停止/数据/握手/rts 配置问题?
  • 你在哪里调用 SetSetting() 方法?
  • 是的,它适用于设备 X,但不适用于设备 Y。@CaiusJard
  • 我在 sbPeser_Click 中调用了 SetString() 方法,如下所示: private void sbPeser_Click(object sender, EventArgs e) { SetSetting();浮动 poids = GetPesage(); // ... // } @jdweng​​span>
  • 问题是事件处理程序永远不会被调用,即使正在接收数据。

标签: c# serial-port balance


【解决方案1】:
 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多