爱收集资源网

单片机开发中上位机开发部分的内容以及VS下载与安装

网络整理 2024-01-22 10:36

上一篇大致了解了一下单片机实际项目开发中上位机开发部份的内容以及VS下载与安装,依照编程惯例,接出来就是“Hello,World!”

1、新建C#项目工程

首先选择新建Windows窗体应用(.NETFramework),之后选择项目保存位置,填写项目名称,这儿由于我们不须要用git进行版本管理,所以不用新建GIT储存库;

框架是指.net框架,4以及4以下的.NET框架可以在xp上运行,4以上可以在win7/8/10上运行,鉴于当前大多数操作系统都是win7或win10,选择4.5版本。

2、窗体介绍及代码剖析

这儿我们双击窗体界面,这也是VS的特点,双击一个控件,还会步入对应代码文件部份,这种代码全由VS在生成项目时手动生成,下边进行详尽的解释:

 1 /*filename:Form1.cs*/
 2 //使用命名空间
 3 using System;
 4 using System.Collections.Generic;
 5 using System.ComponentModel;
 6 using System.Data;
 7 using System.Drawing;
 8 using System.Linq;
 9 using System.Text;
10 using System.Windows.Forms;
11 
12 //用户项目工程自定义命名空间HelloWorld
13 namespace HelloWorld
14 {
15     //定义了一个名称为Form1的公共类,并且在定义类的同时创建了一个这个类的对象,名为Form
16     //partial关键字
17     public partial class Form1 : Form
18     {
19         //与类同名的构造方法
20         public Form1()
21         {
22             InitializeComponent();
23         }
24      //用户自定义方法,窗体加载时由Form对象调用
25         private void Form1_Load(object sender, EventArgs e)
26         {
27         }
28     }
29 }

复制

命名空间(namespace):在C#中用命名空间将好多类的属性及其方式进行封装供调用,类似C语言上将变量和函数封装成一个个.h文件,调用的时侯只须要#include"filepath+filename"就可以使用,例如刚开始时用关键字using申明了一些所须要的系统命名空间(line1-10);之后采用关键字namespace来自定义一个用户工程所需的命名空间HelloWorld,在我们定义的这个命名空间里就可以定义一些类和技巧来进行下一步的实现;

类(class):C#是一门面向对象的编程语言,所以最基本的就是类和对象,对象的特点是具有属性(C语言中称为变量)和技巧(C语言中称为函数),之后我们定义一个类来描述这个对象的特点,注意:这个时侯定义的类不是真实存在的,所以不会分配显存空间,当我们用所定义的这个类去创建一个类的对象,这个对象是真实存在的,它会占用显存空间,例如在这个工程中定义了一个名称为Form1的公共类,但是在定义类的同时创建了一个这个类的对象,名为Form;

方式:上面早已说过,在面向对象编程中是没有变量和函数的,所有的函数都被封装在类中,属于对象的方式,最基本的是类的构造方式,该方式与类名同名,在用类创建一个具体对象时手动调用,不可缺乏,例如Form1();另外一种是自己定义的用户方式,例如该类中的Form1_Load()方式,就是在初始化窗口时,通过具体对象Form调用:Form.Form1_Load();

访问修饰符:拿来控制类、属性、方法的访问权限,常用有5个,默认私有,不能被外部访问;

私有的private,公共的public,受保护的protected,内部的internal,受保护内部的protectinternal;

这儿有一个重点,在定义Form1类的时侯富含一个关键字partial,这儿就不得不说C#语言设计一个重要的特点了,能作为大多数人开发上位机的首选,C#有一个特点就是设计的时侯界面与后台分离,并且类名相同,首先看一下工程文件结构:

可以看见,Form1.cs文件下边包含了另一个Form1.Designer.cs文件,再打开Form1.Designer.cs这个文件,是不是很惊奇,和上面一模一样,再度定义了一个命名空间HelloWorld和Form1类,这个部分类中定义了我们使用的控件、事件委托以及如Dispose方式等。由于这儿面的代码都是手动生成的,因而设计成了一个部分类。最关键的一点,这儿类也是用partial关键字修饰的,可以看见,Partial是局部类型的意思,容许我们将一个类、结构或插口分成几个部份,分别实现在几个不同的.cs文件中,用partial定义的类可以在多个地方被定义,最后C#编译器编译时会将这种类当成一个类来处理;

 1 /*@filename:Form1.Designer.cs */
 2 
 3 namespace HelloWorld
 4 {
 5     partial class Form1
 6     {
 7         /// 
 8         /// 必需的设计器变量。
 9         /// 
10         private System.ComponentModel.IContainer components = null;
11 
12         /// 
13         /// 清理所有正在使用的资源。
14         /// 
15         /// 如果应释放托管资源,为 true;否则为 false。
16         protected override void Dispose(bool disposing)
17         {
18             if (disposing && (components != null))
19             {
20                 components.Dispose();
21             }
22             base.Dispose(disposing);
23         }
24 
25         #region Windows 窗体设计器生成的代码
26 
27         /// 
28         /// 设计器支持所需的方法 - 不要修改
29         /// 使用代码编辑器修改此方法的内容。
30         /// 
31         private void InitializeComponent()
32         {
33             this.SuspendLayout();
34             // 
35             // Form1
36             // 
37             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
38             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
39             this.ClientSize = new System.Drawing.Size(418, 331);
40             this.Name = "Form1";
41             this.Text = "Form1";
42             this.Load += new System.EventHandler(this.Form1_Load);
43             this.ResumeLayout(false);
44 
45         }
46         #endregion
47     }
48 }

复制

Main:一切程序都有入口主函数main,C#也是这么,在Program.cs文件中定义了Program类,该类中拥有主函数main(),在main函数中,第三行代码是一切的开始,调用Form1类的构造函数,创建一个Form对象,一切由此开始c语言开发上位机,代码如下:

 1 /* @filename: Program.cs */
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Windows.Forms;
 6 
 7 namespace HelloWorld
 8 {
 9     static class Program
10     {
11         /// 
12         /// 应用程序的主入口点。
13         /// 
14         [STAThread]
15         static void Main()
16         {
17             Application.EnableVisualStyles();
18             Application.SetCompatibleTextRenderingDefault(false);
19             Application.Run(new Form1());  //调用Form1类的构造函数,创建一个Form对象,一切由此开始
20         }
21     }
22 }

复制

再来解释一下最后三个文件:第一个文件主要是应用程序发布时的一些属性设置,版本号,属性,版权之类的,其余两个文件是工具手动生成的一些设置文件,不再过多赘言;

/* @filename:Assemblylnfo.cs*/
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("HelloWorld")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HelloWorld")]
[assembly: AssemblyCopyright("Copyright ©  2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("094ac56a-7a59-4f32-a2eb-857135be4d2c")]
// 程序集的版本信息由下列四个值组成: 
//
//      主版本
//      次版本
//      生成号
//      修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

复制

c上位机软件开发教程_c语言开发上位机_c语言上位机编程

3、Hello,World

下边就即将开始C#程序的设计,首先是界面的实现,可以随便从控件工具箱中拖拽控件到窗体中,这儿我拖动两个Button和一个TextBox,并在右侧设置框中更改每位控价的属性,界面如图:

这个时侯假如查看Form1.cs文件,会发觉和之前一样,这儿就须要介绍另外几个开发GUI界面的知识点了,首先,我们想要实现的功能是:当按下Send按键时,文本框显示^_^Hello,World^_^字样,当按下Clear按键时,文本框清空;这属于人机交互,通常人机交互的处理方法有两种,第一种是查询处理方法,例如在DOS系统下、Linux系统等命令行下的程序设计,第二种是风波处理机制,有了好多的优越性,由传统的查询法花费CPU始终在检查,弄成了风波处理机制下的主动提醒告知,大幅度减少CPU资源浪费,在风波处理机制中有以下几个概念:

风波源(EventSource):描述人机交互中风波的来源,一般是一些控件;

风波(ActionEvent):风波源形成的交互内容,例如按下按键;

风波处理:这部份也在C++中被称作反弹函数,当风波发生时拿来处理风波;

注:这部份在单片机中也是这么,中断源形成中断c语言开发上位机,之后步入中断服务函数进行响应;

清楚了这几个概念后,就来实现我们想要的功能,按下按键是一个风波,这么,怎么编撰或则在哪编撰这个风波的风波处理函数呢?在VS中很便捷,只须要双击这个控件,VS都会手动将该控件的风波处理函数添加进Form1.cs文件,此处我先双击“Send”按钮,可以看见VS手动添加进了privatevoidbutton1_Click(objectsender,EventArgse)这个方式,之后在上面编撰代码,让文本框显示:这儿所有的控件都是一个具体的对象,我们要通过这种对象设置其属性或则调用其技巧;同样的道理,双击Clear按键,添加文本框清空代码,完整代码如下:

//用户项目工程自定义命名空间HelloWorld
namespace HelloWorld
{
    //定义了一个名称为Form1的公共类,并且在定义类的同时创建了一个这个类的对象,名为Form
    //partial关键字
    public partial class Form1 : Form
    {
        //与类同名的构造方法
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //按下Send按钮
            textBox1.Text = "^_^Hello,World^_^";    //文本框显示    
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //按下Clear按钮
            textBox1.Text = "";                      //文本框清空
        }
    }
}

复制

至此,大功告成,第一个应用程序创建成功,点击启动按键看下疗效:

c语言开发上位机