using S7.Net;
using SamplePre.Communication.Communication;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace SamplePre.Communication
{
public class CommunicationFactory
{
///
/// 创建通讯实例
///
/// 协议类型
/// 连接参数
///
///
public static ICommunication CreateCommunication(CommProtocolType protocolType, string connectionParams)
{
ICommunication comm = null;
switch (protocolType)
{
case CommProtocolType.S7:
comm = CreateS7(connectionParams);
break;
case CommProtocolType.ModbusTcp:
comm = CreateModbusTcp(connectionParams);
break;
case CommProtocolType.ModbusRtu:
break;
default:
break;
}
return comm;
}
public static ICommunication CreateS7(string connectionParams)
{
string[] params1 = connectionParams.Split(':');
if(params1 == null || params1.Length < 3) return null;
//ICommunication comm = new S7PlcCommunicator(CpuType.S71500, "192.168.10.2", 0, 1);
ICommunication comm = new S7PlcCommunicator(CpuType.S71500, params1[0], int.Parse( params1[1]), int.Parse( params1[2]));
return comm;
}
public static ICommunication CreateModbusTcp(string connectionParams)
{
string[] params1 = connectionParams.Split(':');
if (params1 == null || params1.Length < 2) return null;
ICommunication comm = new ModbusTcpCommunicator(params1[0], int.Parse(params1[1]));
return comm;
}
}
}