您的位置:首页 > 编程语言 > C#

C# 串口初始化

2017-11-21 22:06 375 查看
C# 串口初始化方法之一。完整例程中定义了多个串口,程序运行初始会从配置文件加载串口设置并批量初始化串口。
...
using System.Text.RegularExpressions;
...

//Example, InitPort(gdmPort, 2, "115200,N,8,1")
private void InitPort( System.IO.Ports.SerialPort _seriPort, int _com, string _setting)
{
string strBuf = string.Empty;

_seriPort.PortName = "COM" + _com; //设置 COM 口
strBuf = Regex.Match(_setting, @"^\d+(?=,)").ToString().Trim();
if (strBuf != string.Empty)
{
_seriPort.BaudRate = Convert.ToInt32(strBuf); //设置 BaudRate
}
strBuf = Regex.Match(_setting, @"(?<=^\d+,)[a-z A-Z]+").ToString().ToUpper().Trim();
if (strBuf != string.Empty) //设置 Parity
{
switch (strBuf)
{
case "E":
_seriPort.Parity = System.IO.Ports.Parity.Even;
break;
case "M":
_seriPort.Parity = System.IO.Ports.Parity.Mark;
break;
case "N":
_seriPort.Parity = System.IO.Ports.Parity.None;
break;
case "O":
_seriPort.Parity = System.IO.Ports.Parity.Odd;
break;
case "S":
_seriPort.Parity = System.IO.Ports.Parity.Space;
break;
default:
break;
}
}
strBuf = Regex.Match(_setting, @"(?<=[a-z A-Z]+,)\d+").ToString().Trim();
if (strBuf != string.Empty)
{
_seriPort.DataBits = Convert.ToInt32(strBuf); //设置 DataBits
}
strBuf = Regex.Match(_setting, @"(?<=,)[0-9 \.]+$").ToString().Trim();
if (strBuf != string.Empty) //设置 StopBits
{
switch (strBuf)
{
case "0":
_seriPort.StopBits = System.IO.Ports.StopBits.None;
break;
case "1":
_seriPort.StopBits = System.IO.Ports.StopBits.One;
break;
case "1.5":
_seriPort.StopBits = System.IO.Ports.StopBits.OnePointFive;
break;
case "2":
_seriPort.StopBits = System.IO.Ports.StopBits.Two;
break;
default:
//SerPort.StopBits = System.IO.Ports.StopBits.One;
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  串口 RS232 COM