C之门课程系列28
串口通信
在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。创建C#串口通信程序之命名空间
System.IO.Ports命名空间中最重用的是SerialPort 类。
创建C#串口通信程序之创建SerialPort 对象
通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。
串口通信-属性.BaudRate;获取或设置波特率.BytesToRead;得到 接收到数据的字节数.BytesToWrites;得到送往串口的字节数.DataBits;获取或设置数据位.IsOpen;获取一个值,判断串口是否打开.Pariy;获取或设置校验位.PortName;串口名称.ReadBufferSize;获取或设置读取数据的缓存大小.ReadTimeout;获取或设置读取操作未完成时发生超时之前的毫秒数 默认值-1.StopBits;停止位.NewLine;用于解释通过ReadLine()与WriteLine()的值.WriteBufferSize;与ReadBufferSize相对.WriteTimeout;与ReadTimeout相对
串口通信-方法.Close();判断串口.Open();打开串口.Read(Byte[], int32, int32);读取数据.Read(Char[], int32, int32);.ReadByte();读取一个字节的数据.ReadChar();读取一个字符的数据.ReadLine();一直读取到输入缓冲区的NewLine值:返回string类型.ReadExisting();读取可用的字节.ReadTo(string value);读取数据,直到读到该value时停止。.Write(string);写入数据.Write(byte[], int32, int32);.Write(char[], int32, int32);.WriteLine(string value);将指定的value值与NewLine值一起写入
串口通信-写 static SerialPort serialPort = new SerialPort(); static void Main(string[] args) { serialPort.PortName = "COM1";//串口名称 serialPort.BaudRate = 9600; //获取或设置波特率 serialPort.Parity = Parity.Even;//获取或设置校验位 serialPort.DataBits =8;//获取或设置数据位默认值8 serialPort.StopBits = StopBits.One;// 停止位 serialPort.Open(); serialPort.Write("A"); serialPort.Close(); }
串口通信-读 static SerialPort serialPort = new SerialPort(); static void Main(string[] args) { byte[] a = System.Text.Encoding.ASCII.GetBytes(" "); serialPort.PortName = "COM1";//串口名称 serialPort.BaudRate = 9600; //获取或设置波特率 serialPort.Parity = Parity.None;//获取或设置校验位 serialPort.DataBits =8;//获取或设置数据位默认值8 serialPort.StopBits = StopBits.One;// 停止位 serialPort.DataReceived += SerialPort_DataReceived; serialPort.Open(); Console.ReadKey(); } private static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] b = new byte[8]; int A = serialPort.Read(b,0,8); Console.Write(System.Text.Encoding.ASCII.GetString(b)); }
如果没有测试串口,可以用Virtual Serial Port Driver Pro 模拟
下载地址:链接:https://pan.baidu.com/s/1NTyNGpWi7YkmaKG4qnhuAA
提取码:ukqe
SerialPort serialPort = new SerialPort(); private void btmSend_Click(object sender, EventArgs e) { serialPort.PortName = "COM1";//串口名称 serialPort.BaudRate = 9600; //获取或设置波特率 serialPort.Parity = Parity.Even;//获取或设置校验位 serialPort.DataBits = 8;//获取或设置数据位默认值8 serialPort.StopBits = StopBits.One;// 停止位 serialPort.Open(); serialPort.Write(txtSend.Text); serialPort.Close(); } private void btnReceive_Click(object sender, EventArgs e) { byte[] a = System.Text.Encoding.ASCII.GetBytes(" "); serialPort.PortName = "COM1";//串口名称 serialPort.BaudRate = 9600; //获取或设置波特率 serialPort.Parity = Parity.None;//获取或设置校验位 serialPort.DataBits = 8;//获取或设置数据位默认值8 serialPort.StopBits = StopBits.One;// 停止位 serialPort.DataReceived += SerialPort_DataReceived; serialPort.Open(); } private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] b = new byte[8]; int A = serialPort.Read(b, 0, 8); this.Invoke(new Action(() => { txtReceive.Text = System.Text.Encoding.ASCII.GetString(b); })); }
串口测试工具 AccessPort链接:https://pan.baidu.com/s/1HEvtpqBdIQsiVZ_cK5mnWA 提取码:g4a7