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)那样工作?在您的情况下可能吗?这涉及到串行端口上的太多传输。我不想使用这种方法。在你的情况下可能吗?这涉及到串行端口上的太多传输。我不想用这种方法。