前言
前一篇文章讲了利用Arduino mega2560来设计上下位机串口通信系统的下位机,这一章则要讲如何设计上位机界面软件,这里我们先选用了VS2013自带的Visual C#。这是微软公司开发的C#编程语言规格之集成开发环境使用者接口,可以帮助开发者快速地设计出一款适合自己的界面软件。
创建窗体应用程序
- 首先打开VS2013,选择工具栏中的"文件"->“新建”->“项目”->“Visual C#”->“Windows桌面”->“Windows窗体应用程序”,重新命名后,点击确定就可以了。
- 生成项目文件之后,最主要的是Form1.cs文件和Form1.cs[设计],其中前者是代码编写的区域,已经定义了公有类Form1(也可以根据需要修改类名),我们后续只需要在这个类下加进去自己需要的按钮操作;后者是界面的图形设计,可以从左侧工具箱中选择公共控件,加入到界面当中去,包括Button、CheckBox等一系列操作。其他的操作项目框架已经帮我们做好了,我们只需要设计这两个文件即可。
创建一个串口
- 首先我们在Form1.cs[设计]里选择左边工具箱内的ComboBox,拖动到图形界面上,并且在前面给它一个Label叫“串口选择”,点击这个ComboBox的属性,找到"设计"->(Name),将这个ComboBox命名为“SerialChoose”,之后在代码区就可以用“SerialChoose”来指代这个ComboBox,这一步的作用是为了生成界面后选择插入到PC上不同的串口;接着同样做一个波特率的ComboBox,命名为"BaudRate";最后再从工具箱内选择一个Button按钮,给它命名为"SerialSwitch",并在属性->“外观”->“Text”,给这个Button赋上"串口打开"字符。
- 先在代码区最上面引用Ports类
using System.IO.Ports;
接着在代码区public Form1()这个函数里编写串口相关代码,因为串口操作需要界面软件初始化就开始使用,所以直接将这部分代码写在InitializeComponent()之后即可。当然如果有需求的,可以在打开串口操作成功后加上状态按钮,显示更加清楚。
namespace SimpleHostPrint
{
public partial class BOTDR : Form
{
//通过System.IO.Ports实例化一个串口对象s,这一步要定义为全局变量,后面各个函数才能使用
SerialPort ss = new SerialPort();
public BOTDR() //这里我把图形界面名Form1改名成了自己需要的名字,相应的类名也会跟着变化
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false; //放置跨线程访问出错
SerialSwitch.Text = "打开串口"; // "SerialSwitch"Button的初始状态
//定义一个Item数组,遍历item中每一个波特率变量a,增加到"BaudRate"ComboBox的列表中
int[] item = {
9600, 115200 };
foreach (int a in item)
{
BaudRate.Items.Add(a.ToString());
}
BaudRate.SelectedItem = BaudRate.Items[0]; //默认为列表第1个变量
}
//这个函数界面软件启动时会载入
private void Form1_Load(object sender, EventArgs e)
{
//获取当前的所有的串口名字,存入字符串数组
String[] ports = SerialPort.GetPortNames();
//把这个串口名字符串数组全都加载进"SerialChoose"ComboBox里
SerialChoose.Items.AddRange(ports);
//"SerialChoose"ComboBox默认选择第一个串口名
SerialChoose.SelectedItem = SerialChoose.Items[0];
}
//"SerialSwitch"Button对应的代码,点击该Button即触发此段代码
private void SerialSwitch_Click(object sender