在A一个类里实例化自己写的B串口类在打开发送接收数据我实例化多个A类全部共用一个B类里 每个实例化都是事实去通过串口通讯 c#
在C#中,可以使用单例模式来确保所有A类实例都共用同一个B串口类。具体实现方法如下:
- 定义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()
{
// ...
}
}
- 在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();
}
}
- 在主程序中实例化多个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串口类,避免了重复实例化和打开串口的操作
原文地址: https://www.cveoy.top/t/topic/efG6 著作权归作者所有。请勿转载和采集!