从串行端口读取设定的时间量

本文关键字:时间 串行端口 读取 | 更新日期: 2023-09-27 18:34:23

我正在编写一个C#程序,该程序读取从arduino发送到串行端口的数字,将它们放入数据表中并将它们显示在图表中。目前,单击连接时,它将使用 DataReceivedHandler 事件方法从串行端口连续读取数据。

我在表单中有三个按钮:

  • 仅捕获单个数据输入的"runonce"按钮
  • 一个可选择的时间和"定时"按钮,仅允许在一段时间内读取数据
  • 一个"连续"按钮,将允许永久捕获数据
单击

其中一个按钮时,其他按钮将被禁用,单击的按钮将重命名为"停止"。

如何使此 datareceivedhandler 事件仅在需要时触发,如上所述?

从串行端口读取设定的时间量

您可以通过在按钮单击事件中添加和删除串行端口数据接收处理程序来实现所需的目标。第二种情况可能希望删除处理程序以响应计时器时钟周期事件。

像这样:

    private bool serialPortCapturing;
    private void btn1_Click(object sender, EventArgs e)
    {
        if (!serialPortCapturing)
        {
            serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort_DataReceived);
            serialPortCapturing = true;
        }
        else
        {
            serialPort.DataReceived -= new System.IO.Ports.SerialDataReceivedEventHandler(serialPort_DataReceived);
            serialPortCapturing = false;
        }
    }