예제 #1
0
파일: DeviceSocketC.cs 프로젝트: Gz1d/Gz
        void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            System.Timers.Timer t = (System.Timers.Timer)sender;
            t.Enabled = false;
            IDictionaryEnumerator enumerator = this.Sokcets.GetEnumerator();

            Config.SocketCItem item = null;
            while (enumerator.MoveNext())
            {
                Bp.Socket.Client socket = enumerator.Value as Bp.Socket.Client;
                item = (Config.SocketCItem)socket.DeviceType;
                if (item.Timer == t)
                {
                    if (!item.IsConnected)
                    {
                        socket.DoStart();
                    }
                    break;
                }
            }
            if (!item.IsConnected)
            {
                t.Enabled = true;
            }
        }
예제 #2
0
파일: DeviceSocketC.cs 프로젝트: Gz1d/Gz
        void socket_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "IsConnected")
            {
                Bp.Socket.Client client = (Bp.Socket.Client)sender;

                Config.SocketCItem item = (Config.SocketCItem)client.DeviceType;
                item.IsConnected = client.IsConnected;
                if (!item.IsConnected)
                {
                    item.Timer.Enabled = true;
                }
            }
        }
예제 #3
0
파일: DeviceSocketC.cs 프로젝트: Gz1d/Gz
 /// <summary>
 /// 释放
 /// </summary>
 public override void DoRelease()
 {
     try
     {
         IDictionaryEnumerator enumerator = this.Sokcets.GetEnumerator();
         while (enumerator.MoveNext())
         {
             Bp.Socket.Client socket = enumerator.Value as Bp.Socket.Client;
             socket.DoRelease();
         }
     }
     catch (Exception ex)
     {
         throw new ReleaseException(this.ToString(), ex.ToString());
     }
 }
예제 #4
0
파일: DeviceSocketC.cs 프로젝트: Gz1d/Gz
        /// <summary>
        /// 停止
        /// </summary>
        public override void DoStop()
        {
            try
            {
                IDictionaryEnumerator enumerator = this.Sokcets.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    Bp.Socket.Client socket = enumerator.Value as Bp.Socket.Client;

                    Config.SocketCItem item = (Config.SocketCItem)socket.DeviceType;
                    item.PropertyChanged -= new PropertyChangedEventHandler(item_PropertyChanged);

                    socket.DoStop();
                }
            }
            catch (Exception ex)
            {
                throw new StopException(this.ToString(), ex.ToString());
            }
        }
예제 #5
0
파일: DeviceSocketC.cs 프로젝트: Gz1d/Gz
        /// <summary>
        /// 初始化
        /// </summary>
        public override void DoInit()
        {
            try
            {
                foreach (Config.SocketCItem item in this.config.SocketCItems)
                {
                    if (!item.IsActive)
                    {
                        continue;
                    }
                    if (item.Timer == null)
                    {
                        item.Timer = new System.Timers.Timer();
                    }
                    item.Timer.Enabled  = false;
                    item.Timer.Interval = 1000 * item.ConnectSecond;
                    item.Timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);

                    Bp.Socket.Client client = new Bp.Socket.Client(item.IP, item.Port, item);
                    client.TimeOut   = item.OutTime;
                    client.TimeHeart = item.HeartSecond;

                    Sokcets.Add(item.SocketDevice, client);
                    item.PropertyChanged += new PropertyChangedEventHandler(item_PropertyChanged);
                }

                IDictionaryEnumerator enumerator = this.Sokcets.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    Bp.Socket.Client socket = enumerator.Value as Bp.Socket.Client;
                    socket.OnSocketReceive += new Bp.Socket.Client.SocketReceiveDelegate(this.Socket_OnSocketReceive);
                    socket.PropertyChanged += new PropertyChangedEventHandler(socket_PropertyChanged);
                    socket.DoInit();
                }
            }
            catch (Exception ex)
            {
                throw new InitException(this.ToString(), ex.ToString());
            }
        }
예제 #6
0
파일: DeviceSocketC.cs 프로젝트: Gz1d/Gz
        /// <summary>
        /// 启动
        /// </summary>
        public override void DoStart()
        {
            try
            {
                IDictionaryEnumerator enumerator = this.Sokcets.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    Bp.Socket.Client socket = enumerator.Value as Bp.Socket.Client;
                    socket.DoStart();

                    if (!socket.IsConnected)
                    {
                        Config.SocketCItem item = (Config.SocketCItem)socket.DeviceType;
                        item.Timer.Enabled = true;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new StartException(this.ToString(), ex.ToString());
            }
        }
예제 #7
0
파일: DeviceSocketC.cs 프로젝트: Gz1d/Gz
 /// <summary>
 /// 发送数据
 /// </summary>
 /// <param name="device"></param>
 /// <param name="data"></param>
 public void SocketSend(Common.SocketDevice device, byte[] data)
 {
     Bp.Socket.Client socket = (Bp.Socket.Client)Sokcets[device];
     socket.SendData(data);
 }