C#如何使时钟在从设备读取数据后运行

C#如何使时钟在从设备读取数据后运行,c#,C#,我知道如果我们想显示电脑时间,我们将使用以下编码: System.Windows.Forms.Timer tmr = null; private void StartTimer() { tmr = new System.Windows.Forms.Timer(); tmr.Interval = 1000; tmr.Tick += new EventHandler(tmr_Tick); tmr.Enabled =

我知道如果我们想显示电脑时间,我们将使用以下编码:

   System.Windows.Forms.Timer tmr = null;
    private void StartTimer()
    {
        tmr = new System.Windows.Forms.Timer();
        tmr.Interval = 1000;
        tmr.Tick += new EventHandler(tmr_Tick);
        tmr.Enabled = true;
    }

    void tmr_Tick(object sender, EventArgs e)
    {
        textBox6.Text = DateTime.Now.ToString("dd/MM/yy HH:mm:ss");
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        StartTimer();
    }
但我不想显示电脑时间。我想显示另一个时间(我的情况下微控制器的rtc时间)

如果我从串行端口获取rtc时间并在文本框中显示为“09:00:00”。那里是静止的,对吗?如何使其在文本框上运行/递增

我已经尝试了下面的代码,我在上面的代码中对其进行了修改:

    System.Windows.Forms.Timer rtc = null;
    private void StartRTC()
    {
        rtc = new System.Windows.Forms.Timer();
        rtc.Interval = 1000;
        rtc.Tick += new EventHandler(rtc_Tick);
        rtc.Enabled = true;
    }
    int i = 1;
    DateTime dt = new DateTime();
    void rtc_Tick(object sender, EventArgs e)
    {
        textBox17.Text = dt.AddSeconds(i).ToString("HH:mm:ss");
        i++;
    }
但是我的文本框上显示的时间总是从00:00:00开始递增


如何让它在我从微控制器rtc获得的时间上开始递增?

这是因为你从
new DateTime()
开始,因此你得到了一个新的
DateTime
类的默认值。您应该使用对微处理器的API调用初始化
DateTime
的值

例子 请注意,因为我对微处理器的API一无所知,所以我只能编写psuedo代码。在第二个示例中,替换以下行

DateTime dt = new DateTime();

DateTime dt = DateTime.Parse({some microprocessor API call for the RTC value});
根据上一条评论进行编辑
这是因为您从
new DateTime()
开始,因此您将获得一个新的
DateTime
类的默认值。您应该使用对微处理器的API调用初始化
DateTime
的值

例子 请注意,因为我对微处理器的API一无所知,所以我只能编写psuedo代码。在第二个示例中,替换以下行

DateTime dt = new DateTime();

DateTime dt = DateTime.Parse({some microprocessor API call for the RTC value});
根据上一条评论进行编辑
您必须使用微控制器Datetime初始化Datetime dt。 比如


您必须使用微控制器Datetime初始化Datetime dt。 比如


我不知道这能起多大作用,但看看这是否可行


当你能够从你的微控制器中获取时间时,为什么不使用一个计时器,它可以定期从你的微控制器中读取时间,并在UI中更新你的控件

我不知道这能起多大作用,但看看这是否可行


当你能够从你的微控制器中获取时间时,为什么不使用一个计时器,它可以定期从你的微控制器中读取时间,并在UI中更新你的控件

不是真的,我对你的微控制器一无所知,也不知道该控制器的公共API是什么。例如,如果我在textBox上显示我的时间。Text=“09:00:00”;如何使其运行/增量?我不想在00:00开始。我想从我的RTC开始计时,比如09:00:00。你已经做的是保持计时器移动和文本框更新,问题是你没有用正确的值初始化日期。从微处理器API获取一次值,然后让计时器从那里获取。我已经获取了一次。例如,“09:00:00”是我从微控制器获取的。抓取后,它是一个静态值,对吗?如何使其运行/增量?@Coolguy我已更新了问题,以尽我所能为您提供一个示例。谢谢不是真的,我对你的微控制器一无所知,也不知道该控制器的公共API是什么。例如,如果我在textBox上显示我的时间。Text=“09:00:00”;如何使其运行/增量?我不想在00:00开始。我想从我的RTC开始计时,比如09:00:00。你已经做的是保持计时器移动和文本框更新,问题是你没有用正确的值初始化日期。从微处理器API获取一次值,然后让计时器从那里获取。我已经获取了一次。例如,“09:00:00”是我从微控制器获取的。抓取后,它是一个静态值,对吗?如何使其运行/增量?@Coolguy我已更新了问题,以尽我所能为您提供一个示例。谢谢我把微控制器的时间放在一个文本框上。它是这样做的DateTime dt=new DateTime(textBox17.Text)?我把微控制器的时间放在一个文本框上。它是否像这个DateTime dt=new DateTime(textBox17.Text)那样工作?在您的情况下可能吗?这涉及到串行端口上的太多传输。我不想使用这种方法。在你的情况下可能吗?这涉及到串行端口上的太多传输。我不想用这种方法。