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."); } }
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); } }
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."); } }
// 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); }
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(); }
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; } }
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); } }
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); } }
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."); } }
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."); } }
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); } }
// 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++; } }
// 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); } }
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); } }
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(); }
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); }