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)); }
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(); }
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); } }
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(); }
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; } }