示例#1
0
 internal void UpdateDtuConnection(ZYBEventArgs e)
 {
     this.IsOnline    = e.DTU.IsOnline;
     this.PhoneNumber = e.DTU.PhoneNumber;
     this.LoginTime   = e.DTU.LoginTime;
     this.RefreshTime = e.DTU.RefreshTime;
     this.IP          = e.DTU.IP;
     this.SetReady(e.DTU.IsOnline);
 }
示例#2
0
 private DtuMsg EventToMsg(ZYBEventArgs e)
 {
     return(new DtuMsg
     {
         DtuId = e.DTU.ID,
         IsOnline = e.DTU.IsOnline,
         Logintime = e.DTU.LoginTime,
         Refreshtime = e.DTU.RefreshTime,
         Databuffer = e.DTU.DataByte
     });
 }
示例#3
0
        /// <summary>
        /// 接收数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void server_ReceiveData(object sender, ZYBEventArgs e)
        {
            string dtuid = e.DTU.ID;
            var    c     = _connectPool[dtuid];

            c.RefreshTime = e.DTU.RefreshTime;
            DtuMsg m = EventToMsg(e);

            m.IsWorking = true;
            c.OnDataReceived(m); // passthrough
        }
示例#4
0
        /// <summary>
        /// 接收数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void server_ReceiveData(object sender, ZYBEventArgs e)
        {
            string     dtuid = e.DTU.ID;
            Connection c     = (Connection)_connectPool[dtuid];

            c.RefreshTime = e.DTU.RefreshTime;
            DtuMsg m = EventToMsg(e);

            m.IsWorking = true;
            c.onDataReceived(m); // passthrough
        }
示例#5
0
 private void server_ClientClose(object sender, ZYBEventArgs e)
 {
     lock (sender)
     {
         string dtuId = e.DTU.ID;
         if (!_connectPool.ContainsKey(dtuId))
         {
             return;
         }
         var c = _connectPool[dtuId];
         c.UpdateDtuConnection(e);
         FireConnectionStatusChanged(c, WorkingStatus.IDLE, WorkingStatus.NA);
     }
 }
示例#6
0
 /// <summary>
 /// Connect, 注册服务.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void server_ClientConnect(object sender, ZYBEventArgs e)
 {
     lock (sender)
     {
         bool isnewstate;
         GprsDtuConnection c = RegisterConnection(e.DTU.ID, out isnewstate);
         c.UpdateDtuConnection(e);
         if (!isnewstate)
         {
             _log.ErrorFormat("DTU {0} is online twice !!!", e.DTU.ID);
             return;
         }
         FireConnectionStatusChanged(c, WorkingStatus.NA, WorkingStatus.IDLE);
     }
 }
示例#7
0
 private void svr_ReceiveData(object sender, ZYBEventArgs e)
 {
     Monitor.Enter(sender);
     try
     {
         if (OnDataReceived != null)
         {
             OnDataReceived(new ReceiveDataInfo(e.DTU.ID, (byte[])e.DTU.DataByte.Clone()));
         }
     }
     finally
     {
         Monitor.Exit(sender);
     }
 }
示例#8
0
 void _svr_ClientConnect(object sender, ZYBEventArgs e)
 {
     Monitor.Enter(sender);
     try
     {
         if (ReceiveEvent != null)
         {
             ReceiveEvent(sender, new ComPacketEventArgs((byte)ReceiveType.Online, e));
         }
     }
     finally
     {
         Monitor.Exit(sender);
     }
 }
示例#9
0
        /// <summary>
        /// Connect, 注册服务.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void server_ClientConnect(object sender, ZYBEventArgs e)
        {
            Connection c = registerConnection(e.DTU.ID, e.DTU.IP, e.DTU.PhoneNumber);

            c.IsOnline    = e.DTU.IsOnline;
            c.PhoneNumber = e.DTU.PhoneNumber;
            c.LoginTime   = e.DTU.LoginTime;
            c.RefreshTime = e.DTU.RefreshTime;
            c.SetReady(true);
            DtuMsg m = EventToMsg(e);

            m.IsWorking = false;
            c.onDataReceived(m);
            fireConnectionStatusChanged(c, WorkingStatus.NA, WorkingStatus.IDLE);
            Console.WriteLine(string.Format("Connection online: {0},{1}({2}) on {3}", c.DtuID, c.IP, c.PhoneNumber, c.LoginTime));
        }
示例#10
0
 private void ClientClose(object sender, ZYBEventArgs e)
 {
     Monitor.Enter(sender);
     try
     {
         //_thread.Abort();
         if (table.ContainsKey(e.DTU.ID))
         {
             Thread t = (Thread)table[e.DTU.ID];
             t.Abort();
             table.Remove(e.DTU.ID);
         }
         logger.Info(string.Format("DTU {0} is offline", e.DTU.ID));
     }
     finally
     {
         Monitor.Exit(sender);
     }
 }
示例#11
0
        static void server_ClientClose(object sender, ZYBEventArgs e)
        {
            string dtuId = e.DTU.ID;

            if (!_connectPool.Contains(dtuId))
            {
                // DTU Not registered? system error.
                //log.Fatal(string.Format("System error, DTU '{0}' Not registered!!!", dtuId));
                return;
            }
            var    c = (Connection)_connectPool[dtuId];
            DtuMsg m = EventToMsg(e);

            m.IsWorking = false;
            c.onDataReceived(m);
            c.SetReady(false);
            fireConnectionStatusChanged(c, WorkingStatus.IDLE, WorkingStatus.NA);
            Console.WriteLine("Client closed.");
        }
示例#12
0
 void _svr_ReceiveData(object sender, ZYBEventArgs e)
 {
     Monitor.Enter(sender);
     try
     {
         if (ReceiveEvent != null)
         {
             var dtuid = (string)e.DTU.ID.Clone();
             var data  = (byte[])e.DTU.DataByte.Clone();
             ReceiveEvent(sender,
                          new ComPacket((byte)ReceiveType.Data, data, dtuid));
             //  Log.Debug(dtuid + " @ @ : " + ValueHelper.ByteToHexStr(data));
         }
     }
     finally
     {
         Monitor.Exit(sender);
     }
 }
示例#13
0
 private void ClientConnect(object sender, ZYBEventArgs e)
 {
     Monitor.Enter(sender);
     try
     {
         _deviceId = e.DTU.ID;
         logger.Info(string.Format("DTU {0} is online", e.DTU.ID));
         //_thread = new Thread(Run);
         //_thread.Start();
         _thread      = new Thread(new ParameterizedThreadStart(Run));
         _thread.Name = e.DTU.ID;
         if (!table.ContainsKey(e.DTU.ID))
         {
             table.Add(e.DTU.ID, _thread);
             _thread.Start(e.DTU.ID);
         }
     }
     finally
     {
         Monitor.Exit(sender);
     }
 }
示例#14
0
 private void svr_ClientConnect(object sender, ZYBEventArgs e)
 {
     Monitor.Enter(sender);
     try
     {
         if (OnConnectionChangedHandler != null)
         {
             OnConnectionChangedHandler(new DTUConnectionEventArgs
             {
                 DtuId       = e.DTU.ID,
                 Status      = ReceiveType.Online,
                 Time        = DateTime.Now,
                 Ip          = e.DTU.IP,
                 PhoneNumber = e.DTU.PhoneNumber,
                 RefreshTime = e.DTU.RefreshTime,
                 LoginTime   = e.DTU.LoginTime
             });
         }
     }
     finally
     {
         Monitor.Exit(sender);
     }
 }
示例#15
0
 public ComPacketEventArgs(byte type, ZYBEventArgs e) : this(type)
 {
     Arg = e;
 }