IOHandler.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package urgrip.toolbar;
  2. import java.util.Collection;
  3. import java.util.Iterator;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. import com.ur.urcap.api.domain.io.AnalogIO;
  7. import com.ur.urcap.api.domain.io.DigitalIO;
  8. import com.ur.urcap.api.domain.io.IO;
  9. import com.ur.urcap.api.domain.io.IOModel;
  10. public class IOHandler {
  11. private final IOModel ioModel;
  12. public IOHandler(IOModel ioModel) {
  13. this.ioModel = ioModel;
  14. }
  15. /*Returns a DigitalIO object found by its default name
  16. * Default names are:
  17. * digital_in[0]
  18. * digital_in[1]
  19. * ...
  20. * digital_in[7]
  21. * digital_out[0]
  22. * digital_out[1]
  23. * ...
  24. * digital_out[7]
  25. * tool_in[0]
  26. * tool_in[1]
  27. * tool_out[0]
  28. * tool_out[1]
  29. * config_in[0]
  30. * config_in[1]
  31. * ...
  32. * config_in[7]
  33. * config_out[0]
  34. * config_out[1]
  35. * ...
  36. * config_out[7]
  37. *
  38. */
  39. public DigitalIO getDigitalIO(String defaultName){
  40. Collection<DigitalIO> IOcollection = ioModel.getIOs(DigitalIO.class);
  41. int IO_count = IOcollection.size();
  42. if(IO_count > 0){
  43. Iterator<DigitalIO> IO_itr = IOcollection.iterator();
  44. while(IO_itr.hasNext()){
  45. DigitalIO thisIO = IO_itr.next();
  46. String thisDefaultName = thisIO.getDefaultName();
  47. // System.out.println("Found an IO named "+thisDefaultName);
  48. if(thisDefaultName.equals(defaultName)){
  49. return thisIO;
  50. }
  51. }
  52. }
  53. return null;
  54. }
  55. private final static Pattern ioPattern = Pattern.compile("\\[(.*?)\\]");
  56. public static int getIOIndex(String ioName) {
  57. Matcher m = ioPattern.matcher(ioName);
  58. if(m.find()) {
  59. return Integer.parseInt(m.group(1));
  60. }
  61. return -1;
  62. }
  63. /*Returns an AnalogIO object found by its default name
  64. * Default names are:
  65. * analog_in[0]
  66. * analog_in[1]
  67. * analog_in[2] (Tool analog in 0)
  68. * analog_in[3] (Tool analog in 1)
  69. * analog_out[0]
  70. * analog_out[1]
  71. *
  72. */
  73. public AnalogIO getAnalogIO(String defaultName){
  74. Collection<AnalogIO> IOcollection = ioModel.getIOs(AnalogIO.class);
  75. int IO_count = IOcollection.size();
  76. if(IO_count > 0){
  77. Iterator<AnalogIO> IO_itr = IOcollection.iterator();
  78. while(IO_itr.hasNext()){
  79. AnalogIO thisIO = IO_itr.next();
  80. String thisDefaultName = thisIO.getDefaultName();
  81. // System.out.println("Found an IO named "+thisDefaultName);
  82. if(thisDefaultName.equals(defaultName)){
  83. return thisIO;
  84. }
  85. }
  86. }
  87. return null;
  88. }
  89. }