最近在学习.net 上位机软件开发。要求能够写简单的上位机界面,并进行数据传输。
串口助手是我认为最适合的例子,因此记录下学习的过程。
网上看了很多教程,有使用qt creator的,也有使用vs的。 最开始尝试了qt creator,但是在发布release版本的时候出现了问题,还没有解决,因此这篇博客是使用vs进行开发的。
下载vs的教程网上很多,我就不赘述了。需要注意的就是在下载的时候记得安装windows的桌面开发,后续会用到。
vs下载好后就是创建项目了,跟着下面的图进行就可以了:
创建新项目(N)
windows窗体应用(.NET Framework)
这一步如果没有找到,可能是下载的时候没有安装window开发相关的内容,可以搜教程进行安装。
更改项目的名称和地址后,创建
创建完成,出现类似下面的窗体
到此,项目就算正式建好了。
想开发一个串口助手,首先就是把界面编辑好。因为是初学,所以做个简易的就行了。
从这个界面可以看到,有三个部分:工具箱,窗体和属性。分别进行介绍
工具箱是我们编辑串口助手界面,最重要的部分。 其中使用最多的,就是公共控件,容器和组件。其中的具体内容后面在具体编辑的时候会详细介绍。
窗体是我们编辑的上位机的界面,从这里可以看到我们对界面的编辑,属于一种预览的功能。
我们通过工具箱向窗体加入了控件或组件等,就可以通过调节它们的属性对显示进行编辑,并且这个属性也和后续的软件编程息息相关。
了解了vs的三个部分,那么具体怎么进行编辑呢?
首先,我们要在心里对想要做的串口助手有一个大致的想法,需要实现哪些功能这些,也要有个大致的想法。
串口助手,首先就是需要能控制串口的开关,然后对数据进行接受和发送,并且波特率也能进行设置。
这是我所构想的串口助手,那么是怎么做到的呢?后续进行介绍。
首先点开公共控件,可以看到很多东西:
我在编辑界面的时候使用到的有button,checkbox,combobox,textbox和label。其他的控件你们可以自行去了解,我今天在这里就介绍这几个我使用过的。
首先,向窗口添加这些组件控件,有两种方式,一种是双击工具箱里面的组件,他会自动添加到窗体里面,你按住窗体里面的组件,拖动以进行编辑。
还有一种是,在工具箱中选中你想要的组件,长按并拖动到窗体,也能进行创建。
我们先新建一个button到窗体
可以看到,右边属性一栏出现了很多东西,其中最要主义的就是name和text。
其中name是后续进行软件编程时候,对这个button进行定位的,而text则是这个组件所显示的内容。
比如我将text设置为“打开串口”,则窗体中,就会变成这样
其他的一些属性,我到现在还没有进行详细了解,有兴趣的可以自行了解。后续如果有时间,我也会对相关的内容进行介绍。
button的意思是按键,而我们设计的串口助手总共有三个按键:打开串口,清除数据和发送数据。因此我们总共要创建三个button,并更改他们的text。
如图:
三个button就已经创建好了
checkbox就是一个进行勾选的,可以用来设置数据发送和接收的方式:文本还是十六进制形式
和button类似,也有name和text两个属性
我们更改text属性来让checkbox显示不同的功能。
combobox是可以进行下拉的,可以用来存储波特率和串口号等内容,并且进行选择。
除了常用的name和text属性,他最重要的属性是items。text用来设置初始化的值,而items则是所有选项的集合。
我们设计的串口助手中,有两个地方需要使用这个combobox:串口号和波特率。
我们给串口号和波特率设置一个默认初始值,分别为COM3和9600。
因此更改text属性就可以。
想要设置下拉中的内容,就需要设置items里面的内容。
点击后面三个点的图标,然后就会进入items的编辑
每一行就是下拉内容中的一栏,我们给串口设置两个选项:COM3和COM4。点击确认,在窗口中点击下拉图标,是没有反应的,想要看到下拉的选项,需要启动,点击窗口上方的启动按钮。
出现这个窗口,就可以点击下拉框,看到其中的选项
用类似的方法将串口号和波特率都设置好。
稍微排版一下,如图:
textbox作为文本框,可以用来显示串口助手接收到的信息,也可以作为发送信息的文本框使用。
在新建的时候,我们可以通过左右拉对文本框进行宽度的设置,但是高度却没办法改变。这是因为在textbox的属性中,有一栏multiline默认为false。我们需要将这个设置为true,才能设置文本框的高度。
然后创建两个文本框,并适当的排版。
如图:
上面,串口助手的大致框架已经有了,但是如果只看到COM3和9600,我们并不知道这两个下拉框是什么用的,因此我们需要对他们的功能进行注释,label就是用来做这个的。
改变text,对功能进行注释,至此,大致的框架就已经做好了。
上位机的界面基本上有了框架,但是只有框架是没用的,我们最终还是要用这个界面来实现一定的功能,而这个就需要我们进行编程了。
总共有几个功能需要实现:
选择串口,打开/关闭串口,清楚文本框的数据,发送数据,以及控制发送和接收数据的格式,设置波特率等
可以看出,除了清楚文本框的数据,其他的内容都和串口有关,因此,我们需要先在窗体中加入一个组件,也就是串口serialport。timer作为定时器,也是需要的,一同加入到窗体中。
拖动到窗体后,出现这样子的就算成功了。
现在开始,就是要实现具体的功能了。
既然清楚数据和串口无关,那就先实现这个功能。
在窗体中双击清除数据的button,就会自动跳转到相关的代码中。
注意看,这里有个button2_Click。我们回到刚刚的窗体界面,点击清除数据这个button,看到他的属性。
这个name是button2,因此如果我们更改了这个button的name,那么这个函数的名字也要相对应的进行更改。
那么,按下button2以后,我们希望发生什么呢?清除掉文本框显示的数据,那文本框显示的数据和什么有关呢?和textbox的text有关。我们回到窗体界面,点击接收数据文本框,看到他的属性。
因此,只要每次我们按下清除数据的button,让textbox1里面的text为空,就可以实现清除文本框的功能了。
但由于现在我们还没有实现串口相关的功能,因此想要测试是否有效,可以给textbox1设置一个初始的text,然后点击清楚数据按钮,看是否能正确清除。
如图,点击启动,在弹出的框体中点击清除数据,发现确实清除了,说明这样的操作有效。
既然是串口助手,那么最重要的肯定还是串口相关的设置。
串口设置方面还在学习中,等学会了再进行更新。