void AutoFinishTask() { for (int i = 0; i < FinishstatusGroup.GetGroupItemLength(); i++) { int tempvalue = int.Parse(FinishstatusGroup.ReadD(i).ToString()); if (tempvalue >= 1) { writeLog.Write("从电控出口号:" + (i + 1) + "获取到任务号:" + tempvalue + "完成信号 "); try { TaskService.UpdateUnionFinishedStatus(tempvalue); } catch (Exception ex) { writeLog.Write("数据库更新合流状态位失败: " + ex.Message); updateListBox("数据库更新合流状态位失败: " + ex.Message); return; } if (tempvalue != 0) { updateListBox("任务:" + tempvalue + "数据库状态已置完成"); writeLog.Write("合流任务号:" + tempvalue + "数据库状态已置完成"); } FinishstatusGroup.Write(0, i); try { writeLock.AcquireWriterLock(10000); } catch (Exception ex) { if (ex != null && ex.Message != null) { writeLog.Write("错误信息:" + ex.Message); } } finally { writeLock.ReleaseWriterLock(); } } } }
public void Disconnect() { if (pIOPCServer != null) { Marshal.ReleaseComObject(pIOPCServer); pIOPCServer = null; } if (taskgroup1 != null) { taskgroup1.Release(); } if (statusGroup1 != null) { statusGroup1.Release(); } if (FinishstatusGroup != null) { FinishstatusGroup.Release(); } if (statusGroup3 != null) { statusGroup3.Release(); } if (statusGroup4 != null) { statusGroup4.Release(); } if (statusGroup5 != null) { statusGroup5.Release(); } if (SendTaskStatesGroup != null) { SendTaskStatesGroup.Release(); } }
public void OnDataChange(int group, int[] clientId, object[] values) { lock (ondataFlag) { if (group == 2) { } else if (group == 3) { for (int i = 0; i < clientId.Length; i++) { int tempvalue = int.Parse((values[i].ToString())); if (tempvalue >= 1) { // if (getKey(clientId[i])!=-1) // { // int taskno = getKey(clientId[i]); writeLog.Write("从电控出口号:" + clientId[i] + "获取到任务号:" + tempvalue + "完成信号 "); try { TaskService.UpdateUnionFinishedStatus(tempvalue); } catch (Exception ex) { writeLog.Write("数据库更新合流状态位失败: " + ex.Message); updateListBox("数据库更新合流状态位失败: " + ex.Message); } if (tempvalue != 0) { updateListBox("任务:" + tempvalue + "数据库状态已置完成"); writeLog.Write("合流任务号:" + tempvalue + "数据库状态已置完成"); } FinishstatusGroup.Write(0, clientId[i] - 1); try { writeLock.AcquireWriterLock(10000); // removeKey(clientId[i]); removeKey(clientId[i], UnionList[0]); removeKey(clientId[i], UnionList[1]); removeKey(clientId[i], UnionList[2]); removeKey(clientId[i], UnionList[3]); //UnionList[mainbelt - 1].Add(new KeyValuePair<int, int>(export, int.Parse(datas[0].ToString()))); } catch (Exception ex) { if (ex != null && ex.Message != null) { writeLog.Write("错误信息:" + ex.Message); } } finally { writeLock.ReleaseWriterLock(); } //this.task_data.BeginInvoke(new Action(() => { initdata(); })); //} } } } else if (group == 4) { for (int i = 0; i < clientId.Length; i++) { //if (clientId[i] == 1) //{ if (values[i] != null && int.Parse(values[i].ToString()) != 0) { String temp = Convert.ToString(int.Parse(values[i].ToString()), 2); WriteErr(1, clientId[i], temp, 0); } //} } } else if (group == 5) { for (int i = 0; i < clientId.Length; i++) { //if (clientId[i] == 1) //{ if (values[i] != null && int.Parse(values[i].ToString()) != 0) { String temp = Convert.ToString(int.Parse(values[i].ToString()), 2); WriteErr(2, clientId[i], temp, 0); } //} } } else if (group == 6) { for (int i = 0; i < clientId.Length; i++) { String temp = Convert.ToString(int.Parse(values[i].ToString()), 2); alarms.WriteErrWithCheck(1, clientId[i], temp, 1); } } else if (group == 7)//监控标志位 { writeLog.Write("跳变信号产生"); for (int i = 0; i < clientId.Length; i++) { if (clientId[i] == 1)//一号主皮带 { writeLog.Write("一号主皮带任务跳变:" + int.Parse(values[i].ToString())); if (values[i] != null && int.Parse(values[i].ToString()) == 2)//接收 { int sortnum = int.Parse(taskgroup1.ReadD(0).ToString()); writeLog.Write("一号读取到任务号:" + sortnum); //if (UnionList[0].Count > 0) //{ //TaskService.UpdateUnionStatus(15, UnionList[0].ElementAt(UnionList[0].Count - 1).Value); try { TaskService.UpdateUnionState(15, sortnum); if ((TaskService.GetUnionState(sortnum) ?? 0) != 15) { Thread.Sleep(100); writeLog.Write("一号主皮带重新更新任务:" + sortnum + ""); TaskService.UpdateUnionState(15, sortnum); } if ((TaskService.GetUnionState(sortnum) ?? 0) != 15) { Thread.Sleep(100); writeLog.Write("一号主皮带重新更新任务:" + sortnum + ""); TaskService.UpdateUnionState(15, sortnum); } } catch (Exception ex) { try { writeLog.Write("一号主皮带更新任务:" + sortnum + "失败"); Thread.Sleep(100); TaskService.UpdateUnionState(15, sortnum); } catch (Exception ex2) { writeLog.Write("一号主皮带更新任务:" + sortnum + "失败"); } } updateListBox("一号主皮带任务:" + sortnum + "已接收"); writeLog.Write("一号主皮带任务:" + sortnum + "已接收"); //} sendTask(1); } } if (clientId[i] == 2)//二号主皮带 { writeLog.Write("二号主皮带任务跳变:" + int.Parse(values[i].ToString())); if (values[i] != null && int.Parse(values[i].ToString()) == 2)//接收 { int sortnum = int.Parse(taskgroup2.ReadD(0).ToString()); writeLog.Write("二号读取到任务号:" + sortnum); //if (UnionList[1].Count > 0) //{ //TaskService.UpdateUnionStatus(15, UnionList[0].ElementAt(UnionList[0].Count - 1).Value); try { TaskService.UpdateUnionState(15, sortnum); if ((TaskService.GetUnionState(sortnum) ?? 0) != 15) { Thread.Sleep(100); writeLog.Write("二号主皮带重新更新任务:" + sortnum + ""); TaskService.UpdateUnionState(15, sortnum); } if ((TaskService.GetUnionState(sortnum) ?? 0) != 15) { Thread.Sleep(100); writeLog.Write("二号主皮带重新更新任务:" + sortnum + ""); TaskService.UpdateUnionState(15, sortnum); } } catch (Exception ex) { try { writeLog.Write("二号主皮带更新任务:" + sortnum + "失败"); Thread.Sleep(100); TaskService.UpdateUnionState(15, sortnum); } catch (Exception ex2) { writeLog.Write("二号主皮带更新任务:" + sortnum + "失败"); } } updateListBox("二号主皮带任务:" + sortnum + "已接收"); writeLog.Write("二号主皮带任务:" + sortnum + "已接收"); //} sendTask(2); } } if (clientId[i] == 3)//三号主皮带 { writeLog.Write("三号主皮带任务跳变:" + int.Parse(values[i].ToString())); if (values[i] != null && int.Parse(values[i].ToString()) == 2)//接收 { int sortnum = int.Parse(taskgroup3.ReadD(0).ToString()); writeLog.Write("三号读取到任务号:" + sortnum); //if (UnionList[2].Count > 0) //{ //TaskService.UpdateUnionStatus(15, UnionList[0].ElementAt(UnionList[0].Count - 1).Value); try { TaskService.UpdateUnionState(15, sortnum); if ((TaskService.GetUnionState(sortnum) ?? 0) != 15) { Thread.Sleep(100); writeLog.Write("三号主皮带重新更新任务:" + sortnum + ""); TaskService.UpdateUnionState(15, sortnum); } if ((TaskService.GetUnionState(sortnum) ?? 0) != 15) { Thread.Sleep(100); writeLog.Write("三号主皮带重新更新任务:" + sortnum + ""); TaskService.UpdateUnionState(15, sortnum); } } catch (Exception ex) { try { writeLog.Write("三号主皮带更新任务:" + sortnum + "失败"); Thread.Sleep(100); TaskService.UpdateUnionState(15, sortnum); } catch (Exception ex2) { writeLog.Write("三号主皮带更新任务:" + sortnum + "失败"); } } updateListBox("三号主皮带任务:" + sortnum + "已接收"); writeLog.Write("三号主皮带任务:" + sortnum + "已接收"); //} sendTask(3); } } if (clientId[i] == 4)//四号主皮带 { writeLog.Write("四号主皮带任务跳变:" + int.Parse(values[i].ToString())); if (values[i] != null && int.Parse(values[i].ToString()) == 2)//接收 { int sortnum = int.Parse(taskgroup4.ReadD(0).ToString()); writeLog.Write("四号读取到任务号:" + sortnum); //if (UnionList[3].Count > 0) //{ //TaskService.UpdateUnionStatus(15, UnionList[0].ElementAt(UnionList[0].Count - 1).Value); try { TaskService.UpdateUnionState(15, sortnum); if ((TaskService.GetUnionState(sortnum) ?? 0) != 15) { Thread.Sleep(100); writeLog.Write("四号主皮带重新更新任务:" + sortnum + ""); TaskService.UpdateUnionState(15, sortnum); } if ((TaskService.GetUnionState(sortnum) ?? 0) != 15) { Thread.Sleep(100); writeLog.Write("四号主皮带重新更新任务:" + sortnum + ""); TaskService.UpdateUnionState(15, sortnum); } } catch (Exception ex) { try { writeLog.Write("四号主皮带更新任务:" + sortnum + "失败"); Thread.Sleep(100); TaskService.UpdateUnionState(15, sortnum); } catch (Exception ex2) { writeLog.Write("四号主皮带更新任务:" + sortnum + "失败"); } } updateListBox("四号主皮带任务:" + sortnum + "已接收"); writeLog.Write("四号主皮带任务:" + sortnum + "已接收"); //} sendTask(4); } } } } } }