| 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 "";        }    }}
 |