在做单片机开发的时候,我们有时候会用到上位机。上位机就是PC上的一个应用程序,通过这个应用程序,我们可以显示一些来自下位机(如单片机)的数据,可以通过上位机来控制我们的下位机。由于上位机是做成图形化界面的,方便用户使用,所以,做单片机开发也需要掌握上位机的开发。比如我们常用的串口调试助手就是一个简单的上位机。
从今天开始来学习一下如何使用C#语言开发简单的上位机程序,开发平台是Microsoft Visual Studio 2019。今天来写第一个简单的入门程序:倒计时计数器。实现的功能是用户可以自定义倒计时的时间,然后点击开始计时,计时结束后弹出窗口提醒计时时间到。
1、新建一个项目,选择Windows窗体应用
2、然后我们得到一个空白的窗体,左边的工具箱里有很多控件,我们可以选择按钮、标签、进度条,定时器,下拉列表等。
按钮:button
按钮:button
进度条:progressbar
下拉列表:combobox
文字:label
定时器:timer
点击对应的控件,我们可以在右边修改相应的属性,比如修改按钮的文字等,定时器可以设置它定时的时间,单位是ms,比如写1000就是1秒钟,这在后面编程中会使用到。
点击对应的控件,我们可以在右边修改相应的属性,比如修改按钮的文字等,定时器可以设置它定时的时间,单位是ms,比如写1000就是1秒钟,这在后面编程中会使用到。这和其他的GUI设置是类似的。
3、接下来就是编程。双击一下窗体就会进入代码里面,并且会自动生成一部分代码。
然后我们简单分析一下代码。
private void button1_Click(object sender, EventArgs e)//开始计时按钮事件
{
string str = comboBox1.Text;//将下拉框内容添加到一个变量中
string data = str.Substring(0, 2);
time = Convert.ToInt16(data);//得到设定定时值(整形)
progressBar1.Maximum = time;//进度条最大数值
timer1.Start();//开始计时
}
这一部分代码的功能主要是读取下拉框的内容,取出前面两位数字,并且将字符串格式转化为整型,然后赋给进度条的最大值,最后开始计时。
private void Form1_Load(object sender, EventArgs e)
{
int i;
for (i = 1; i < 100; i++)//计数范围(1-99)
{
comboBox1.Items.Add(i.ToString() + " 秒");//初始化下拉框内容(数字后加一个空格便于程序处理)
}
comboBox1.Text = "1 秒";
}
这一部分代码主要是生成下拉框的内容,1-99秒,注意在秒那里有一个空格,这是一个小技巧,因为后面要提取前两个数字,所以加一个空格可以防止提取到汉字而发生错误。
private void timer1_Tick(object sender, EventArgs e)//定时器事件
{
count++;//记当前秒
label3.Text = (time - count).ToString() + "秒";//显示剩余时间
progressBar1.Value = count;//设置进度条进度
if (count == time)
{
timer1.Stop();//时间到,停止计时
System.Media.SystemSounds.Asterisk.Play();//提示音
MessageBox.Show("时间到了!!!","提示!!");//弹出提示框
}
}
这一部分代码是定时器的,每次定时时间到,然后就计数值加1,当计时等于设定的时间的时候弹出窗口,设置系统提示音,最后停止计时即可。另外就是有一个标签(label)实时显示剩下的时间。
写好这些代码,基本上就完成了。最后点击运行,可以查看效果,点击release可以发布。
总的来说,流程并不是很复杂,就是选择好控件,修改相应的属性,最后进入代码里面将这些关联起来。
我们可以看一下效果
这只是一个简单的入门程序,后面我们再去和单片机联合起来编写真正的上位机应用程序。