コード例 #1
0
ファイル: GprsDtuServer.cs プロジェクト: icprog/FS-SMISCloud
        /// <summary>
        /// 注册DTU(上线DTU注册)
        /// </summary>
        /// <param name="dtuid"></param>
        /// <param name="isnewstate"></param>
        /// <returns></returns>
        private GprsDtuConnection RegisterConnection(string dtuid, out bool isnewstate)
        {
            isnewstate = false;
            GprsDtuConnection c;

            if (!_connectPool.ContainsKey(dtuid))
            {
                c = new GprsDtuConnection(this)
                {
                    DtuID = dtuid
                };
                _connectPool.TryAdd(c.DtuID, c);
                // _connectPool[c.DtuID] = c;
                isnewstate = true;
            }
            else
            {
                c = _connectPool[dtuid];
                if (!c.IsOnline)
                {
                    isnewstate = true;
                }
            }
            c.DtuID = dtuid;
            return(c);
        }
コード例 #2
0
ファイル: GprsDtuServer.cs プロジェクト: icprog/FS-SMISCloud
 private void FireConnectionStatusChanged(GprsDtuConnection c, WorkingStatus oldStatus, WorkingStatus newStatus)
 {
     if (OnConnectStatusChanged != null)
     {
         _log.InfoFormat("DtuConnection {0} going {1}", c, newStatus);
         OnConnectStatusChanged(c, oldStatus, newStatus);
     }
 }
コード例 #3
0
ファイル: GprsDtuServer.cs プロジェクト: icprog/FS-SMISCloud
 /// <summary>
 /// 更新传感器信息时,添加表中不存在的DTU
 /// </summary>
 /// <param name="dtuCode"></param>
 public void AddDtu(string dtuCode)
 {
     if (!_connectPool.ContainsKey(dtuCode))
     {
         var c = new GprsDtuConnection(this)
         {
             DtuID = dtuCode
         };
         _connectPool[dtuCode] = c;
     }
     _server.Disconnect(dtuCode);
 }
コード例 #4
0
ファイル: GprsDtuServer.cs プロジェクト: icprog/FS-SMISCloud
 /// <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);
     }
 }