예제 #1
0
 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();
             }
         }
     }
 }
예제 #2
0
 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();
     }
 }
예제 #3
0
        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);
                            }
                        }
                    }
                }
            }
        }