123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- using IMCS.Device;
- using IMCS.Device.body;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
- using System.Net.NetworkInformation;
- using System.Text;
- using YG.Device;
- namespace YG
- {
- /// <summary>
- /// 命令列表
- /// </summary>
- public class DeviceManage
- {
- //public static DeviceInfo info = new DeviceInfo();
- private static string RETVAL = "success";
- private static int ASK_TIMES = 20;
- private static string VirtualProgram = ConfigurationManager.AppSettings["VirtualProgram"];
- private static int HEX_BINARY = 8;
- private uint currentToolArea = 1;
- private static string ConncetionRedisString = ConfigurationManager.AppSettings["ConncetionRedisString"];
- private static string HttpServerUrlString = ConfigurationManager.AppSettings["HttpServerUrlString"];
- private static string NcExtendPath = ConfigurationManager.AppSettings["NcExtendPath"];
- private static string NcUpLoadPath = ConfigurationManager.AppSettings["NcUpLoadPath"];
- private static string LocalNcPath = ConfigurationManager.AppSettings["LocalNcPath"];
- private static string ClsSFTP_IP = ConfigurationManager.AppSettings["ClsSFTP_Ip"];
- private static string ClsSFTP_Port = ConfigurationManager.AppSettings["ClsSFTP_Port"];
- private static string ClsSFTP_UserName = ConfigurationManager.AppSettings["ClsSFTP_UserName"];
- private static string ClsSFTP_PWD = ConfigurationManager.AppSettings["ClsSFTP_Pwd"];
- private static string ConncetionDeviceListString = ConfigurationManager.AppSettings["ConncetionDeviceListString"];
- private static string ClsSFTPListString = ConfigurationManager.AppSettings["ClsSFTPListString"];
- /// <summary>
- /// 柔性线-机器人地址
- /// </summary>
- private static string Path_Flexible_Roboot_Path = ConfigurationManager.AppSettings["Flexible_Roboot_Path"];
- /// <summary>
- /// 柔性线-机床1
- /// </summary>
- private static string Path_Flexible_Machine1_Path = ConfigurationManager.AppSettings["Flexible_Machine1_Path"];
- /// <summary>
- /// 柔性线-机床2
- /// </summary>
- private static string Path_Flexible_Machine2_Path = ConfigurationManager.AppSettings["Flexible_Machine2_Path"];
- /// <summary>
- /// 柔性线-机床3
- /// </summary>
- private static string Path_Flexible_Machine3_Path = ConfigurationManager.AppSettings["Flexible_Machine3_Path"];
- /// <summary>
- /// 柔性线-机床4
- /// </summary>
- private static string Path_Flexible_Machine4_Path = ConfigurationManager.AppSettings["Flexible_Machine4_Path"];
- /// <summary>
- /// 柔性线-打标机
- /// </summary>
- private static string Path_Flexible_Print_Path = ConfigurationManager.AppSettings["Flexible_Print_Path"];
- /// <summary>
- /// 柔性线-清洗剂
- /// </summary>
- private static string Path_Flexible_Clean_Path = ConfigurationManager.AppSettings["Flexible_Clean_Path"];
- /// <summary>
- /// 智能单元-机器人
- /// </summary>
- private static string Path_Intelligent_Roboot_Path = ConfigurationManager.AppSettings["Intelligent_Roboot_Path"];
- /// <summary>
- /// 智能单元-机床
- /// </summary>
- private static string Path_Intelligent_Machine_Path = ConfigurationManager.AppSettings["Intelligent_Machine_Path"];
- /// <summary>
- /// 质量中心-机器人
- /// </summary>
- private static string Path_Quality_Roboot_Path = ConfigurationManager.AppSettings["Quality_Roboot_Path"];
- private static DeviceManage coml = new DeviceManage();
- public static DeviceManage Instance { get { return coml; } }
- /// <summary>
- /// 设备列表管理
- /// </summary>
- public Dictionary<EnumDeviceList, DeviceList> device { get; set; } = new Dictionary<EnumDeviceList, DeviceList>();
- public Dictionary<string, DeviceList> deviceList { get; set; } = new Dictionary<string, DeviceList>();
- public DeviceManage()
- {
- device = new Dictionary<EnumDeviceList, DeviceList>();
- Init();
- }
- //初始化信息 建立所有协议连接
- public void Init()
- {
- List<ConnectDeviceBody> devices = GetConnectDeviceList();
- foreach (ConnectDeviceBody connectDevice in devices)
- {
- DeviceList deviceInfo = null;
- if (connectDevice.ProtocolType.Equals(DeviceType.OPCUa.ToString()))
- {
- deviceInfo = new Device.DeviceOPCUat("opc.tcp://" + connectDevice.ServerUrl, connectDevice.UserName, connectDevice.Password);
- deviceInfo.Dtype = DeviceType.OPCUa;
- }
- else if (connectDevice.ProtocolType.Equals(DeviceType.Socket.ToString()))
- {
- if (deviceList.Where(m => m.Key.Equals(connectDevice.ServerUrl)).Count() == 0)
- {
- deviceInfo = new Device.DeviceSocket(connectDevice.Ip, connectDevice.Port);//8074
- deviceInfo.Dtype = DeviceType.Socket;
- deviceInfo.DeviceInit();
-
- }
- }
- else if (connectDevice.ProtocolType.Equals(DeviceType.PLC_S7.ToString()))
- {
- deviceInfo = new Device.DeviceS7(HslCommunication.Profinet.Siemens.SiemensPLCS.S1200, connectDevice.Ip);
- deviceInfo.Dtype = DeviceType.PLC_S7;
- deviceInfo.DeviceInit();
- }
- if (deviceInfo != null)
- {
- deviceInfo.ServerUrl = connectDevice.ServerUrl;
- deviceInfo.Ip = connectDevice.Ip;
- deviceList.Add(connectDevice.ServerUrl, deviceInfo);
- }
- }
- }
-
- /// 设备列表
- public List<ConnectDeviceBody> GetConnectDeviceList()
- {
- List<ConnectDeviceBody> list = new List<ConnectDeviceBody>();
- string[] deviceList = ConncetionDeviceListString.Split('#');
- foreach (string dArray in deviceList)
- {
- if (!string.IsNullOrEmpty(dArray))
- {
- string[] deviceArray = dArray.Split(';');
- ConnectDeviceBody deviceInfo = new ConnectDeviceBody();
- if ((deviceArray[0]).Ping())
- {
- deviceInfo.Ip = deviceArray[0];
- deviceInfo.Port = int.Parse(deviceArray[1]);
- deviceInfo.UserName = deviceArray[2];
- deviceInfo.Password = deviceArray[3];
- deviceInfo.ProtocolType = deviceArray[4];
- deviceInfo.ServerUrl = deviceInfo.Ip + ":" + deviceInfo.Port;
- list.Add(deviceInfo);
- }
- }
- }
- return list;
- }
- /// SFTP设备列表
- public List<SFTPDeviceBody> GetSFTPDeviceList()
- {
- List<SFTPDeviceBody> list = new List<SFTPDeviceBody>();
- string[] deviceList = ClsSFTPListString.Split('#');
- foreach (string dArray in deviceList)
- {
- if (!string.IsNullOrEmpty(dArray))
- {
- string[] deviceArray = dArray.Split(';');
- SFTPDeviceBody deviceInfo = new SFTPDeviceBody();
- deviceInfo.Ip = deviceArray[0];
- deviceInfo.Port = deviceArray[1];
- deviceInfo.UserName = deviceArray[2];
- deviceInfo.Password = deviceArray[3];
- deviceInfo.Path = deviceArray[4];
- deviceInfo.NcExtendPath = deviceArray[5];
- list.Add(deviceInfo);
- }
- }
- return list;
- }
- public SFTPDeviceBody GetSFTPOne(string ip)
- {
- List<SFTPDeviceBody> list = GetSFTPDeviceList();
- SFTPDeviceBody retBody = new SFTPDeviceBody();
- foreach (SFTPDeviceBody body in list)
- {
- if (body.Ip.Equals(ip))
- {
- retBody = body;
- }
- }
- return retBody;
- }
- /// <summary>
- /// 添加设备到设备列表
- /// </summary>
- /// <param name="devive"></param>
- /// <param name="enumdev"></param>
- public void DeviceAdd(DeviceList devive, EnumDeviceList enumdev)
- {
- device.Add(enumdev, devive);
- }
- public DeviceList GetOne(EnumDeviceList enumDeviceList)
- {
- return device.Where(m => m.Key.Equals(enumDeviceList)).FirstOrDefault().Value;
- }
- public DeviceList GetOne(string serviceUrl)
- {
- return deviceList.Where(m => m.Key.Equals(serviceUrl)).FirstOrDefault().Value;
- }
- public void DeviceSend(EnumDeviceList enumdev, EnumComList com)
- {
- Log.Instance.WriteLogAdd(string.Format("{0}发送一次数据{1}", enumdev, com));
- device.Where(m => m.Key.Equals(enumdev)).FirstOrDefault().Value.DeviceSend(ReturnCom(com));
- System.Threading.Thread.Sleep(500);
- }
- /// <summary>
- /// 发送指令
- /// </summary>
- /// <param name="enumdev"></param>
- public void DeviceClose()
- {
- foreach (var dc in device)
- {
- dc.Value.DeviceClose();
- }
- }
- public string ReturnCom(EnumComList enumComList)
- {
- return "";
- }
- }
- }
|