/// <summary> /// Executes a specified void function for each GameObject in this GameObjectList. /// </summary> /// <param name="func">The function to execute.</param> public void ForEach(ListFunc func) { for (int i = children.Count - 1; i >= 0; --i) { func.Invoke(children[i]); } }
/// <summary> /// 被list报警调用 /// </summary> /// <param name="listView"></param> public static void AlarmListView(S7Client client, ListView listView, int dbSum, int dbLength, int dbStartElement, int dbStartBit) { int result = client.DBRead(dbSum, 0, dbLength, ReadBuffer);//dbx30 从0读取 length98 //调用报警文本 AlarmTxt(); //调用一次文本 boolFirst = true; //添加报警文本 for (int i = 0; i < listStr.Count; i++) { listFunc[i] = new ListFunc(1000 + i, DateTime.Now, listStr[i]); } //添加所有报警列表到list集合 for (int i = 0; i < listStr.Count; i++) { list.Add(listFunc[i]); } bool boolResult; #region 遍历报警 //遍历报警 for (int i = dbStartBit; i < listStr.Count + dbStartBit; i++) { if (i <= 7)// //1000-1015--08报警数据1 { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement, i); //如果不包含当前项,则添加 if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } //如果包含当前项则刷新 else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); //移除 listView.Items.Add(list[i - dbStartBit]); //再添加 list[i - dbStartBit].Date = DateTime.Now; //刷新时间 } } else if (i > 7 && i <= 15) { //boolResult = S7.GetBitAt(ReadBuffer, 51, i - 8); ////如果不包含当前项,则添加 //if (boolResult && !listView.Items.Contains(list[i])) //{ // listView.Items.Add(list[i]); //} ////如果包含当前项则刷新 //else if (boolResult && listView.Items.Contains(list[i])) //{ // listView.Items.Remove(list[i]); // listView.Items.Add(list[i]); // list[i].Date = DateTime.Now;//刷新时间 //} boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 1, i - 8); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 15 && i <= 23)//1016-1031--08报警数据2 { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 2, i - 16); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 23 && i <= 31) { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 3, i - 24); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 31 && i <= 39)//1032-1047--08报警数据3 { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 4, i - 32); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 39 && i <= 47) { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 5, i - 40); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 47 && i <= 55)//1048-1063--08报警数据4 { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 6, i - 48); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 55 && i <= 63) { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 7, i - 56); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 63 && i <= 71)//1064-1079--08报警数据5 { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 8, i - 64); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 71 && i <= 79) { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 9, i - 72); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 79 && i <= 87)//1080-1095--08报警数据6 { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 10, i - 80); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 87 && i <= 95) { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 11, i - 88); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 95 && i <= 103)//1096-1111--08报警数据7 { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 12, i - 96); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 103 && i <= 111) { boolResult = S7.GetBitAt(ReadBuffer, dbStartElement + 13, i - 104); if (boolResult && !listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Add(list[i - dbStartBit]); } else if (boolResult && listView.Items.Contains(list[i - dbStartBit])) { listView.Items.Remove(list[i - dbStartBit]); listView.Items.Add(list[i - dbStartBit]); list[i - dbStartBit].Date = DateTime.Now; } } else if (i > 111 && i <= 119)//1112-1127--12报警数据1 { } } #endregion }