public static void Jog(int id, SDKHrobot.HRobot.CallBackFun callback) { device_id = id; if (device_id >= 0) { Console.WriteLine("connect successful."); callback = new SDKHrobot.HRobot.CallBackFun(EventFun); } else { Console.WriteLine("connect failure."); } if (SDKHrobot.HRobot.get_motor_state(device_id) == 0) { SDKHrobot.HRobot.set_motor_state(device_id, 1); // Servo on } SDKHrobot.HRobot.set_override_ratio(device_id, 100); Thread printThread = new Thread(PrintFunction); printThread.Start(); while (true) { ConsoleKey keyNum = Console.ReadKey().Key; if (keyNum == ConsoleKey.Escape) { break; } JogByKeyDown(keyNum, 0); WaitKeUp(); } }
public static void Disconnect(int device_id, SDKHrobot.HRobot.CallBackFun callback) { if (device_id >= 0) { SDKHrobot.HRobot.disconnect(device_id); } }
public static void Motion(int device_id, SDKHrobot.HRobot.CallBackFun callback) { if (device_id >= 0) { Console.WriteLine("connect successful."); callback = new SDKHrobot.HRobot.CallBackFun(EventFun); } else { Console.WriteLine("connect failure."); return; } if (SDKHrobot.HRobot.get_motor_state(device_id) == 0) { SDKHrobot.HRobot.set_motor_state(device_id, 1); // Servo on SDKHrobot.HRobot.set_override_ratio(device_id, 50); Thread.Sleep(3000); } double[] cp1 = { 100, 368, 200, 180, 0, 90 }; double[] cp2 = { 0, 368, 100, 180, 0, 90 }; double[] cp3 = { -100, 368, 0, 180, 0, 90 }; double[] cp4 = { 0, 368, -100, 180, 0, 90 }; double[] cp5 = { 100, 368, 0, 180, 0, 90 }; double[] cp6 = { 0, 368, 100, 180, 0, 90 }; double[] cp7 = { -100, 368, 200, 180, 0, 90 }; double[] cp8 = { 0, 368, 293.5, 180, 0, 90 }; double[] Home = { 0, 0, 0, 0, -90, 0 }; SDKHrobot.HRobot.set_override_ratio(device_id, 60); //override speed ratio SDKHrobot.HRobot.ptp_axis(device_id, 0, Home); //ptp to axis home SDKHrobot.HRobot.circ_pos(device_id, 1, cp1, cp2); //circ motion Thread.Sleep(1000); SDKHrobot.HRobot.motion_hold(device_id); Thread.Sleep(1000); SDKHrobot.HRobot.motion_continue(device_id); SDKHrobot.HRobot.motion_delay(device_id, 500); SDKHrobot.HRobot.circ_pos(device_id, 1, cp3, cp4); Thread.Sleep(1000); SDKHrobot.HRobot.motion_abort(device_id); SDKHrobot.HRobot.circ_axis(device_id, 1, cp5, cp6); Thread.Sleep(500); SDKHrobot.HRobot.circ_axis(device_id, 1, cp7, cp8); Thread.Sleep(500); }
public static void Connect(int device_id, SDKHrobot.HRobot.CallBackFun callback) { 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(); } else { Console.WriteLine("connect failure."); } }
public static void LINMotion(int device_id, SDKHrobot.HRobot.CallBackFun callback) { if (device_id >= 0) { Console.WriteLine("connect successful."); callback = new SDKHrobot.HRobot.CallBackFun(EventFun); SDKHrobot.HRobot.set_override_ratio(device_id, 100); } else { Console.WriteLine("connect failure."); return; } if (SDKHrobot.HRobot.get_motor_state(device_id) == 0) { SDKHrobot.HRobot.set_motor_state(device_id, 1); // Servo on SDKHrobot.HRobot.set_override_ratio(device_id, 50); Thread.Sleep(3000); } List <double> x = new List <double>(); List <double> y = new List <double>(); List <double> z = new List <double>(); double[] pos = { 0, 450, 200, 180, 0, 90 }; int xoffset = 20; int zoffset = 10; //make path x.Add(pos[0]); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0] + xoffset); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0] + xoffset); y.Add(pos[1]); z.Add(pos[2] - zoffset); x.Add(pos[0] + xoffset); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0] - xoffset); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0] - xoffset); y.Add(pos[1]); z.Add(pos[2] - zoffset); x.Add(pos[0] - xoffset); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0]); y.Add(pos[1]); z.Add(pos[2]); //line motion for (int a = 0; a < x.Count; a++) { pos[0] = x[a]; pos[1] = y[a]; pos[2] = z[a]; while (SDKHrobot.HRobot.get_command_count(device_id) > 100) { Thread.Sleep(500); } SDKHrobot.HRobot.lin_pos(device_id, 2, 50, pos); } Thread.Sleep(1000); //axis double[] pos_home = { 0, 0, 0, 0, -90, 0 }; SDKHrobot.HRobot.lin_axis(device_id, 2, 50, pos_home); //rel_pos Thread.Sleep(500); double[] pos1 = { 10, 0, 0, 0, 0, 0 }; SDKHrobot.HRobot.lin_rel_pos(device_id, 2, 50, pos1); //rel_axis Thread.Sleep(500); double[] pos2 = { 10, 10, -10, 10, -10, 10 }; SDKHrobot.HRobot.lin_rel_axis(device_id, 2, 50, pos2); Thread.Sleep(500); SDKHrobot.HRobot.lin_pr(device_id, 2, 50, 1); }
public static void File(int device_id, SDKHrobot.HRobot.CallBackFun callback) { if (device_id >= 0) { Console.WriteLine("connect successful."); callback = new SDKHrobot.HRobot.CallBackFun(EventFun); } else { Console.WriteLine("connect failure."); return; } if (SDKHrobot.HRobot.get_motor_state(device_id) == 0) { SDKHrobot.HRobot.set_motor_state(device_id, 1); // Servo on } SDKHrobot.HRobot.ext_task_start(device_id, 0, 1); Thread.Sleep(2000); SDKHrobot.HRobot.task_start(device_id, "test.hrb"); Thread.Sleep(2000); SDKHrobot.HRobot.task_hold(device_id); Thread.Sleep(2000); SDKHrobot.HRobot.task_continue(device_id); Thread.Sleep(2000); SDKHrobot.HRobot.task_abort(device_id); Thread.Sleep(2000); string from_file_path = "test.hrb"; string to_file_path = "Program\\test.hrb"; SDKHrobot.HRobot.download_file(device_id, from_file_path, to_file_path); // 下載控制器檔名為test.hrb檔案至專案底下的Program資料夾中,且以test.hrb為名。 string file_name = "Program\\test.hrb"; Thread.Sleep(2000); // 等待檔案下載完成,download_file與send_file不可同時進行 SDKHrobot.HRobot.send_file(device_id, file_name, "test.hrb"); // 從專案底下的Program資料夾中上傳檔名為test.hrb檔案,且以test.hrb為名。 Thread.Sleep(100); int cnt = -1; ulong[] alarm = new ulong[20]; SDKHrobot.HRobot.get_alarm_code(device_id, ref cnt, alarm); if (cnt > 0) { SDKHrobot.HRobot.clear_alarm(device_id); } Thread.Sleep(200); StringBuilder update = new StringBuilder("update"); SDKHrobot.HRobot.update_hrss(device_id, update); SDKHrobot.HRobot.new_folder(device_id, "new_folder"); SDKHrobot.HRobot.file_rename(device_id, "test2.hrb", "test3.hrb"); SDKHrobot.HRobot.file_drag(device_id, "test3.hrb", "new_folder/test3.hrb"); SDKHrobot.HRobot.delete_file(device_id, "new_folder/test3.hrb"); SDKHrobot.HRobot.delete_folder(device_id, "new_folder"); for (int i = 0; i < SDKHrobot.HRobot.get_prog_number(device_id); i++) { StringBuilder str2 = new StringBuilder(20); SDKHrobot.HRobot.get_prog_name(device_id, i, str2); Console.WriteLine(str2); } Console.ReadKey(); }
public static void PTPMotion(int device_id, SDKHrobot.HRobot.CallBackFun callback) { if (device_id >= 0) { Console.WriteLine("connect successful."); callback = new SDKHrobot.HRobot.CallBackFun(EventFun); SDKHrobot.HRobot.set_override_ratio(device_id, 60); } else { Console.WriteLine("connect failure."); return; } if (SDKHrobot.HRobot.get_motor_state(device_id) == 0) { SDKHrobot.HRobot.set_motor_state(device_id, 1); // Servo on SDKHrobot.HRobot.set_override_ratio(device_id, 50); Thread.Sleep(3000); } List <double> x = new List <double>(); List <double> y = new List <double>(); List <double> z = new List <double>(); double[] pos = { 0, 300, -100, 0, 0, 0 }; int xoffset = 20; int zoffset = 10; x.Add(pos[0]); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0] + xoffset); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0] + xoffset); y.Add(pos[1]); z.Add(pos[2] - zoffset); x.Add(pos[0] + xoffset); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0] - xoffset); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0] - xoffset); y.Add(pos[1]); z.Add(pos[2] - zoffset); x.Add(pos[0] - xoffset); y.Add(pos[1]); z.Add(pos[2]); x.Add(pos[0]); y.Add(pos[1]); z.Add(pos[2]); //ptp motion for (int a = 0; a < x.Count; a++) { pos[0] = x[a]; pos[1] = y[a]; pos[2] = z[a]; while (SDKHrobot.HRobot.get_command_count(device_id) > 100) { Thread.Sleep(500); } SDKHrobot.HRobot.ptp_pos(device_id, 1, pos); } Thread.Sleep(5000); //axis for (int a = 0; a < x.Count; a++) { pos[0] = x[a]; pos[1] = y[a] - 300; pos[2] = z[a]; while (SDKHrobot.HRobot.get_command_count(device_id) > 100) { Thread.Sleep(500); } SDKHrobot.HRobot.ptp_axis(device_id, 1, pos); } Thread.Sleep(5000); pos[1] = 0; //rel_pos SDKHrobot.HRobot.ptp_rel_pos(device_id, 1, pos); Thread.Sleep(500); //rel_axis SDKHrobot.HRobot.ptp_rel_axis(device_id, 1, pos); Thread.Sleep(500); SDKHrobot.HRobot.ptp_pr(device_id, 1, 1); }