一、初始化控件
当我们布置好界面后第一件事就是初始化界面上的控件
波特率组合框:整型 4800 9600 19200 38400 57600 115200
数据位组合框:整形 7 8
停止位组合框: 字符串 1 1.5 2
握手协议组合框 字符串 None XOnXOff
校验位组合框 字符串 None Even Mark Odd
串口组合框通过SerialPort类的获取串口方法来写入
二、工具类的介绍
该项目需要使用到SerialPort类,关于介绍可以在编程手册查到,下面放上手册中截到的图。
用到的属性BaudRate、DataBits、Parity、PortName、StopBits
用到的方法Close、GetPortName、Open、Read、Write
用到的事件DataReceived
数据转换类Convert 将接收到的数据转换为需要的数据
BitConvert 将基础数据类型与字节数组相互转换
Enum类 Parse方法 Parse(枚举类型,字符串)将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。
例如 Enum.Parse(typeof(StopBits), stopBits);stopBit="1",该语句可将“1”转换位所对应的枚举字符串“One”
三、建立串口模型
串口模型主要在ComModel类中进行处理。具体创建过程如下所示:
1、自定义三个串口事件
在ComModel中模拟串口的运行过程,通过自定义三个事件来完成分别是串口打开,串口关闭,接收数据三个事件
接下来首先对自定义事件模型进行回顾(如果这个部分看不太懂可以去补补相应的关于事件定义的基础视频)
事件的五个要素 1、事件的订阅者 2、事件的接收者 3、事件的响应者 4、事件的处理者 5、被事件所通知的对象
事件模型的五个组成部分 1、事件的拥有者 2、事件成员 3、事件的响应者 4、事件处理器 5、事件订阅
(1)声明一个串口事件处理器的委托,参数中sender为事件的发送者,e为事件的参数
public delegate void SerialPortEventHandler(Object sender, SerialPortEventArgs e);
(2)声明一个串口事件参数类,继承于EventArgs类,用于传递参数,其中传递的参数包括串口的状态(开或关)、串口接收到的数据
public class SerialPortEventArgs : EventArgs
{
public bool isOpend = false;
public Byte[] receivedBytes = null;
}
(3)串口事件的声明,ComModel类中,声明了串口的打开、关闭和接收数据的事件
public event SerialPortEventHandler comReceiveDataEvent = null;
public event SerialPortEventHandler comOpenEvent = null;
public event SerialPortEventHandler comCloseEvent = null;
(4)事件的订阅,IController类的构造函数中,左边为事件,右边为事件的响应方法
comModel.comCloseEvent += new SerialPortEventHandler(view.CloseComEvent);
comModel.comOpenEvent += new SerialPortEventHandler(view.OpenComEvent);
comModel.comReceiveDataEvent += new SerialPortEventHandler(view.ComReceiveDataEvent);
(5)事件的响应 通过达到某条件后利用事件的Invoker方法执行响应的动作。
2、串口对象创建
new一个SerialPort类就行。
3、串口的方法框架
ComModel类中的一些方法,这里就写几个最主要的方法,里面包括Send Open Close,下一节主要介绍关于各个按键事件触发后的流程。