上一篇中我们完成了一个串口助手的雏形,实现了基本发送和接收字符串功能,并将打开/关闭串口进行了异常处理,这篇就来按照流程,逐步将功能完善:
1、构思功能
首先是接收部分,要添加一个“清空接收”的按钮来清空接收区;因为串口通信协议常用都是8bit数据(低7bit表示ASCII码,高1bit表示奇偶校验),作为一个开发调试工具,它还需要将这个8bit码用十六进制方式显示出来,方便调试,所以还需要添加两个单选框来选择ASCII码显示还是HEX显示;
然后是发送部分,与之前对应,调试过程中还需要直接发送十六进制数据,所以也需要添加两个单选框来选择发送ASCII码还是HEX码;除了这个功能,还需要添加自动发送的功能,自动发送新行功能方便调试;
2、设计布局
1)单选按钮控件(RadioButton)
接收数据显示只能同时选中ASCII显示或者HEX显示,所以要用单选按钮控件,在同一组中(比如之前所讲述的容器)的单选按钮控件只能同时选中一个,刚好符合我们的要求;
2)复选框控件(CheckBox)
这个通常被用于选择一些可选功能,比如是否显示数据接收时间,是否在发送时自送发送新行,是否开启自动发送功能等,它与之前的RadioButton都有一个很重要的属性 —— CHecked,若为false,则表示未被选中,若为true,则表示被选中;
3)数值增减控件(NumericUpDown)
显示用户通过单击控件上的上/下按钮可以增加和减少的单个数值,这里我们用来设置自动发送的间隔时长;
4)定时器组件(Timer)
这里之所以称为组件是因为它和之前的串口一样,都不能被用户直接操作;它是按用户定义的间隔引发事件的组件;
Timer主要是Interval属性,用来设置定时值,默认单位ms;在设置定时器之后,可以调用Timer对象的start()方法和stop()方法来启动或者关闭定时器;在启动之后,Timer就会每隔Interval毫秒触发一次Tick事件,如果设置初始值为100ms,我们只需要设置一个全局变量i,每次时间到后i++,当i==10的时候,就表示计数值为1s(这里Timer的使用方法是不是和单片机相同^_^);
整体设计出来的效果图如下:
3、搭建后台
按照之前的思路,界面布局完成后,就要开始一个软件最重要的部分 —— 搭建后台:
1、状态栏串口状态显示
这里直接添加代码即可,无需多言;
label6.Text = "串口已打开"; label6.ForeColor = Color.Green;