Пример #1
0
        public static void Main(string[] args)
        {
            int device_id = HRobot.open_connection("127.0.0.1", 1, callback);

            if (device_id >= 0)
            {
                Console.WriteLine("connect successful.");
                StringBuilder v = new StringBuilder(100);
                SDKHrobot.HRobot.get_hrsdk_version(v);
                Console.WriteLine("hrsdk_version:" + v);

                int level = SDKHrobot.HRobot.get_connection_level(device_id);
                Console.WriteLine("level:" + level);

                SDKHrobot.HRobot.set_connection_level(device_id, 1);
                level = SDKHrobot.HRobot.get_connection_level(device_id);
                Console.WriteLine("level:" + level);

                Console.ReadLine();
                Disconnect(device_id, callback);
            }
            else
            {
                Console.WriteLine("connect failure.");
            }
        }
Пример #2
0
 public static void wait_for_stop(int device_id)
 {
     while (HRobot.get_motion_state(device_id) != 1 && HRobot.get_connection_level(device_id) != -1)
     {
         Thread.Sleep(30);
     }
 }
Пример #3
0
        static void Main(string[] args)
        {
            device_id = HRobot.open_connection("127.0.0.1", 1, callback);
            Thread.Sleep(1000);
            StringBuilder sdk_version = new StringBuilder();

            HRobot.get_hrsdk_version(sdk_version);
            Console.WriteLine("SDK version: " + sdk_version);
            if (device_id >= 0)
            {
                Console.WriteLine("connect successful.");
                HRobot.set_motor_state(device_id, 1);
                Thread notify = new Thread(run_notify);
                notify.IsBackground = true;
                notify.Start(device_id);

                NetWorkExample_Client(device_id);   // HRSS is socket client
                Thread.Sleep(2000);
                Console.WriteLine();
                NetWorkExample_Server(device_id);   // HRSS is socket server

                Thread.Sleep(3000);
                Console.WriteLine(" \n Please press enter key to end.");

                Console.ReadLine();
                HRobot.disconnect(device_id);
            }
            else
            {
                Console.WriteLine("connect failure.");
            }
        }
Пример #4
0
        // HRSS is socket server
        public static void NetWorkExample_Server(int device_id)
        {
            int           server_type = 0; // socket server
            StringBuilder ip          = new StringBuilder("127.0.0.1");
            int           port        = 5123;
            int           bracket     = 0;
            int           separator   = 0;
            bool          is_format   = false;
            int           show_msg    = -1;

            // network setting
            HRobot.set_network_config(device_id, server_type, ip, port, bracket, separator, is_format);
            HRobot.network_connect(device_id);
            HRobot.get_network_show_msg(device_id, ref show_msg);
            if (show_msg != 1)
            {
                HRobot.set_network_show_msg(device_id, 1);
            }
            Console.WriteLine("HRSS is socket server.");
            Thread.Sleep(2000);

            // create local socket client
            Thread create_client = new Thread(socketClient);

            create_client.IsBackground = true;
            create_client.Start();

            send_msg(device_id);
        }
Пример #5
0
        public static void SyncOutput(int device_id, HRobot.CallBackFun callback)
        {
            double[] p1       = { -10, -200, 0, 0, 0, 0 };
            double[] p2       = { 10, 150, 0, 0, 0, 0 };
            int      type     = 0; //DO
            int      id       = 1;
            int      ON       = 1;
            int      OFF      = 0;
            int      delay    = 1000;
            int      distance = 50;
            int      Start    = 0;
            int      End      = 1;
            int      Path     = 2;

            HRobot.jog_home(device_id);
            Thread.Sleep(100);
            HRobot.lin_rel_pos(device_id, 0, 0, p1);
            HRobot.SyncOutput(device_id, type, id, ON, Start, delay, distance);
            HRobot.SyncOutput(device_id, type, 2, ON, Path, -1000, distance);
            HRobot.SyncOutput(device_id, type, 3, ON, Path, 0, distance);
            HRobot.SyncOutput(device_id, type, 4, ON, Path, delay, distance);
            HRobot.SyncOutput(device_id, type, 5, ON, Path, -1000, -50);
            HRobot.SyncOutput(device_id, type, 6, ON, Path, 0, -50);
            HRobot.SyncOutput(device_id, type, 7, ON, Path, 1000, -50);
            HRobot.SyncOutput(device_id, type, 8, ON, End, -1000, distance);
            HRobot.lin_rel_pos(device_id, 0, 0, p2);
            Console.ReadKey();
        }
Пример #6
0
 private static void OnTimedEvent(Object source, ElapsedEventArgs e)
 {
     // 判斷 程式結束
     if (HRobot.get_function_output(device_id, 1) == 0)
     {
         Console.WriteLine("task_start finish. \n");
         is_Run         = false;
         aTimer.Enabled = false;
     }
 }
Пример #7
0
        static void Main(string[] args)
        {
            int device_id = HRobot.open_connection("127.0.0.1", 1, callback);

            if (device_id >= 0)
            {
                SetRobotParameter(device_id, callback);
                SDKHrobot.HRobot.disconnect(device_id);
            }
        }
Пример #8
0
        static void Main(string[] args)
        {
            int device_id = HRobot.open_connection("127.0.0.1", 1, callback);

            HRobot.set_motor_state(device_id, 1);
            if (device_id >= 0)
            {
                SyncOutput(device_id, callback);
                SDKHrobot.HRobot.disconnect(device_id);
            }
        }
Пример #9
0
 static void Main(string[] args)
 {
     device_id = HRobot.open_connection("127.0.0.1", 1, callback);
     if (device_id >= 0)
     {
         Console.WriteLine("connect successful.");
         PrintFunction();
         Console.ReadLine();
         HRobot.disconnect(device_id);
     }
     else
     {
         Console.WriteLine("connect failure.");
     }
 }
Пример #10
0
        static void Main(string[] args)
        {
            device_id = HRobot.open_connection("127.0.0.1", 1, callback);
            Thread.Sleep(1000);
            StringBuilder sdk_version = new StringBuilder();

            HRobot.get_hrsdk_version(sdk_version);
            Console.WriteLine("sdk version: " + sdk_version);
            if (device_id >= 0)
            {
                Console.WriteLine("connect successful.");
                HRobot.set_motor_state(device_id, 1);
                SoftLimitExample(device_id);
                Console.ReadLine();
                HRobot.disconnect(device_id);
            }
            else
            {
                Console.WriteLine("connect failure.");
            }
        }
Пример #11
0
        public static void TaskStartExample()
        {
            Console.WriteLine("send_file0: " + HRobot.send_file(device_id, "../../../code0.hrb", "code0.hrb"));
            Thread.Sleep(500);
            Console.WriteLine("send_file1: " + HRobot.send_file(device_id, "../../../code1.hrb", "code1.hrb"));
            Thread.Sleep(500);
            Console.WriteLine("send_file2: " + HRobot.send_file(device_id, "../../../code2.hrb", "code2.hrb"));
            Thread.Sleep(500);
            Console.WriteLine("send_file3: " + HRobot.send_file(device_id, "../../../code3.hrb", "code3.hrb"));
            Thread.Sleep(500);
            double[] pos = new double[6];
            HRobot.get_current_position(device_id, pos);   // run callback.
            while (true)
            {
                if (!is_Run)
                {
                    switch (x % 4)
                    {
                    case 0:
                        HRobot.task_start(device_id, "code0.hrb");
                        break;

                    case 1:
                        HRobot.task_start(device_id, "code1.hrb");
                        break;

                    case 2:
                        HRobot.task_start(device_id, "code2.hrb");
                        break;

                    case 3:
                        HRobot.task_start(device_id, "code3.hrb");
                        break;
                    }
                    Console.WriteLine("run code{0}.hrb", x % 4);
                    is_Run = true;
                }
                Thread.Sleep(4000);
            }
        }
Пример #12
0
        // HRSS send the message to another local socket.
        public static void send_msg(int device_id)
        {
            int x = 0;

            Console.WriteLine("The received data is set as counter value.");
            while (true)
            {
                string str;
                string str_num1 = x.ToString();
                string str_num2 = (x + 1).ToString();
                string str_num3 = (x + 2).ToString();
                str = str_num1 + "," + str_num2 + "," + str_num3 + "%%%";
                StringBuilder send_msg = new StringBuilder(str);
                HRobot.network_send_msg(device_id, send_msg);
                Thread.Sleep(1000);
                if (x == 10)
                {
                    HRobot.network_disconnect(device_id);
                    break;
                }
                x++;
            }
        }
Пример #13
0
        // If you want to get the network information, you does have this function.
        // The received parameter is set to the value of the counter.
        public static void run_notify(object device_id)
        {
            int id = ( int )device_id;

            Console.WriteLine("Strat Notify. ");
            double[] pos = new double[6];
            HRobot.get_current_position(id, pos);
            while (true)
            {
                HRobot.network_get_state(id);
                if (is_received)
                {
                    for (int i = 1; i <= recv_val.Count; i++)
                    {
                        if (Int32.TryParse(recv_val[i - 1], out int tmp))
                        {
                            HRobot.set_counter(id, i, tmp);
                        }
                    }
                    is_received = false;
                }
                Thread.Sleep(200);
            }
        }
Пример #14
0
        private static void PrintFunction()
        {
            const int STD_OUTPUT_HANDLE = -11;
            IntPtr    oldBuffer         = GetStdHandle(STD_OUTPUT_HANDLE);                                                             //Gets the handle for the default console buffer
            IntPtr    newBuffer         = CreateConsoleScreenBuffer(0x80000000 | 0x40000000, 0x00000001, IntPtr.Zero, 1, IntPtr.Zero); //Creates a new console buffer

            SetConsoleActiveScreenBuffer(newBuffer);

            COORD coord = new COORD(0, 0);
            COORD size  = new COORD(100, 80);

            SetConsoleScreenBufferSize(oldBuffer, size);   //重新設置緩衝區大小
            SetConsoleScreenBufferSize(newBuffer, size);   //重新設置緩衝區大小
            uint          bytes             = 0;
            StringBuilder data              = new StringBuilder(10000);
            double        utilization_ratio = -1;

            while (true)
            {
                Console.Clear();
                Console.WriteLine("--------------------------");
                StringBuilder v = new StringBuilder(256);
                SDKHrobot.HRobot.get_hrsdk_version(v);
                Console.WriteLine("HRSDK VERSION:\t" + v);

                StringBuilder HrssV = new StringBuilder(256);
                SDKHrobot.HRobot.get_hrss_version(device_id, HrssV);
                Console.WriteLine("HRSS version:\t" + HrssV);

                StringBuilder robot_id = new StringBuilder(256);
                SDKHrobot.HRobot.get_robot_id(device_id, robot_id);
                Console.WriteLine("Robot_ID:\t" + robot_id);

                StringBuilder rsr_prog_name = new StringBuilder(256);
                SDKHrobot.HRobot.get_rsr_prog_name(device_id, 1, rsr_prog_name);
                Console.WriteLine("RSR 1 name:\t" + rsr_prog_name);

                StringBuilder execute_file_name = new StringBuilder(256);
                SDKHrobot.HRobot.get_execute_file_name(device_id, execute_file_name);
                Console.WriteLine("Execute file name:\t" + execute_file_name);

                ulong[] alarm_code = new ulong[256];
                int     count      = 10;
                SDKHrobot.HRobot.get_alarm_code(device_id, ref count, alarm_code);

                SDKHrobot.HRobot.get_robot_type(device_id, v);
                Console.WriteLine("ROBOT TYPE:\t" + v);

                int motor_state = SDKHrobot.HRobot.get_motor_state(device_id);
                Console.WriteLine("motor_state:\t" + motor_state);

                int operation_mode = SDKHrobot.HRobot.get_operation_mode(device_id);
                Console.WriteLine("operation_mode:\t" + operation_mode);

                switch (SDKHrobot.HRobot.get_motion_state(device_id))
                {
                case 1:
                    Console.WriteLine("運動狀態:\t" + "閒置");
                    break;

                case 2:
                    Console.WriteLine("運動狀態:\t" + "運動");
                    break;

                case 3:
                    Console.WriteLine("運動狀態:\t" + "暫停");
                    break;

                case 4:
                    Console.WriteLine("運動狀態:\t" + "延遲");
                    break;

                case 5:
                    Console.WriteLine("運動狀態:\t" + "等待命令");
                    break;

                default:
                    Console.WriteLine("運動狀態:\t" + "發生錯誤");
                    break;
                }
                Console.WriteLine("-------------------------------------------------------------\n");
                Console.WriteLine("ACC RATIO:\t" + SDKHrobot.HRobot.get_acc_dec_ratio(device_id) + "(%)");
                Console.WriteLine("ACC TIME:\t" + SDKHrobot.HRobot.get_acc_time(device_id) + "(ms)");
                Console.WriteLine("PTP RATIO:\t" + SDKHrobot.HRobot.get_ptp_speed(device_id) + "(%)");
                Console.WriteLine("LIN SPEED:\t" + SDKHrobot.HRobot.get_lin_speed(device_id) + "mm/s");
                Console.WriteLine("OVERRIDE RATIO:\t" + SDKHrobot.HRobot.get_override_ratio(device_id) + "(%)");
                Console.WriteLine("-------------------------------------------------------------\n");
                int[] YMD = new int[6];
                SDKHrobot.HRobot.get_device_born_date(device_id, YMD);
                Console.WriteLine("BIRTHDAY:\t" + YMD[0] + "年 " + YMD[1] + "月 " + YMD[2] + "日 ");
                SDKHrobot.HRobot.get_operation_time(device_id, YMD);
                Console.WriteLine("OPERATION TIME:\t" + YMD[0] + "年 " + YMD[1] + "月 " + YMD[2] + "日 " + YMD[3] + "時 " + YMD[4] + "分");
                SDKHrobot.HRobot.get_utilization_ratio(device_id, ref utilization_ratio);
                Console.WriteLine("UTILIZATION RATIO:\t" + utilization_ratio + "(%)");
                SDKHrobot.HRobot.get_utilization(device_id, YMD);
                Console.WriteLine("UTILIZATION:\t" + YMD[0] + "年 " + YMD[1] + "月 " + YMD[2] + "日 " + YMD[3] + "時 " + YMD[4] + "分" + YMD[5] + "秒");
                Console.WriteLine("-------------------------------------------------------------\n");

                Console.WriteLine("\tA1\tA2\tA3\tA4\tA5\tA6");
                PrintRPM();
                Console.WriteLine("\n\t-----------------------------------------------\n");
                PrintCartPos();
                Console.WriteLine("\n\t-----------------------------------------------\n");
                PrintJointPos();
                Console.WriteLine("\n\t-----------------------------------------------\n");
                PrintEnc();
                Console.WriteLine("\n\t-----------------------------------------------\n");
                PrintTorq();
                Console.WriteLine("\n\t-----------------------------------------------\n");
                PrintMil();
                Console.WriteLine("\n\t-----------------------------------------------\n");
                PrintHomePos();
                Console.WriteLine("\n\t-----------------------------------------------\n");
                PrintPrePos();
                Console.WriteLine("\n\t-----------------------------------------------\n");

                int cmd_count = SDKHrobot.HRobot.get_command_count(device_id);
                Console.Write("cmd_count:\t" + cmd_count);

                int cmd_id = SDKHrobot.HRobot.get_command_id(device_id);
                Console.WriteLine("\tcmd_id:\t" + cmd_id);

                int mode = SDKHrobot.HRobot.get_hrss_mode(device_id);
                Console.WriteLine("mode:\t" + mode);

                int DI = SDKHrobot.HRobot.get_digital_input(device_id, 5);
                Console.Write("DI_5:\t" + DI);

                int DO = SDKHrobot.HRobot.get_digital_output(device_id, 5);
                Console.Write("\tDO_5:\t" + DO);

                int DI_sim = SDKHrobot.HRobot.get_DI_simulation_Enable(device_id, 5);
                Console.WriteLine("\tDI_sim_5:\t" + DI_sim);

                StringBuilder DIO_comment = new StringBuilder(200);
                int           DI_comment  = SDKHrobot.HRobot.get_digital_input_comment(device_id, 5, DIO_comment);
                Console.WriteLine("DI_comment_5:\t" + DIO_comment);

                int DO_comment = SDKHrobot.HRobot.get_digital_output_comment(device_id, 5, DIO_comment);
                Console.WriteLine("DO_comment_5:\t" + DIO_comment);

                int FI = SDKHrobot.HRobot.get_function_input(device_id, 5);
                Console.Write("FI_5:\t" + FI);

                int FO = SDKHrobot.HRobot.get_function_output(device_id, 5);
                Console.WriteLine("\tFO_5:\t" + FO);

                int RI = SDKHrobot.HRobot.get_robot_input(device_id, 5);
                Console.Write("RI_5:\t" + RI);

                int RO = SDKHrobot.HRobot.get_robot_output(device_id, 5);
                Console.Write("\tRO_5:\t" + RO);

                int VO = SDKHrobot.HRobot.get_valve_output(device_id, 1);
                Console.WriteLine("\tVO_1:\t" + VO);

                int timer = SDKHrobot.HRobot.get_timer(device_id, 5);
                Console.Write("timer_5:\t" + timer);

                int timer_status = HRobot.get_timer_status(device_id, 5);
                Console.Write("\ttimer_status:\t" + timer_status);

                StringBuilder timer_name = new StringBuilder(200);
                HRobot.get_timer_name(device_id, 5, timer_name);
                Console.WriteLine("\ttimer_name:\t" + timer_name);

                int counter = SDKHrobot.HRobot.get_counter(device_id, 5);
                Console.Write("counter:\t" + counter);

                StringBuilder str          = new StringBuilder(200);
                int           counter_name = SDKHrobot.HRobot.get_counter_name(device_id, 5, str);
                Console.WriteLine("\tcounter_name:\t" + str);


                int pr_type = SDKHrobot.HRobot.get_pr_type(device_id, 5);
                Console.WriteLine("pr_type:\t" + pr_type);

                double[] set_coor = { 0, 0, 0, 0, -90, 0 };
                SDKHrobot.HRobot.set_pr_coordinate(device_id, 5, set_coor);

                int      type  = -1;
                double[] coor  = { 0, 0, 0, 0, 0, 0 };;
                int      tool  = -1;
                int      _base = -1;
                Console.Write("get_pr:\t");
                SDKHrobot.HRobot.get_pr(device_id, 5, ref type, coor, ref tool, ref _base);
                for (int a = 0; a < 6; a++)
                {
                    Console.Write(coor[a] + "\t");
                }
                Console.WriteLine();

                double[] get_coor = new double[6];
                SDKHrobot.HRobot.get_pr_coordinate(device_id, 5, get_coor);
                Console.Write("pr_coordinate:\t");
                for (int i = 0; i < 6; i++)
                {
                    Console.Write(get_coor[i] + " ");
                }
                Console.WriteLine();

                int[] get_tool_base = new int[2];
                SDKHrobot.HRobot.get_pr_tool_base(device_id, 5, get_tool_base);
                Console.Write("pr_tool_base:\t");
                for (int i = 0; i < 2; i++)
                {
                    Console.Write(get_tool_base[i] + " ");
                }
                Console.WriteLine();

                StringBuilder pr_comment = new StringBuilder(200);
                HRobot.get_pr_comment(device_id, 5, pr_comment);
                Console.WriteLine("pr_comment:\t" + pr_comment);

                int base_num = SDKHrobot.HRobot.get_base_number(device_id);
                Console.WriteLine("base_number:\t" + base_num);

                double[] base_data = new double[6];
                SDKHrobot.HRobot.get_base_data(device_id, 5, base_data);
                Console.Write("get_base_data:\t");
                for (int i = 0; i < 6; i++)
                {
                    Console.Write(base_data[i] + " ");
                }
                Console.WriteLine();

                int tool_num = SDKHrobot.HRobot.get_tool_number(device_id);
                Console.WriteLine("tool_number:\t" + tool_num);

                double[] tool_data = new double[6];
                SDKHrobot.HRobot.get_tool_data(device_id, 5, tool_data);
                Console.Write("get_base_data:\t");
                for (int i = 0; i < 6; i++)
                {
                    Console.Write(tool_data[i] + " ");
                }
                Console.WriteLine();

                int           mi_index   = 1;
                bool          mi_sim     = false;
                bool          mi_value   = false;
                int           mi_type    = -1;
                int           mi_start   = -1;
                int           mi_end     = -1;
                StringBuilder mi_comment = new StringBuilder(200);
                HRobot.get_module_input_config(device_id, mi_index, ref mi_sim, ref mi_value, ref mi_type, ref mi_start, ref mi_end, mi_comment);
                Console.Write("MI: index:{0}  sim:{1}  value:{2}  type:{3}  ", mi_index, mi_sim, mi_value, mi_type);
                Console.WriteLine("start:{0}  end:{1}  comment:{2} ", mi_start, mi_end, mi_comment);

                int           mo_index   = 1;
                bool          mo_value   = false;
                int           mo_type    = -1;
                int           mo_start   = -1;
                int           mo_end     = -1;
                StringBuilder mo_comment = new StringBuilder(200);
                HRobot.get_module_output_config(device_id, mo_index, ref mo_value, ref mo_type, ref mo_start, ref mo_end, mo_comment);
                Console.Write("MO: index:{0}  value:{1}  type:{2}  ", mo_index, mo_value, mo_type);
                Console.WriteLine("start:{0}  end:{1}  comment:{2} ", mo_start, mo_end, mo_comment);

                StringBuilder user_msg = new StringBuilder(200);
                SDKHrobot.HRobot.get_user_alarm_setting_message(device_id, 5, user_msg);
                Console.WriteLine("user_alarm_msg_5:\t" + user_msg);

                int value = -1;
                SDKHrobot.HRobot.get_payload_value(device_id, ref value);
                Console.WriteLine("payload:\t" + value);

                PrintDIOSetting();

                int year   = -1;
                int month  = -1;
                int day    = -1;
                int hour   = -1;
                int min    = -1;
                int second = -1;
                SDKHrobot.HRobot.get_controller_time(device_id, ref year, ref month, ref day, ref hour, ref min, ref second);
                Console.WriteLine("controller_time: {0}/{1}/{2} {3}:{4}:{5}  ", year, month, day, hour, min, second);

                ReadConsoleOutputCharacter(oldBuffer, data, 10000, coord, out bytes);
                WriteConsoleOutputCharacter(newBuffer, data, 10000, coord, out bytes);
                System.Threading.Thread.Sleep(1000);
            }
        }
Пример #15
0
        public static void SetRobotParameter(int device_id, HRobot.CallBackFun callback)
        {
            if (device_id >= 0)
            {
                Console.WriteLine("connect successful.");
                callback = new HRobot.CallBackFun(EventFun);
            }
            else
            {
                Console.WriteLine("connect failure.");
                Console.ReadLine();
            }
            bool          ON       = true;
            int           rlt      = HRobot.set_operation_mode(device_id, 1); //switch mode to running mode ,cuz acc can only be changed in runing mode.
            StringBuilder robot_id = new StringBuilder("HrSs_Robot_ID");
            StringBuilder str      = new StringBuilder("test text");

            rlt = HRobot.set_robot_id(device_id, robot_id);
            rlt = HRobot.set_acc_time(device_id, 250);
            rlt = HRobot.set_acc_dec_ratio(device_id, 50);   // set acc ratio(%)
            rlt = HRobot.set_operation_mode(device_id, 0);   //switch mode to safety mode ,cuz ptp speed can only be changed in safety mode.
            rlt = HRobot.set_override_ratio(device_id, 50);  //override ratio(%)
            rlt = HRobot.set_ptp_speed(device_id, 50);       //PTP speed ratio(%)
            rlt = HRobot.set_lin_speed(device_id, 800);      //LIN speed (mm/s)
            rlt = HRobot.set_command_id(device_id, 10);
            rlt = HRobot.set_digital_output(device_id, 5, true);
            rlt = HRobot.set_robot_output(device_id, 5, true);
            rlt = HRobot.set_valve_output(device_id, 1, true);
            rlt = HRobot.set_base_number(device_id, 5);
            rlt = HRobot.set_tool_number(device_id, 5);
            rlt = HRobot.set_timer(device_id, 5, 1000);
            rlt = HRobot.set_timer_start(device_id, 5);
            rlt = HRobot.set_timer_stop(device_id, 5);
            StringBuilder timer_name = new StringBuilder("timer_name");

            rlt = HRobot.set_timer_name(device_id, 5, timer_name);
            rlt = HRobot.set_counter(device_id, 5, 1000);
            rlt = HRobot.set_pr_type(device_id, 5, 1000);
            double[] coor = { 0, 0, 0, 0, -90, 0 };
            rlt = HRobot.set_pr_coordinate(device_id, 5, coor);
            double[] tool_base = { 5, 5 };
            rlt = HRobot.set_pr_coordinate(device_id, 5, tool_base);
            rlt = HRobot.set_pr_tool_base(device_id, 5, 2, 2);
            rlt = HRobot.define_base(device_id, 5, coor);
            rlt = HRobot.define_tool(device_id, 5, coor);
            rlt = HRobot.set_pr(device_id, 5, 1, coor, 5, 5);
            rlt = HRobot.remove_pr(device_id, 5);
            rlt = HRobot.set_smooth_length(device_id, 200);
            StringBuilder rsr = new StringBuilder("set_rsr.hrb");

            rlt = HRobot.set_rsr(device_id, rsr, 1);
            rlt = HRobot.set_motor_state(device_id, 1);

            rlt = HRobot.set_module_input_simulation(device_id, 5, true);
            rlt = HRobot.set_module_input_value(device_id, 5, true);
            rlt = HRobot.set_module_input_start(device_id, 5, 1);
            rlt = HRobot.set_module_input_end(device_id, 5, 5);
            StringBuilder mi_comment = new StringBuilder("mi_comment");

            rlt = HRobot.set_module_input_comment(device_id, 5, mi_comment);
            rlt = HRobot.set_module_output_value(device_id, 5, true);
            rlt = HRobot.set_module_output_start(device_id, 5, 1);
            rlt = HRobot.set_module_output_end(device_id, 5, 5);
            StringBuilder mo_comment = new StringBuilder("mi_comment");

            rlt = HRobot.set_module_output_comment(device_id, 5, mo_comment);

            // new 2020.03.19
            rlt = HRobot.set_DI_simulation_Enable(device_id, 5, ON);
            rlt = HRobot.set_DI_simulation(device_id, 5, ON);
            rlt = HRobot.set_digital_input_comment(device_id, 5, str);
            rlt = HRobot.set_digital_output_comment(device_id, 5, str);
            double[] joint = { 0, 0, 0, 0, 0, 0 };
            rlt = HRobot.set_home_point(device_id, joint);
            rlt = HRobot.set_module_input_type(device_id, 5, 0);
            rlt = HRobot.set_module_output_type(device_id, 5, 1);
            rlt = HRobot.set_counter_name(device_id, 5, str);
            int DIO = 0;
            int SIO = 1;

            int[] data = { DIO, 34, DIO, 35, SIO, 36, SIO, 37, DIO, 38, SIO, 39 };
            rlt = HRobot.set_digital_setting(device_id, data, str);
            rlt = HRobot.set_user_alarm_setting_message(device_id, 5, str);
            rlt = HRobot.set_language(device_id, 0);
            rlt = HRobot.save_module_io_setting(device_id);

            Console.ReadLine();
        }
Пример #16
0
        public static void SoftLimitExample(int device_id)
        {
            double[] joint_low_limit  = { -20, -20, -35, -20, 0, 0 };
            double[] joint_high_limit = { 20, 20, 0, 0, 0, 0 };
            double[] cart_low_limit   = { -100, 300, -100, 0, 0, 0 };
            double[] cart_high_limit  = { 100, 450, -25, 0, 0, 0 };
            double[] cart_home        = { 0, 400, 0, 0, -90, 0 };
            double[] joint_home       = { 0, 0, 0, 0, -90, 0 };
            double[] now_pos          = { 0, 0, 0, 0, 0, 0 };
            bool     re_bool          = false;

            HRobot.get_current_position(device_id, now_pos);

            // run joint softlimit
            HRobot.set_override_ratio(device_id, 100);
            HRobot.set_joint_soft_limit(device_id, joint_low_limit, joint_high_limit);
            HRobot.enable_joint_soft_limit(device_id, true);
            HRobot.enable_cart_soft_limit(device_id, false);
            HRobot.get_joint_soft_limit_config(device_id, ref re_bool, joint_low_limit, joint_high_limit);
            Console.WriteLine("Enable Joint SoftLimit: " + re_bool);
            HRobot.jog_home(device_id);
            wait_for_stop(device_id);
            Thread.Sleep(1000);
            for (int i = 0; i < 4; i++)
            {
                HRobot.jog(device_id, 1, i, -1);
                wait_for_stop(device_id);
                Console.WriteLine("On the limits of SoftLimit");
            }
            for (int i = 0; i < 4; i++)
            {
                HRobot.jog(device_id, 1, i, 1);
                wait_for_stop(device_id);
                Console.WriteLine("On the limits of SoftLimit");
            }
            HRobot.enable_joint_soft_limit(device_id, false);

            // run cartesian softlimit
            HRobot.ptp_axis(device_id, 0, joint_home);
            wait_for_stop(device_id);
            HRobot.set_cart_soft_limit(device_id, cart_low_limit, cart_high_limit);
            HRobot.enable_cart_soft_limit(device_id, true);
            HRobot.get_cart_soft_limit_config(device_id, ref re_bool, cart_low_limit, cart_high_limit);
            Console.WriteLine("Enable Cart SoftLimit: " + re_bool);
            HRobot.lin_pos(device_id, 0, 0, cart_home);
            wait_for_stop(device_id);
            for (int i = 0; i < 3; i++)
            {
                HRobot.jog(device_id, 0, i, -1);
                wait_for_stop(device_id);
                Console.WriteLine("On the limits of SoftLimit");
                Console.WriteLine("");
                HRobot.clear_alarm(device_id);
                Thread.Sleep(2000);
            }
            for (int i = 0; i < 3; i++)
            {
                HRobot.jog(device_id, 0, i, 1);
                wait_for_stop(device_id);
                Console.WriteLine("On the limits of SoftLimit");
                Console.WriteLine("");
                HRobot.clear_alarm(device_id);
                Thread.Sleep(2000);
            }
            Console.WriteLine("End of motion");

            HRobot.enable_joint_soft_limit(device_id, false);
            HRobot.enable_cart_soft_limit(device_id, false);
        }