using BPASmartClient.Message; using System.Text; namespace BPASmartClient.JakaRobot { public class JaKaHelper { #region 果汁机设备 /*public const string SENCE_取咖啡杯 = "10000"; public const string SENCE_取果汁杯 = "10001"; public const string SENCE_取茶水杯 = "10002"; public const string SENCE_取水杯 = "10003"; public const string SENCE_取咖啡杯检测 = "11000"; public const string SENCE_取果汁杯检测 = "11001"; public const string SENCE_取茶水杯检测 = "11002"; public const string SENCE_取水杯检测 = "11003"; public const string SENCE_接咖啡 = "12000"; public const string SENCE_接果汁1 = "12001"; public const string SENCE_接果汁2 = "12002"; public const string SENCE_接果汁3 = "12003"; public const string SENCE_接果汁4 = "12004"; public const string SENCE_接茶 = "12005"; public const string SENCE_接水 = "12006"; public const string SENCE_放咖啡杯 = "13000"; public const string SENCE_放果汁杯1 = "13001"; public const string SENCE_放果汁杯2 = "13002"; public const string SENCE_放果汁杯3 = "13003"; public const string SENCE_放果汁杯4 = "13004"; public const string SENCE_放茶水杯 = "13005"; public const string SENCE_放水杯 = "13006";*/ //public const string SENCE_取杯 = "10000"; //public const string SENCE_放杯位检测 = "10100"; //public const string SENCE_取杯检测 = "11000"; //public const string SENCE_接咖啡 = "12000"; //public const string SENCE_接果汁1 = "12001"; //public const string SENCE_接果汁2 = "12002"; //public const string SENCE_接果汁3 = "12003"; //public const string SENCE_接果汁4 = "12004"; //public const string SENCE_接茶 = "12005"; //public const string SENCE_接水 = "12006"; //public const string SENCE_接茶_接水 = "12007"; //public const string SENCE_放咖啡杯 = "13000";//接饮料位---放饮料过渡位 //public const string SENCE_放果汁杯1 = "13001"; //public const string SENCE_放果汁杯2 = "13002"; //public const string SENCE_放果汁杯3 = "13003"; //public const string SENCE_放果汁杯4 = "13004"; //public const string SENCE_放茶水杯 = "13005"; //public const string SENCE_放杯 = "14000";//放杯过渡位到-放杯 //public const string SENCE_放杯检测 = "15000"; //public const string SENCE_初始位 = "20000"; #endregion private int rshd = -1; private bool login = false; /// /// 机器人的状态 /// private JKTYPE.RobotStatus robot_Status; private JKTYPE.ProgramState program_status; //private volatile static JaKaHelper _Instance; //public static JaKaHelper GetInstance => _Instance ?? (_Instance = new JaKaHelper()); //private JaKaHelper() { } public bool IsIdle { get; set; } = false; public bool IsConnected { get { return login; } } public void Connect(string ip) { bool ErrorFlag = false; while (rshd == -1 || login == false) { try { jakaAPI.create_handler(ip.ToCharArray(), ref rshd); login = true; } catch (Exception ex) { if (!ErrorFlag) { MessageLog.GetInstance.ShowEx(ex.ToString()); ErrorFlag = true; login = false; } Thread.Sleep(3000); } } if (login) { try { Power_On();//打开机器人电源 Thread.Sleep(1000); Enable_robot();//机器人上使能 MessageLog.GetInstance.Show("机器人已上电使能"); } catch (Exception ex) { MessageLog.GetInstance.ShowEx("机器人未完成上电和使能"); } } } public void Power_On() { if (login) { try { jakaAPI.power_on(ref rshd); } catch (System.AccessViolationException ave) { MessageLog.GetInstance.ShowEx(ave.ToString()); } //catch (Exception ex) //{ // MessageLog.GetInstance.ShowEx(ex.ToString()); //} } else { MessageLog.GetInstance.Show("jaka机器人未连接成功!"); } } public void Power_Off() { if (login) { try { jakaAPI.power_off(ref rshd); } catch (Exception ex) { } } else { MessageLog.GetInstance.Show("jaka机器人未连接成功!"); } } public void Enable_robot() { if (!(rshd == -1)) { try { jakaAPI.enable_robot(ref rshd); } catch (Exception ex) { } } else { MessageLog.GetInstance.Show("jaka机器人未连接成功!"); } } public void disEnable_robot() { if (!(rshd == -1)) { try { jakaAPI.disable_robot(ref rshd); } catch (Exception ex) { } } else { MessageLog.GetInstance.Show("jaka机器人未连接成功!"); } } /// /// 设置机器人的DO值 /// /// /// /// public bool Set_RobotDO(int DOIndex, bool value) { try { jakaAPI.set_digital_output(ref rshd, JKTYPE.IOType.IO_CABINET, DOIndex, value); return value; } catch (Exception ex) { return false; } } /// /// 设置机器人的AO值 /// /// 设置值 /// public int Set_RobotAO1(int Value) { try { return jakaAPI.set_analog_output(ref rshd, JKTYPE.IOType.IO_CABINET, 0, Value); } catch (Exception ex) { return 0; } } /// /// 设置机器人的AO值 /// /// 索引值 /// 设置值 /// public int Set_RobotAO(int Index, int Value) { try { return jakaAPI.set_analog_output(ref rshd, JKTYPE.IOType.IO_CABINET, Index, Value); } catch (Exception ex) { return 0; } } /// /// 获取机器人的AO值 /// /// 索引值 /// 设置值 /// public float Get_RobotAO(int Index, int value) { try { float bResult = 0; jakaAPI.get_analog_output(ref rshd, JKTYPE.IOType.IO_CABINET, Index, ref bResult); return bResult; } catch (Exception ex) { return 0; } } /// /// 获取机器人的AO值 /// /// 索引值 /// 设置值 /// public float Get_RobotAO1() { try { float bResult = 0; jakaAPI.get_analog_output(ref rshd, JKTYPE.IOType.IO_CABINET, 0, ref bResult); return bResult; } catch (Exception ex) { return 0; } } /// /// 获取机器人的DI输入 /// /// /// public bool Get_RobotDI(int index) { bool bResult = false; jakaAPI.get_digital_input(ref rshd, JKTYPE.IOType.IO_CABINET, index, ref bResult); return bResult; } /// /// 获取机器人的状态 /// public void GetRobotStatus() { jakaAPI.get_robot_status(ref rshd, ref robot_Status); } public JKTYPE.ProgramState GetProgramStatus() { jakaAPI.get_program_state(ref rshd, ref program_status); return program_status; } StringBuilder jakafile; JKTYPE.ProgramState status; char[] file; public void JaKaProgramName(String Programname) { try { //加载 file = Programname.ToCharArray(); MessageLog.GetInstance.Show($"调用文件名:{Programname}"); status = new JKTYPE.ProgramState(); jakaAPI.get_program_state(ref rshd, ref status); if (status != JKTYPE.ProgramState.PROGRAM_IDLE) { MessageLog.GetInstance.Show($"程序运行中,无法加载程序!!!"); } else { if (jakaAPI.program_load(ref rshd, file) == 0) { MessageLog.GetInstance.Show($"加载程序完成"); } else { MessageLog.GetInstance.Show($"加载程序失败!!!"); } } if (status == JKTYPE.ProgramState.PROGRAM_RUNNING) { MessageLog.GetInstance.Show($"程序处于已处于启动状态!!!"); } else if (status == JKTYPE.ProgramState.PROGRAM_IDLE) { jakafile = new StringBuilder(); jakaAPI.get_loaded_program(ref rshd, jakafile); if (jakafile.Length == 0) { MessageLog.GetInstance.Show($"未加载程序,无法运行!!!"); } else { MessageLog.GetInstance.Show($"当前加载程序为:" + jakafile); jakaAPI.program_run(ref rshd); MessageLog.GetInstance.Show($"程序启动"); } } else { MessageLog.GetInstance.Show($"程序处于暂停状态,无法重新启动程序!!!"); } } catch (Exception ex) { MessageLog.GetInstance.ShowEx(ex.ToString()); } } } }