UCRobot.cs 5.9 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static JAKA.JKTYPE;

namespace JAKA
{
    public partial class UCRobot : UserControl
    {
        public UCRobot()
        {
            Control.CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();
            comboBox1.SelectedIndex = 0;
        }
        private JAKABean jakaBean;
        private JAKAServer server;
        public void Regidter(JAKABean jakabean, JAKAServer jAKAServer)
        {
            this.jakaBean = jakabean;
            groupBox1.Text = $"[{jakabean.IP}]";
            server = jAKAServer;
            jakabean.RegisterUpdataEvent(Update);
        }
        public void Update(RobotData robotData)
        {
            if (!this.IsHandleCreated)
                return;
            this.Invoke((Action)(() =>
            {
                lblestop.BackColor = robotData.RobotStatus.emergency_stop == 0 ? Color.YellowGreen : Color.Red;
                lblpoweredon.BackColor = robotData.RobotStatus.powered_on == 0 ? Color.Red : Color.YellowGreen;
                lblservoenabled.BackColor = robotData.RobotStatus.enabled == 0 ? Color.Red : Color.YellowGreen;
                lblinpos.BackColor = robotData.RobotStatus.inpos == 0 ? Color.Red : Color.YellowGreen;
                lblprotectivestop.BackColor = robotData.RobotStatus.protective_stop == 0 ? Color.YellowGreen : Color.Red;
                lblonsoftlimit.BackColor = robotData.RobotStatus.on_soft_limit == 0 ? Color.YellowGreen : Color.Red;
                lblsdkconnect.BackColor = robotData.RobotStatus.is_socket_connect == 0 ? Color.Red : Color.YellowGreen;
                lbldragstatus.BackColor = robotData.RobotStatus.drag_status == 0 ? Color.Red : Color.YellowGreen;
                lblrapidrate.Text = $"运动倍率:{robotData.RobotStatus.rapidrate.ToString("f3")}";
                lblerrorcode.Text = robotData.Errorinfo;
                lblresponse.Text = robotData.RecvMsg;
                if (robotData.ProgramState.Equals(ProgramState.PROGRAM_IDLE))
                {
                    lblProgramstate.BackColor = Color.Red;
                }
                else if (robotData.ProgramState.Equals(ProgramState.PROGRAM_PAUSED))
                {
                    lblProgramstate.BackColor = Color.Yellow;
                }
                else if (robotData.ProgramState.Equals(ProgramState.PROGRAM_RUNNING))
                {
                    lblProgramstate.BackColor = Color.YellowGreen;
                }
                lblCmd.Text = robotData.CurCmd;
                if (robotData.Online)
                {
                    groupBox1.Text = $"[{jakaBean.IP}][在线]";
                }
                else
                {
                    groupBox1.Text = $"[{jakaBean.IP}][离线]";
                }
            }));


        }

        private void btnPowerOn_Click(object sender, EventArgs e)
        {
           // Task.Factory.StartNew(() => { jakaBean.PowerOn(); });

        }

        private void btnPowerOff_Click(object sender, EventArgs e)
        {
            //Task.Factory.StartNew(() => { jakaBean.PowerOff(); });

        }

        private void btnEnable_Click(object sender, EventArgs e)
        {
            //Task.Factory.StartNew(() => { jakaBean.EnableRobot(); });

        }

        private void btnDisable_Click(object sender, EventArgs e)
        {
          //  Task.Factory.StartNew(() => { jakaBean.DisableRobot(); });

        }

        private void btnStart_Click(object sender, EventArgs e)
        {
          //  Task.Factory.StartNew(() => { jakaBean.Run(); });
        }

        private void btnStop_Click(object sender, EventArgs e)
        {
           // Task.Factory.StartNew(() => { jakaBean.Abort(); });

        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            Task.Factory.StartNew(() =>
            {
                if (groupBox1.Text.Contains("在线"))
                {
                    string cmd = comboBox1.SelectedItem.ToString();//textBox1.Text;
                    server.SendCmd(jakaBean.RemoteEndPoint, cmd);
                }
            });


        }

        private void btnRun_Click(object sender, EventArgs e)
        {
            //Task.Factory.StartNew(() =>
            //{
            //    if (jakaBean.PowerOn())
            //        jakaBean.EnableRobot();
            //});
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                if (jakaBean.GetDigitalOutput(IOType.IO_CABINET, 0, out bool insafe))
                {
                    lblSafe.BackColor = insafe ? Color.YellowGreen : Color.Red;
                }
            }
            catch
            {

            }
        }

        private void UCRobot_Load(object sender, EventArgs e)
        {
            timer1.Start();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            jakaBean.ClearError();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Task.Factory.StartNew(() =>
            {
                if (groupBox1.Text.Contains("在线"))
                {
                    server.SendCmd(jakaBean.RemoteEndPoint, "home");
                }
            });
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Task.Factory.StartNew(() =>
            {
                if (groupBox1.Text.Contains("在线"))
                {
                    server.SendCmd(jakaBean.RemoteEndPoint, "standby");
                }
            });
        }

        private void button4_Click(object sender, EventArgs e)
        {
            //Task.Factory.StartNew(() =>
            //{
            //    if (jakaBean.DisableRobot())
            //        jakaBean.PowerOff();

            //});
        }
    }
}