ConfigCom - xiaoxinpro/SerialPortHelper GitHub Wiki
配置Com类,主要完成开启串口前的配置设置工作,只需将ComboBox控件绑定到类中,将自动完成端口检测、配置参数填充、初始化控件等操作。
0、配置结构
配置结构在整个串口助手中至关重要,是端口开启所必须的参数,需要与下位机一一对应。
public struct ConfigComType
{
public string PortName; //端口号
public int BaudRate; //波特率
public int DataBits; //数据位
public StopBits StopBits; //停止位
public Parity Parity; //校验位
}
在这里除PortName端口号必须强制绑定一个ComboBox控件,用其他四个参数可根据项目选择绑定或是指定值。
1、简单实现配置工作
假设需求:用户选择一个端口号,波特率固定9600,数据位固定8,停止位固定1,校验位无。
界面控件:一个ComboBox用于选择端口号(Name:cbSerial)
初始化代码:
ConfigCom cc = new ConfigCom(cbSerial);
cc.BaudRate = 9600;
cc.DataBits = 8;
cc.StopBits = StopBits.One;
cc.Parity = Parity.None;
当用户连接串口设备,选择对应端口号后,获取配置结构:
ConfigComType configComType = cc.GetConfigComData();
2、绑定配置控件
配置控件必须使用ComboBox控件,可绑定的配置有端口号、波特率、数据位、停止位、校验位,与配置结构相对应。
配置控件可以实例化时绑定也可以动态绑定或解绑。
① 实例化绑定配置控件
可以只绑定端口号控件,例如:
//实例化绑定端口号控件
ConfigCom cc = new ConfigCom(cbSerial);
也可以将五个配置参数全部绑定到控件上,例如:
//实例化绑定所有配置控件
ConfigCom cc = new ConfigCom(cbSerial, cbBaudRate, cbDataBits, cbStop, cbParity);
当然,也提供了只绑定常用的端口号和波特率的构造函数:
//实例化绑定端口号和波特率控件
ConfigCom cc = new ConfigCom(cbSerial, cbBaudRate);
② 动态绑定配置控件
这里如果只想绑定部分控件,可以使用BindPortNameObj、BindBaudRateObj、BindDataBitsObj、BindStopBitsObj、BindParityObj这五个方法来实现。
例如,只绑定端口号、数据位、停止位三个配置控件可以这样实现:
//实例化绑定端口号控件
ConfigCom cc = new ConfigCom(cbSerial);
//绑定数据位控件
cc.BindDataBitsObj(cbDataBits);
//绑定停止位控件
cc.BindStopBitsObj(cbStop);
③ 动态解绑配置控件
有些时候需要解除绑定,改为固定配置参数时,可以使用BindPortNameObj、BindBaudRateObj、BindDataBitsObj、BindStopBitsObj、BindParityObj这五个方法,传入参数使用null即可解除绑定控件。
例如,需要解除绑定数据位和校验位配置控件可以这样实现:
//绑定控件
ConfigCom cc = new ConfigCom(cbSerial, cbBaudRate, cbDataBits, cbStop, cbParity);
//解除绑定数据位控件
cc.BindDataBitsObj(null);
//解除绑定校验位控件
cc.BindParityObj(null);
这里如果数据位和校验位需要固定参数则需要指定配置参数,将在下一小结中详细描述。
3、修改配置参数
修改配置参数对绑定控件和非绑定控件均有效果,区别在于绑定控件修改配置参数后用户可以再次修改,而非绑定控件修改配置参数后用户无法修改配置参数,可以认为是将配置参数固定。
修改配置参数使用PortName、BaudRate、DataBits、StopBits、Parity这五个属性。
ConfigCom cc = new ConfigCom(cbSerial);
cc.PortName = "Com1";
cc.BaudRate = 14400;
cc.DataBits = 7;
cc.StopBits = StopBits.OnePointFive;
cc.Parity = Parity.Even;
4、自定义端口号控件默认选项
使用SetSerialPortDefaultInfo(string strData)方法实现设定默认端口,传入的参数为串口设备名称(描述),必须完全比配。
执行此方法后,会自动将最后匹配到的串口号放在PortName控件选择种的位置上。
cc.SetSerialPortDefaultInfo("TI CC2540 USB CDC Serial Port");