上位机应用开发-串口通信1、基于C#的串口通信对象:SerialPort
2、字段属性
PortName:获取或设置通信端口
BaudRate:获取或设置串行波特率-DataBits:获取或设置每个字节的标准数据位长度
Parity:获取或设置奇偶校验检查协仪I-StopBits;获取或设置每个字节的标准停止位数
3、常用方法-GetPortNames:获取当前计算机的串行端口名称数组【静态】-Open:打开一个新的串行端口连接-Read:从SerialPort输入缓冲区中读取-Write:将数据写入串行端口输出缓冲区-Close:关闭端口连接,将IsOpen怭 设置为False,并释放内部Stream对象
BytesToRead:得到接收到数据的字节数BytesToWrites:得到送往串口的字节数IsOpen:获取一个值,判断串口是否打开ReadBufferSize:获取或设置读取数据的缓存大小ReadTimeout:读取超时时间WriteBufferSize:与ReadBufferSize相对WriteTimeout:与ReadTimeout相对
ReadByte:读取一个字节的数据ReadChar:读取一个字符的数据
4、常用事件:-DataReceived:表示将处理SerialPort对象的数据接收事件的方法。接收到数据时的委托回调
连接串口
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _8._1day01
{
internal class Program
{
static void Main(string[] args)
{
SerialPort serialPort = new SerialPort();
string[] serialport = SerialPort.GetPortNames();
serialPort.PortName = "COM1";
serialPort.BaudRate = 9600;
serialPort.DataBits = 8;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.Open();
}
}
}
如果出现以下异常说明串口的端口被占用
串口通信
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _8._1day01
{
internal class Program
{
static void Main(string[] args)
{
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.Open();
serialPort.Write("Hello");
serialPort.Close();
}
}
}
发送频率太快,报文会连在一起
发送报文太长 效率不高 准确性不高