private void Form1_Load(object sender, EventArgs e)
        {
            cap = new Capture(0);
            Application.Idle += new EventHandler(Application_Idle);
            int ret = NexECM.NEC_LoadRtxApp("C:\\NEXCOBOT\\NexEcmRtxRtdllRunTime.rtss");

            if (ret != 0)
            {
                MessageBox.Show("NEC_LoadRtxApp failed" + ret.ToString()); return;
            }
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Timer1.Enabled = false;

            if (btn_StartNetwork.Text == "Stop Network")
            {
                NexECM.NEC_StopNetwork(MASTER_ID, 5000);
            }
            NexECM.NEC_StopDriver();

            /*if (sample.IsAlive)
             * {
             *   sample.Abort();
             * }*/
        }
        private void btn_Exit_Click(object sender, EventArgs e)
        {
            mysample.Abort();

            Timer1.Enabled = false;

            //sample

            if (btn_StartNetwork.Text == "Stop Network")
            {
                NexECM.NEC_StopNetwork(MASTER_ID, 5000);
            }

            NexECM.NEC_StopDriver();
            this.Close();
        }
        private void btn_startNetwork_Click(object sender, EventArgs e)
        {
            int ret = 0;

            if ((tb_EniPath.Text == null) || (tb_EniPath.Text == ""))
            {
                MessageBox.Show("Please load ENI first");
                return;
            }

            if (btn_StartNetwork.BackColor != Color.YellowGreen)
            {
                ret = NexECM.NEC_StartDriver();//初始化函式庫
                if (ret != 0)
                {
                    MessageBox.Show("NEC_StartDriver failed" + ret.ToString()); return;
                }

                ret = NexECM.NEC_ResetEcMaster(MASTER_ID);//重置EC-Master
                if (ret != 0)
                {
                    MessageBox.Show("NEC_ResetEcMaster failed" + ret.ToString()); return;
                }

                ret = NexECM.NEC_SetParameter(MASTER_ID, 0, 1000);//設定EC-Master參數
                if (ret != 0)
                {
                    MessageBox.Show("NEC_SetParameter failed" + ret.ToString()); return;
                }

                ret = NexCoeMotion.NEC_CoE402Reset();//重置函式庫
                if (ret != 0)
                {
                    MessageBox.Show("NexCoeMotion failed" + ret.ToString()); return;
                }

                ret = NexECM.NEC_StartNetworkEx(MASTER_ID, mEniPath, 1, 5000);//啟動EC-Master
                if (ret != 0)
                {
                    MessageBox.Show("NEC_StartNetworkEx failed" + ret.ToString()); return;
                }

                ret = NexECM.NEC_GetSlaveCount(MASTER_ID, ref mSlaveCnt);//讀取線上EC-Slaves數量(2)
                if (ret != 0)
                {
                    MessageBox.Show("NEC_GetSlaveCount failed" + ret.ToString()); return;
                }


                if (TOTAL_AXIS != mSlaveCnt)
                {
                    MessageBox.Show("Please check ENI file and TOTAL_AXIS value!!");
                    return;
                }

                for (ushort i = 0; i < mSlaveCnt; i++)
                {
                    ret = NexCoeMotion.NEC_CoE402GetAxisId(MASTER_ID, i, ref mAxisId[i]);//讀取驅動器ID
                    if (ret != 0)
                    {
                        MessageBox.Show("NEC_CoE402GetAxisId failed" + ret.ToString()); return;
                    }

                    ret = NexCoeMotion.NEC_CoE402UpdatePdoMapping(mAxisId[i]);//更新PDO設定
                    if (ret != 0)
                    {
                        MessageBox.Show("NEC_CoE402UpdatePdoMapping failed" + ret.ToString()); return;
                    }

                    ret = NexCoeMotion.NEC_CoE402FaultReset(mAxisId[i], 5000);//清除重製驅動器錯誤
                    if (ret != 0)
                    {
                        MessageBox.Show("NEC_CoE402FaultReset failed" + ret.ToString()); return;
                    }
                }

                btn_StartNetwork.BackColor = Color.YellowGreen;
                Timer1.Enabled             = true;  //?
                btn_StartNetwork.Text      = "Stop Network";
                btn_Browse.Enabled         = false; //?
            }
            else
            {
                Timer1.Enabled = false;//?

                for (int i = 0; i < mSlaveCnt; i++)
                {
                    ret = NexCoeMotion.NEC_CoE402ServoOn(mAxisId[i], 0);//設定驅動器消磁(disable)
                    if (ret != 0)
                    {
                        MessageBox.Show("NEC_CoE402ServoOn diaable failed" + ret.ToString()); return;
                    }
                }

                btn_ServoOn_0.Text = "Servo on";
                btn_Move_0.Text    = "Move";

                btn_ServoOn_1.Text = "Servo on";
                btn_Move_1.Text    = "Move";

                ret = NexECM.NEC_StopNetwork(MASTER_ID, 5000);
                if (ret != 0)
                {
                    MessageBox.Show("NEC_StopNetwork failed" + ret.ToString()); return;
                }

                ret = NexECM.NEC_StopDriver();
                if (ret != 0)
                {
                    MessageBox.Show("NEC_StopDriver failed" + ret.ToString()); return;
                }

                btn_StartNetwork.Text      = "Start Network";
                btn_StartNetwork.BackColor = Color.WhiteSmoke;
                btn_Browse.Enabled         = true;
            }
        }