Beispiel #1
0
 private void btnAGVRun_Click_1(object sender, EventArgs e)
 {
     if (btnAGVRun.Text == "开")
     {
         btnAGVRun.Text = "停";
         for (int j = 0; j <= Config.i; j++)
         {
             Config.AGVStar1[j] = 1;
             AGVClass.AGVLabelRun(Config.AGVNum1[j]);
         }
         for (int j = 4000; j > 0; j--) //*使有足够时间去通知所有阻塞线程*/
         {
             Config.autoEvent.Set();    //通知阻塞的线程继续执行
         }
     }
     else
     {
         btnAGVRun.Text = "开";
         for (int j = 0; j <= Config.i; j++)
         {
             AGVClass.AGVLabelStop(Config.AGVNum1[j]); /*j 表示Config.AGVNum1第j个的内容*/ //暂停所有AGV线程
             Config.AGVStar1[j] = 0;                                                /////停止移动AGV
         }
     }
 }
Beispiel #2
0
        private void BtnADD_Click(object sender, EventArgs e)
        {
            Config.i++;
            Config.Equal = "false";
            try
            {
                for (int j = 0; j < Config.i; j++)
                {
                    if (Config.AGVNum1[j] == int.Parse(ComAGVNum.Text)) ///如果输入的AGV已经存在,那么就把当前的目的地值赋给它
                    {
                        Config.Equal      = "true";
                        Config.AGVTar1[j] = (int.Parse(ComAGVTar.Text));
                        Config.i--;
                    }
                }
                if (Config.Equal == "false")
                {
                    Config.AGVNum1.Add(int.Parse(ComAGVNum.Text));
                    Config.AGVPath1.Add(int.Parse(ComAGVPath.Text));
                    Config.AGVTar1.Add(int.Parse(ComAGVTar.Text));
                }
            }
            catch
            {
                for (int j = 0; j < Config.i; j++)
                {
                    if (Config.AGVNum1[j] == 0)
                    {
                        Config.Equal = "true";
                        Config.i--;
                    }
                }
                if (Config.Equal == "false")
                {
                    Config.AGVNum1.Add(0);
                    Config.AGVPath1.Add(11);
                    Config.AGVTar1.Add(1);
                }
            }
            Config.AGVLoct1.Add(1);    ///////路径上的位置
            Config.AGVStar1.Add(1);
            if (Config.Equal == "false")
            {
                AGVClass.AGVThread(Config.i, Config.AGVLabel[Config.AGVNum1[Config.i]]); //创建线程
            }
            AGVClass.AGVLabelStop(Config.AGVNum1[Config.i]);                             //阻塞线程
            btnAGVRun.Text = "开";


            if (Config.AGVLabel[Config.i] != null)    ///////使增加的AGV可视
            {
                if (Config.AGVStar1[Config.i] == 1)
                {
                    AGVClass.MoveAGV(Config.i, Config.AGVPath1[Config.i]);

                    Config.AGVLabel[Config.AGVNum1[Config.i]].Visible = true;
                }
            }
        }