示例#1
0
        void ISDBDeviceChangeListener.OnSDBDeviceChanged()
        {
            bool wasSelectedDeviceDetached = (SelectedDevice != null) && !DeviceInfoList.Exists(device => SelectedDevice.Serial.Equals(device.Serial));//!DeviceInfoCollection.ContainsKey(SelectedDevice.serial);

            UpdateDebugTargetList(wasSelectedDeviceDetached);
            SelectDevice(DeviceInfoList.FindLast(_ => true));
        }
示例#2
0
 private static void PrioritizeSelectedDevice()
 {
     if (SelectedDevice != null)
     {
         SDBDeviceInfo movedUpDevice = DeviceInfoList.FindLast(device => SelectedDevice.Serial.Equals(device.Serial));
         DeviceInfoList.Remove(movedUpDevice);
         DeviceInfoList.Insert(DeviceInfoList.Count, SelectedDevice);
     }
 }
 /// <summary>
 /// 关闭
 /// </summary>
 public void Close()
 {
     thread.Abort();
     m_sListen.Shutdown(SocketShutdown.Both);
     DeviceInfoList.Clear();
     userInfoList.Clear();
     m_sListen.Close();
     IsStartListening = false;
     GC.Collect();
 }
示例#4
0
        public override void ReceiveDeviceInfo()
        {
            byte[] receivedData = CurrentPackage;
            IEqualityComparer <Model.DeviceInfo8036> c = new DeviceCompare();

            Model.DeviceInfo8036 deviceInfo = ParsePackageCC(receivedData);
            if (!DeviceInfoList.Contains(deviceInfo, c))
            {
                DeviceInfoList.Add(deviceInfo);
            }
        }
示例#5
0
 public void refresh(DeviceInfoList list)
 {
     foreach (DeviceItem device in list_)
     {
         DestroyImmediate(device.gameObject);
     }
     list_.Clear();
     foreach (DeviceInfo info in list)
     {
         DeviceItem item = GameObject.Instantiate(_phototype);
         item.setup(info);
         item.transform.SetParent(this.transform);
         item.transform.position   = _phototype.transform.position;
         item.transform.localScale = _phototype.transform.localScale;
         item.gameObject.SetActive(true);
         list_.Add(item);
     }
     //throw new NotImplementedException();
 }
 /// <summary>
 /// 监控
 /// </summary>
 public void StartAccept()
 {
     //异步操作
     //m_sListen.BeginReceiveFrom(
     //m_sListen.Buffer, 0, state.Buffer.Length,
     //m_sListen.None,
     //ref m_sListen.RemoteEP,
     //EndReceiveFromCallback,
     //state);
     m_sListen.ReceiveFrom(BufferData, ref RemoteEndPoint);
     semap.WaitOne();
     if (BufferData[0] == 0x1)
     {
         string        username = Encoding.UTF8.GetString(BufferData, 1, BufferData.Length);
         SocketUserUDP userUdp  = new SocketUserUDP();
         userUdp.ipEndPoint     = RemoteEndPoint;
         userUdp.ActiveDateTime = DateTime.Now;
         userUdp.UserName       = username;
         userUdp.password       = username;
         if (userUdp.password.Length > 4)
         {
             //密码小于4是设备
             DeviceInfoList.Add(userUdp);
             DelegateState.ServerStateInfo(RemoteEndPoint.ToString() + "远端设备连接");
         }
         else
         {
             UserInfoList.Add(userUdp);
             DelegateState.ServerStateInfo(RemoteEndPoint.ToString() + "远端用户连接");
         }
         m_sListen.SendTo(Encoding.UTF8.GetBytes("连接成功!"), RemoteEndPoint);
         DelegateState.ServerConnStateInfo(RemoteEndPoint.ToString(), "UDP");
     }
     else if (BufferData[0] == 0x2)
     {
         string username = Encoding.UTF8.GetString(BufferData, 1, BufferData.Length);
         foreach (SocketUserUDP user in DeviceInfoList)
         {
             if (user.UserName == username)
             {
                 user.ActiveDateTime = DateTime.Now;
                 m_sListen.SendTo(Encoding.UTF8.GetBytes(user.ipEndPoint.ToString()), RemoteEndPoint);
                 DelegateState.ServerStateInfo(RemoteEndPoint.ToString() + "远端用户:" + user.UserName + "搜索设备.");
             }
         }
     }
     else if (BufferData[0] == 0x3)
     {
         string username = Encoding.UTF8.GetString(BufferData, 1, BufferData.Length);
         foreach (SocketUserUDP user in UserInfoList)
         {
             if (user.UserName == username)
             {
                 DeviceInfoList.Remove(user);
                 DelegateState.ServerStateInfo("UDP:" + RemoteEndPoint.ToString() + "远端用户退出");
                 break;
             }
         }
     }
     else
     {
         DelegateState.ServerStateInfo("UDP:" + RemoteEndPoint.ToString() + "发送空数据");
     }
     semap.Release();
     StartAccept();
 }
示例#7
0
        public override void SendDeviceInfo()
        {
            if (CurrentLoopForDownloadedDeviceInfo == null)
            {
                DeviceInfoList = Loops[0].GetDevices <DeviceInfo8036>().ToList <DeviceInfo8036>();
            }

            if (RemoveLoopWhenDeviceDownloaded())
            {
                if (Loops.Count > 0)
                {
                    DeviceInfoList = Loops[0].GetDevices <DeviceInfo8036>().ToList <DeviceInfo8036>();
                }
                else
                {
                    DeviceInfoList = null;
                }
            }
            if (DeviceInfoList != null)
            {
                if (DeviceInfoList.Count > 0)
                {
                    //List<byte[]> lstPackagesByteses = AssemblePackageBB(DeviceInfoList); //commented at 2017-04-05
                    byte[] sendingData = AssemblePackageBB(DeviceInfoList[0]);

                    CurrentLoopForDownloadedDeviceInfo = DeviceInfoList[0].Loop;

                    //int i = 0;
                    //while (i < lstPackagesByteses.Count)
                    //{
                    if (SendingCMD == "BB" && ReceivedBBConfirmCommand) //如果先前发送的BB命令,已收到66确认命令,则发送下一条数据
                    {
                        if (DeviceInfoList.Count > 0)
                        {
                            DeviceInfoList.RemoveAt(0);
                            DownloadedDeviceInfoAccumulatedAmountInCurrentLoop++; //已下传的器件记数 2017-04-06
                        }
                        //i++;
                        if (DeviceInfoList.Count > 0)
                        {
                            sendingData = AssemblePackageBB(DeviceInfoList[0]);
                            SendingCMD  = "BB";
                            //     log.Info("Send BB Message && 66:");
                            ReceivedBBConfirmCommand = false;
                            SerialManager.WriteData(sendingData);
                        }
                        else
                        {
                            SetStatusForAllDevicesDownloaded();
                            SendingCMD = "BA";
                            SerialManager.WriteData(base.AssemblePackageBA()); //发送设置完成
                            //Status = ControllerStatus.DataSended;
                            ReceivedBAConfirmCommand = false;
                        }
                        //System.Threading.Thread.Sleep (2000);
                    }
                    else //否则重发本条数据
                    {
                        //if (lstPackagesByteses.Count > 0)
                        if (sendingData != null)
                        {
                            SendingCMD = "BB";
                            // log.Info("Send BB Message && Without 66:");
                            SerialManager.WriteData(sendingData);
                        }
                        //System.Threading.Thread.Sleep(2000);
                    }
                    //  }
                }
                else
                {
                    Status = ControllerStatus.DataSended;
                }
            }
            else
            {
                Status = ControllerStatus.DataSended;
            }
        }