利用C#串口类实现设备间通信协议

1949idc 2年前 (2024-09-19) 阅读数 308 #编程语言

要使用C#实现一个串口通信协议,首先需要创建一个串口类,该类将包含打开、关闭、读取和写入串口的方法

using System;
using System.IO.Ports;
using System.Threading;

public class SerialPortCommunication
{
    private SerialPort _serialPort;
    private string _dataReceived;

    public SerialPortCommunication(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits)
    {
        _serialPort = new SerialPort(portName, baudRate, parity, dataBits, stopBits);
        _serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
    }

    public void Open()
    {
        if (!_serialPort.IsOpen)
        {
            _serialPort.Open();
        }
    }

    public void Close()
    {
        if (_serialPort.IsOpen)
        {
            _serialPort.Close();
        }
    }

    public void Write(string data)
    {
        if (_serialPort.IsOpen)
        {
            _serialPort.Write(data);
        }
    }

    private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        _dataReceived = _serialPort.ReadExisting();
        Console.WriteLine("Data received: " + _dataReceived);
    }
}

接下来,你可以在主程序中使用这个串口类来实现设备间的通信。以下是一个简单的示例:

using System;
using System.Threading;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个串口通信对象,设置串口名称、波特率等参数
        SerialPortCommunication serialPortCommunication = new SerialPortCommunication("COM3", 9600, Parity.None, 8, StopBits.One);

        // 打开串口
        serialPortCommunication.Open();

        // 循环发送数据
        while (true)
        {
            Console.WriteLine("Enter data to send:");
            string dataToSend = Console.ReadLine();

            if (dataToSend.ToLower() == "exit")
            {
                break;
            }

            serialPortCommunication.Write(dataToSend);
            Thread.Sleep(1000);
        }

        // 关闭串口
        serialPortCommunication.Close();
    }
}

这个示例中,我们创建了一个SerialPortCommunication对象,并设置了串口名称、波特率等参数。然后,我们打开串口并循环发送用户输入的数据。当用户输入"exit"时,程序将关闭串口并退出。

请注意,这个示例仅用于演示目的。在实际应用中,你可能需要根据设备的具体要求来调整串口参数和通信协议。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业