Exemple #1
0
        public void WriteAsyn(MvLoggerEventArgs ea)
        {
            this.msgQueue.Enqueue(ea);

            lock (this)
            {
                if (this.Task != null)
                {
                    if (this.Task.IsEnd())
                    {
                        using (var obj = this.Task)
                            obj.Cancel();
                    }
                    else
                    {
                        return;
                    }
                }

                this.Task = MvCancelTask.RunLoop(() =>
                {
                    MvSpinWait.SpinUntil(() => this.msgQueue.Count > 0);

                    MvLoggerEventArgs eaLog;
                    if (!this.msgQueue.TryDequeue(out eaLog))
                    {
                        return(true);
                    }
                    this.WriteSyn(eaLog);
                    return(true);
                });
            }
        }
Exemple #2
0
        private void btnStartPns0102_Click(object sender, EventArgs e)
        {
            if (this.task != null)
            {
                return;
            }

            this.task = MvCancelTask.RunLoop(() =>
            {
                //大迴圈, 來回一次
                try
                {
                    robotHandler.SgsVerifyStartPns0102(ri =>
                    {
                        this.Invoke(new Action(() =>
                        {
                            tbPoseX.Text = ri.x + "";
                            tbPoseY.Text = ri.y + "";
                            tbPoseZ.Text = ri.z + "";
                            tbPoseW.Text = ri.w + "";
                            tbPoseP.Text = ri.p + "";
                            tbPoseR.Text = ri.r + "";
                        }));
                    });
                    return(true);
                }
                catch (Exception ex)
                {
                    this.LogWrite(ex.Message);
                    return(false);
                }
            }, 1000);
        }
        public int StartAsyn()
        {
            this.m_keepConnection = MvCancelTask.RunLoop(() =>
            {
                this.Write(MacHalPlcEnumVariable.PC_TO_PLC_CheckClock, false);
                if (!SpinWait.SpinUntil(() => !this.Read <bool>(MacHalPlcEnumVariable.PC_TO_PLC_CheckClock_Reply), 2500))
                {
                    this.LockAssign(ref this.m_isConnected, false);
                    return(false);
                }
                this.LockAssign(ref this.m_isConnected, true);

                this.Write(MacHalPlcEnumVariable.PC_TO_PLC_CheckClock, true);
                if (!SpinWait.SpinUntil(() => this.Read <bool>(MacHalPlcEnumVariable.PC_TO_PLC_CheckClock_Reply), 2500))
                {
                    this.LockAssign(ref this.m_isConnected, false);
                    //throw new MvException("PLC connection T1 timeout");
                    return(false);
                }
                else
                {
                    this.LockAssign(ref this.m_isConnected, true);
                }

                return(true);
            }, 1000);



            return(0);
        }
Exemple #4
0
 void TaskClose()
 {
     if (this.task != null)
     {
         using (var obj = this.task)
             obj.Cancel();
         this.task = null;
     }
 }
        public void Close()
        {
            if (this.PlcLdd != null)
            {
                using (var obj = this.PlcLdd)
                {
                    obj.NLPLC_ClosePort();
                    this.PlcLdd = null;
                }
            }

            if (this.m_keepConnection != null)
            {
                using (var obj = this.m_keepConnection)
                {
                    obj.Cancel();
                    SpinWait.SpinUntil(() => obj.IsEnd(), 1000);
                }
                this.m_keepConnection = null;
            }
        }
Exemple #6
0
        private void Button4_Click(object sender, EventArgs e)
        {
            if (this.task != null)
            {
                return;
            }
            if (this.task != null && !this.task.IsEnd())
            {
                return;
            }

            this.task = MvCancelTask.RunLoop(() =>
            {
                //大迴圈, 來回一次
                try
                {
                    robotHandler.SgsVerifyStartPns0102(ri =>
                    {
                        this.Invoke(new Action(() =>
                        {
                            X_VALUE.Text  = ri.x + "";
                            Y_VALUE.Text  = ri.y + "";
                            Z_VALUE.Text  = ri.z + "";
                            W_VALUE.Text  = ri.w + "";
                            P_VALUE.Text  = ri.p + "";
                            R_VALUE.Text  = ri.r + "";
                            E1_VALUE.Text = ri.e1 + "";
                        }));
                    });
                    return(true);
                }
                catch (Exception ex)
                {
                    this.LogWrite(ex.Message);
                    return(false);
                }
            }, 1000);
        }
Exemple #7
0
        public int StartAsyn()
        {
            this.PlcLdd = new MvOmronPlcLdd();
            this.PlcLdd.NLPLC_Initial("192.168.0.200", 2);


            this.m_keepConnection = MvCancelTask.RunLoop(() =>
            {
                this.Write(MvEnumPlcVariable.PC_TO_PLC_CheckClock, false);
                if (!SpinWait.SpinUntil(() => !this.Read <bool>(MvEnumPlcVariable.PC_TO_PLC_CheckClock_Reply), 2500))
                {
                    this.LockAssign(ref this.m_isConnected, false);
                    return(false);
                }
                this.LockAssign(ref this.m_isConnected, true);


                this.Write(MvEnumPlcVariable.PC_TO_PLC_CheckClock, true);
                if (!SpinWait.SpinUntil(() => this.Read <bool>(MvEnumPlcVariable.PC_TO_PLC_CheckClock_Reply), 2500))
                {
                    this.LockAssign(ref this.m_isConnected, false);
                    //throw new MvException("PLC connection T1 timeout");
                    return(false);
                }
                else
                {
                    this.LockAssign(ref this.m_isConnected, true);
                }


                return(true);
            }, 500);



            return(0);
        }