串口停止输出数据时用定时器将文本框变红

Turning Textbox Red with a timer when serial port stops outputting data

我正在构建一个将串行数据读入文本框的 GUI。如果出现问题并且仪器停止工作,我希望文本框变为红色。我正在尝试使用计时器来执行此操作,因此计时器将每 30 秒读取一次数据,然后如果没有数据,计时器会将文本框变为红色。但是,当我拔下仪器时没有任何反应。如何在仪器停止工作时将文本框变为红色?

相关代码如下:

        private void timer1_Tick(object sender, EventArgs e)
    {
        DateTime timenow = DateTime.Now;
        TimeSpan span = GPSlastdatatime - timenow;
        timespan = Convert.ToDouble(span.TotalSeconds);

        if (timespan > 30)
        {
            TextBox1.BackColor = Color.Red;

        }
    }

我假设每当有数据进来时就设置了 "GPSlastdatatime"?

照原样,您的 "timespan" 值将是 负数

切换减法线的顺序:

TimeSpan span = timenow - GPSlastdatatime;

顺便说一句,您可以像这样在一行中完成所有操作:

timespan = (DateTime.Now - GPSlastdatatime).TotalSeconds;