public static void GetImage()
 {
     Camera.GrabImageVoid();
     viewController1.addIconicVar(GlobalVars.Camera.CurrentImage);
     viewController1.repaint();
 }
        private async void run()
        {
            bool m3000 = false, m3001 = false, m3002 = false, m3003 = false, m3004 = false, m3005 = false, m3006 = false;

            while (true)
            {
                try
                {
                    #region 读取坐标
                    await Task.Run(() =>
                    {
                        GPos2 = (double)plc.ReadW("D100") / 1000;
                        GPos3 = (double)plc.ReadW("D102") / 200;
                        GPos4 = (double)plc.ReadW("D104") / 200;
                        GPos9 = (double)plc.ReadW("D106") / 10000 * 360;
                    });

                    #endregion
                    #region 读信息
                    bool[] M3000 = await Task.Run <bool[]>(() =>
                    {
                        return(plc.ReadMultiM("M3000", 16));
                    });

                    if (M3000 != null)
                    {
                        if (m3000 != M3000[0])
                        {
                            if (M3000[0])
                            {
                                PLCModeSate = "S0初始化流程";
                            }
                            m3000 = M3000[0];
                        }
                        if (m3001 != M3000[1])
                        {
                            if (M3000[1])
                            {
                                PLCModeSate = "S10模式选择流程";
                            }
                            m3001 = M3000[1];
                        }
                        if (m3002 != M3000[2])
                        {
                            if (M3000[2])
                            {
                                PLCModeSate = "S11运行流程";
                            }
                            m3002 = M3000[2];
                        }
                        if (m3003 != M3000[3])
                        {
                            if (M3000[3])
                            {
                                PLCModeSate = "S50调试流程";
                            }
                            m3003 = M3000[3];
                        }
                        if (m3004 != M3000[4])
                        {
                            if (M3000[4])
                            {
                                PLCModeSate = "S99急停流程";
                            }
                            m3004 = M3000[4];
                        }
                        if (m3005 != M3000[5])
                        {
                            if (M3000[5])
                            {
                                addMessage("暂停");
                            }
                            m3005 = M3000[5];
                        }
                        if (m3006 != M3000[6])
                        {
                            if (M3000[6])
                            {
                                addMessage("等待按“复位”按钮");
                            }
                            m3006 = M3000[6];
                        }
                    }

                    #endregion
                    #region 运行
                    bool m401 = await Task.Run <bool>(() => {
                        return(plc.ReadM("M401"));
                    });

                    if (m401)
                    {
                        addMessage("触发拍照");
                        await Task.Run(() => {
                            plc.SetM("M401", false);
                            plc.SetM("M402", true);
                            cam1.SetRotaryEncoderDirection(true);
                            cam1.GrabImageVoid(0, false, false);
                        });

                        CameraIamge = cam1.CurrentImage;
                        addMessage("拍照完成");
                    }

                    bool m431 = await Task.Run <bool>(() => {
                        return(plc.ReadM("M431"));
                    });

                    if (m431)
                    {
                        addMessage("触发拍照2");
                        await Task.Run(() => {
                            plc.SetM("M431", false);
                            plc.SetM("M432", true);
                            cam1.SetRotaryEncoderDirection(false);
                            cam1.GrabImageVoid(0, false, false);
                        });

                        CameraIamge2 = cam1.CurrentImage;
                        addMessage("拍照完成2");
                    }
                    #endregion
                }
                catch
                {
                }
                #region 更新状态
                StatusCamera = cam1.Connected;
                #endregion
                await Task.Delay(100);
            }
        }