예제 #1
0
        //获取搜索界面ListBox 点名数据
        private ObservableCollection <SignalDisplay> getSourcePointNames()
        {
            //pointMetaData.Sort((a,b)=> a.Name.CompareTo(b.Name));
            ObservableCollection <SignalDisplay> pointNames = new ObservableCollection <SignalDisplay>();

            foreach (var metaData in pointMetaData)
            {
                if (metaData.Length == 1)
                {
                    SignalDisplay s = new SignalDisplay {
                        SignalName = metaData.Name, Type = metaData.ValueType, IsVirtual = metaData.IsVirtual
                    };
                    pointNames.Add(s);
                }
                else
                {
                    for (int i = 0; i < metaData.Length; i++)
                    {
                        string        name = string.Concat(metaData.Name, "[", i, "]");
                        SignalDisplay s    = new SignalDisplay {
                            SignalName = name, Type = metaData.ValueType, IsVirtual = metaData.IsVirtual
                        };

                        pointNames.Add(s);
                    }
                }
            }
            return(pointNames);
        }
예제 #2
0
        private void wirteTeBox_KeyDown(object sender, KeyEventArgs e)
        {
            TextBox inputTeBox = sender as TextBox;

            if (e.Key == Key.Enter)
            {
                var           parent    = VisualTreeHelper.GetParent(inputTeBox) as ContentPresenter;
                SignalDisplay item      = parent.Content as SignalDisplay;
                int           index     = 0;
                var           nameGroup = item.SignalName.Split('[');
                if (nameGroup.Length > 1)
                {
                    nameGroup[1] = nameGroup[1].Replace("]", "");
                    int.TryParse(nameGroup[1], out index);
                }
                WriteData data = new WriteData {
                    Name = nameGroup[0], Index = index.ToString(), Type = item.Type, Value = inputTeBox.Text
                };
                clientAsync.WriteAsync(new List <WriteData> {
                    data
                });
            }
        }
예제 #3
0
 private void listView_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.Key == Key.Delete)
     {
         List <SignalDisplay> deleteList = new List <SignalDisplay>();
         List <Address>       cancelList = new List <Address>();
         var items = listView.SelectedItems;
         foreach (var item in items)
         {
             SignalDisplay s = item as SignalDisplay;
             deleteList.Add(s);
         }
         foreach (var s in deleteList)
         {
             int index     = 0;
             var nameGroup = s.SignalName.Split('[');
             if (nameGroup.Length > 1)
             {
                 nameGroup[1] = nameGroup[1].Replace("]", "");
                 int.TryParse(nameGroup[1], out index);
             }
             signalList.Remove(s);
             cancelList.Add(new Address()
             {
                 Name = nameGroup[0], Index = index.ToString(), Type = s.Type
             });
         }
         while (cancelList.Count > 1000)
         {
             var send = cancelList.GetRange(0, 100);
             cancelList.RemoveRange(0, 100);
             clientAsync.CancelSubscribe(send);
         }
         clientAsync.CancelSubscribe(cancelList);
     }
 }
예제 #4
0
        private SignalDisplay find(SignalDisplay target)
        {
            string item = signalSearchTeBox.Text;

            if (item != null && item != "" && target != null)
            {
                var group = item.Split(new string[] { "*" }, StringSplitOptions.RemoveEmptyEntries);

                int position = 0;
                foreach (var s in group)
                {
                    position = target.SignalName.IndexOf(s, position);
                    if (position == -1)
                    {
                        return(null);
                    }
                }
                return(target);
            }
            else
            {
                return(target);
            }
        }