在C#中,可以使用单例模式来确保所有A类实例都共用同一个B串口类。具体实现方法如下:

  1. 定义B串口类,使用单例模式确保只有一个实例。
public class BSerialPort
{
    private static BSerialPort instance;
    private SerialPort serialPort;

    private BSerialPort()
    {
        // 初始化串口
        serialPort = new SerialPort();
        // 设置串口参数
        // ...
    }

    public static BSerialPort GetInstance()
    {
        if (instance == null)
        {
            instance = new BSerialPort();
        }
        return instance;
    }

    // 打开串口
    public void Open()
    {
        serialPort.Open();
    }

    // 发送数据
    public void SendData(byte[] data)
    {
        serialPort.Write(data, 0, data.Length);
    }

    // 接收数据
    public byte[] ReceiveData()
    {
        // ...
    }
}
  1. 在A类中实例化B串口类,并调用其方法进行通讯。
public class A
{
    private BSerialPort bSerialPort = BSerialPort.GetInstance();

    public void OpenSerialPort()
    {
        bSerialPort.Open();
    }

    public void SendData(byte[] data)
    {
        bSerialPort.SendData(data);
    }

    public byte[] ReceiveData()
    {
        return bSerialPort.ReceiveData();
    }
}
  1. 在主程序中实例化多个A类,并调用其方法进行通讯。
static void Main(string[] args)
{
    A a1 = new A();
    A a2 = new A();
    // ...

    a1.OpenSerialPort();
    a2.OpenSerialPort();
    // ...

    a1.SendData(data1);
    a2.SendData(data2);
    // ...

    byte[] receivedData1 = a1.ReceiveData();
    byte[] receivedData2 = a2.ReceiveData();
    // ...
}

通过以上方法,所有A类实例都共用同一个B串口类,避免了重复实例化和打开串口的操作

在A一个类里实例化自己写的B串口类在打开发送接收数据我实例化多个A类全部共用一个B类里 每个实例化都是事实去通过串口通讯 c#

原文地址: https://www.cveoy.top/t/topic/efG6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录