C#中的通信

发布于:2024-08-02 ⋅ 阅读:(43) ⋅ 点赞:(0)

上位机应用开发-串口通信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();
        }
    }
}

发送频率太快,报文会连在一起

发送报文太长 效率不高 准确性不高