串口通信
在对串口进行编程时候,我们要向串口发送指令,然后我们解析串口返回的指令。从.NET Framework 2.0开始,C#提供了SerialPort类用于实现串口控制。命名空间:System.IO.Ports。
1、 常用的字段:PortName:获取或设置通信端口
BaudRate:获取或设置串行波特率Parity:获取或设置奇偶效验检查协议
DataBits:获取或设置每个字节的标准数据位长度
StopBits:获取或设置每个字节的标准停止位数
2、 常用方法: Open:打开一个新的串行端口连接
Close:关闭端口连接,将IsOpen属性设置false,并释放内部Stream对象
Read:从SerialPort输入缓冲区中读取
Write:将数据写入串行端口输出缓冲区 GetPortNames:获取当前计算机的串行端口名称数组
3、常用事件:
DataReceived:表示将处理SerialPort对象的数据接收事件的方法
DisPosed:通过调用释放组件时发生Dispose方法(继承自Component)
4、SerialPort 控件使用流程
流程是设置通信端口号及波特率、数据位、停止位和校验位,再打开端口连接、发送数据、接收数据,最后关闭端口连接步骤。 注意:
使用Unity是进行串口通信的时候,需要在Project Setting=>Player=>Other Settings=>Configuration中将API Compatibility Level 改成Mono.NET 2.0/4.0/其他。 代码示例:
using System.IO.Ports; using UnityEngine; public class RunPort : MonoBehaviour { private SerialPort serialPort; public string portName = "COM3";//串口名 public int baudRate = 115200;//波特率 public Parity parity = Parity.None;//效验位 public int dataBits = 8;//数据位 public StopBits stopBits = StopBits.One;//停止位 void Start() { serialPort = new SerialPort(portName, baudRate, parity, dataBits, stopBits); StartRide(); } void StartRide() { OpenSerialPort(); SendData("A10\n"); SendData("PWM30\n"); } void Update() { ReadData(); } void OnApplicationQuit() { SendData("A00\n"); CloseSerialPort(); } void OpenSerialPort() { if (serialPort != null) { serialPort.Open(); } } void SendData(string data) { if (serialPort != null && serialPort.IsOpen) { serialPort.Write(data); } } void ReadData() { if (serialPort != null && serialPort.IsOpen) { if (serialPort.BytesToRead > 0) { string data = serialPort.ReadLine(); Debug.Log("Received Data: " + data); } } } void CloseSerialPort() { if (serialPort != null && serialPort.IsOpen) { serialPort.Close(); } } }
标签:void,端口,通信,SerialPort,串口,serialPort,public From: https://www.cnblogs.com/gatran/p/18096475