c#用interface 通信发那科机器人读取发那科机器人PR 和R值,读取Di Do;实时读取机器人世界坐标值

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 System.Threading;


namespace fanuc
{
    public partial class Form1 : Form
    {

       
        public Form1()
        {
            InitializeComponent();
           CheckForIllegalCrossThreadCalls = false;//线程间操作无效: 从不是创建控件的线程访问它
      
         
        }
       
        static FRRJIf.Core mobjCore;//
        static FRRJIf.DataTable mobjDataTable;//数据表
        static FRRJIf.DataTable mobjDataTable2;
        static FRRJIf.DataCurPos mobjCurPos;
        static FRRJIf.DataCurPos mobjCurPosUF;
        static FRRJIf.DataCurPos mobjCurPos2;
        static FRRJIf.DataTask mobjTask;
        static FRRJIf.DataTask mobjTaskIgnoreMacro;
        static FRRJIf.DataTask mobjTaskIgnoreKarel;
        static FRRJIf.DataTask mobjTaskIgnoreMacroKarel;
        static FRRJIf.DataPosReg mobjPosReg;//PR寄存器
        static FRRJIf.DataPosReg mobjPosReg2;
        static FRRJIf.DataPosRegXyzwpr mobjPosRegXyzwpr;
        static FRRJIf.DataPosRegMG mobjPosRegMG;
        static FRRJIf.DataSysVar mobjSysVarInt;
        static FRRJIf.DataSysVar mobjSysVarInt2;
        static FRRJIf.DataSysVar mobjSysVarReal;
        static FRRJIf.DataSysVar mobjSysVarReal2;
        static FRRJIf.DataSysVar mobjSysVarString;
        static FRRJIf.DataSysVarPos mobjSysVarPos;
        static FRRJIf.DataSysVar[] mobjSysVarIntArray;
        static FRRJIf.DataNumReg mobjNumReg;
        static FRRJIf.DataNumReg mobjDataNumReg_INT;
        static FRRJIf.DataNumReg mobjNumReg2;
        static FRRJIf.DataNumReg mobjNumReg3;
        static FRRJIf.DataAlarm mobjAlarm;
        static FRRJIf.DataAlarm mobjAlarmCurrent;
        static FRRJIf.DataSysVar mobjVarString;
        static FRRJIf.DataString mobjStrReg;
        static FRRJIf.DataString mobjStrRegComment;
       

        Array xyzwpr = new float[6];
        Array config = new short[7];
        Array joint = new float[9];
        short intUF = 0;
        short intUT = 0;
        short intValidC = 0;
        short intValidJ = 0;

        object g;
        int F;
        int h;
        float X = 0;
        float Y = 0;
        float Z = 0;
        float W = 0;
        float P = 0;
        float R = 0;
        float E1 = 0;
        float E2 = 0;
        float E3 = 0;
        short C1 = 0;
        short C2 = 0;
        short C3 = 0;
        short C4 = 0;
        short C5 = 0;
        short C6 = 0;
        short C7 = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
            textBox6.Text = "";
            textBox7.Text = "";
            FRRJIf.Core mobjCore = new FRRJIf.Core();
            FRRJIf.DataTable mobjDataTable = mobjCore.DataTable;
            {
                //定义PR
                mobjPosReg = mobjDataTable.AddPosReg(FRRJIf.FRIF_DATA_TYPE.POSREG, 1, 1, 18);
            }
           
         

            //连接
            bool res = mobjCore.Connect("10.8.6.28");
            if (res == true)
            {
                label9.Text = "连接成功";
            }
            else
            {
                label9.Text = "连接失败";
            }
            //使用前先刷新
            bool blnDT = mobjDataTable.Refresh();
           
         

            if (blnDT == true)
            {
                if (textBox1.Text != "")
                {
                    int t = Convert.ToInt32(textBox1.Text);
                    bool res_r = mobjPosReg.GetValue(t, ref xyzwpr, ref config, ref joint, ref intUF, ref intUT, ref intValidC, ref intValidJ);


                    textBox2.AppendText(((float)xyzwpr.GetValue(0)).ToString("0.000"));
                    textBox3.AppendText(((float)xyzwpr.GetValue(1)).ToString("0.000"));
                    textBox4.AppendText(((float)xyzwpr.GetValue(2)).ToString("0.000"));
                    textBox5.AppendText(((float)xyzwpr.GetValue(3)).ToString("0.000"));
                    textBox6.AppendText(((float)xyzwpr.GetValue(4)).ToString("0.000"));
                    textBox7.AppendText(((float)xyzwpr.GetValue(5)).ToString("0.000"));
                }
                else
                {
                    MessageBox.Show("数值不能为空");
                }


                //textBox2.AppendText(xyzwpr.GetValue(0).ToString());
               // textBox3.AppendText(xyzwpr.GetValue(1).ToString());
               // textBox4.AppendText(xyzwpr.GetValue(2).ToString());
              //  textBox5.AppendText(xyzwpr.GetValue(3).ToString());
               // textBox6.AppendText(xyzwpr.GetValue(4).ToString());
               // textBox7.AppendText(xyzwpr.GetValue(5).ToString());
            }
            mobjCore.Disconnect();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            
            FRRJIf.Core mobjCore = new FRRJIf.Core();
            FRRJIf.DataTable mobjDataTable = mobjCore.DataTable;

            {

                //定义PR
                mobjPosReg = mobjDataTable.AddPosReg(FRRJIf.FRIF_DATA_TYPE.POSREG, 1, 1, 18);
            }
            bool res = mobjCore.Connect("10.8.6.28");
            if (res == true)
            {
                label9.Text = "连接成功";
            }
            else
            {
                label9.Text = "连接失败";//     
            }
            //使用前先刷新
            bool blnDT = mobjDataTable.Refresh();
            xyzwpr.SetValue(Convert.ToSingle(textBox2.Text.Trim()), 0);
            xyzwpr.SetValue(Convert.ToSingle(textBox3.Text.Trim()), 1);
            xyzwpr.SetValue(Convert.ToSingle(textBox4.Text.Trim()), 2);
            xyzwpr.SetValue(Convert.ToSingle(textBox5.Text.Trim()), 3);
            xyzwpr.SetValue(Convert.ToSingle(textBox6.Text.Trim()), 4);
            xyzwpr.SetValue(Convert.ToSingle(textBox7.Text.Trim()), 5);
            //写PR
            int t = Convert.ToInt32(textBox8.Text);
            bool res_w = mobjPosReg.SetValueXyzwpr(t, ref xyzwpr, ref config, -1, -1);
            if (res_w == true)
            {
                label9.Text = "写入成功";
            }
            else
            {
                label9.Text = "写入失败";

            }
            mobjCore.Disconnect();
        }


        private void t()
        {

            textBox9.Text = "";
            textBox10.Text = "";
            textBox11.Text = "";
            textBox12.Text = "";
            textBox13.Text = "";
            textBox14.Text = "";

            //获取机器人世界坐标值
            FRRJIf.Core mobjCore = new FRRJIf.Core();
            FRRJIf.DataTable mobjDataTable = mobjCore.DataTable;
            {
                mobjCurPosUF = mobjDataTable.AddCurPosUF(FRRJIf.FRIF_DATA_TYPE.CURPOS, 1, 15);
            }
            bool res = mobjCore.Connect("10.8.6.28" );
            if (res == true)
            {
                label9.Text = "连接成功";
            }
            else
            {
                label9.Text = "连接失败";//     
            }
            //使用前先刷新

            bool blnDT = mobjDataTable.Refresh();
         
            bool res_r = mobjCurPosUF.GetValueXyzwpr(ref X, ref Y, ref Z, ref W, ref P, ref R, ref E1, ref E2, ref E3, ref C1, ref C2, ref C3, ref C4, ref C5, ref C6, ref C7, ref intUF, ref intUT, ref intValidC);
            if (res_r == true)
            {

                textBox9.AppendText(X.ToString("0.000"));//X.ToString("0.00")数据保留小数点后几位
                textBox10.AppendText(Y.ToString("0.000"));
                textBox11.AppendText(Z.ToString("0.000"));
                textBox12.AppendText(W.ToString("0.000"));
                textBox13.AppendText(P.ToString("0.000"));
                textBox14.AppendText(R.ToString("0.000"));
            }
            mobjCore.Disconnect();
          

        }
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 300;
            timer1.Start();
        }
      
        private void button3_Click(object sender, EventArgs e)
        {


            FRRJIf.Core mobjCore = new FRRJIf.Core();

            FRRJIf.DataTable mobjDataTable = mobjCore.DataTable;
            {

                mobjDataNumReg_INT = mobjDataTable.AddNumReg(FRRJIf.FRIF_DATA_TYPE.NUMREG_INT, 1,200);

            }
            bool res = mobjCore.Connect("10.8.6.28");
            if (res == true)
            {
                label9.Text = "连接成功";
            }
            else
            {
                label9.Text = "连接失败";//     
            }
            //使用前先刷新
            bool blnDT = mobjDataTable.Refresh();
            F = Convert.ToInt32(textBox15.Text);
            bool r = mobjDataNumReg_INT.GetValue(F,ref g);
            textBox16.Text = g.ToString();
          
        }
        //读取do值
        private void button4_Click(object sender, EventArgs e)
        {
            //读取SDI
            FRRJIf.Core mobjCore = new FRRJIf.Core();
            
            Array intSDO= new short[1] { 1};
            int DO = Convert.ToInt16(textBox17.Text);
            
            bool blnSDO = mobjCore.ReadSDO(DO, ref intSDO, 1);

        }


        //一直更新
        private void timer1_Tick(object sender, EventArgs e)
        {
            t();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button6_Click(object sender, EventArgs e)
        {

            FRRJIf.Core mobjCore = new FRRJIf.Core();

            FRRJIf.DataTable mobjDataTable = mobjCore.DataTable;
            {

                mobjDataNumReg_INT = mobjDataTable.AddNumReg(FRRJIf.FRIF_DATA_TYPE.NUMREG_INT, 1, 200);

            }
            bool res = mobjCore.Connect("10.8.6.28");
            if (res == true)
            {
                label9.Text = "连接成功";
            }
            else
            {
                label9.Text = "连接失败";//     
            }
            //使用前先刷新
            bool blnDT = mobjDataTable.Refresh();
            F = Convert.ToInt32(textBox15.Text);
            h= Convert.ToInt32(textBox16.Text);
            bool r = mobjDataNumReg_INT.SetValuesInt(F, ref h,1);
     

        }

        /*
        public void y()
        {
            FRRJIf.Core mobjCore = new FRRJIf.Core();
            FRRJIf.DataTable mobjDataTable = mobjCore.DataTable;

            {
                mobjAlarm = mobjDataTable.AddAlarm(FRRJIf.FRIF_DATA_TYPE.ALARM_LIST, 5, 0);
                mobjAlarmCurrent = mobjDataTable.AddAlarm(FRRJIf.FRIF_DATA_TYPE.ALARM_CURRENT, 1, 0);
                mobjCurPos = mobjDataTable.AddCurPos(FRRJIf.FRIF_DATA_TYPE.CURPOS, 1);
                mobjCurPosUF = mobjDataTable.AddCurPosUF(FRRJIf.FRIF_DATA_TYPE.CURPOS, 1, 15);
                mobjCurPos2 = mobjDataTable.AddCurPos(FRRJIf.FRIF_DATA_TYPE.CURPOS, 2);
                mobjTask = mobjDataTable.AddTask(FRRJIf.FRIF_DATA_TYPE.TASK, 1);
                mobjTaskIgnoreMacro = mobjDataTable.AddTask(FRRJIf.FRIF_DATA_TYPE.TASK_IGNORE_MACRO, 1);
                mobjTaskIgnoreKarel = mobjDataTable.AddTask(FRRJIf.FRIF_DATA_TYPE.TASK_IGNORE_KAREL, 1);
                mobjTaskIgnoreMacroKarel = mobjDataTable.AddTask(FRRJIf.FRIF_DATA_TYPE.TASK_IGNORE_MACRO_KAREL, 1);

                //定义PR
                mobjPosReg = mobjDataTable.AddPosReg(FRRJIf.FRIF_DATA_TYPE.POSREG, 1, 1, 15);

                mobjPosReg2 = mobjDataTable.AddPosReg(FRRJIf.FRIF_DATA_TYPE.POSREG, 2, 1, 4);
                mobjSysVarInt = mobjDataTable.AddSysVar(FRRJIf.FRIF_DATA_TYPE.SYSVAR_INT, "$FAST_CLOCK");
                mobjSysVarInt2 = mobjDataTable.AddSysVar(FRRJIf.FRIF_DATA_TYPE.SYSVAR_INT, "$TIMER[10].$TIMER_VAL");
                mobjSysVarReal = mobjDataTable.AddSysVar(FRRJIf.FRIF_DATA_TYPE.SYSVAR_REAL, "$MOR_GRP[1].$CURRENT_ANG[1]");
                mobjSysVarReal2 = mobjDataTable.AddSysVar(FRRJIf.FRIF_DATA_TYPE.SYSVAR_REAL, "$DUTY_TEMP");
                mobjSysVarString = mobjDataTable.AddSysVar(FRRJIf.FRIF_DATA_TYPE.SYSVAR_STRING, "$TIMER[10].$COMMENT");
                mobjSysVarPos = mobjDataTable.AddSysVarPos(FRRJIf.FRIF_DATA_TYPE.SYSVAR_POS, "$MNUTOOL[1,1]");
                mobjVarString = mobjDataTable.AddSysVar(FRRJIf.FRIF_DATA_TYPE.SYSVAR_STRING, "$[HTTPKCL]CMDS[1]");
                mobjNumReg = mobjDataTable.AddNumReg(FRRJIf.FRIF_DATA_TYPE.NUMREG_INT, 1, 5);
                mobjNumReg2 = mobjDataTable.AddNumReg(FRRJIf.FRIF_DATA_TYPE.NUMREG_REAL, 6, 10);
                mobjPosRegXyzwpr = mobjDataTable.AddPosRegXyzwpr(FRRJIf.FRIF_DATA_TYPE.POSREG_XYZWPR, 1, 1, 10);
                mobjPosRegMG = mobjDataTable.AddPosRegMG(FRRJIf.FRIF_DATA_TYPE.POSREGMG, "C,J6", 1, 10);
                mobjStrReg = mobjDataTable.AddString(FRRJIf.FRIF_DATA_TYPE.STRREG, 1, 3);
                mobjStrRegComment = mobjDataTable.AddString(FRRJIf.FRIF_DATA_TYPE.STRREG_COMMENT, 1, 3);
            }

        }
       */
    }
    
}

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值