RtdeSetupOutputs.java 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package at.acdp.urweb.rtde.packets;
  2. import java.io.DataInputStream;
  3. import java.io.DataOutputStream;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. import static at.acdp.urweb.rtde.CommandType.RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS;
  9. public class RtdeSetupOutputs implements IRtdeData {
  10. public int recipe;
  11. public List<String> variables=new ArrayList<>();
  12. public List<String> types=new ArrayList<>();
  13. public String typesText;
  14. public RtdeSetupOutputs() {
  15. }
  16. public RtdeSetupOutputs addVariable(String name) {
  17. variables.add(name);
  18. return this;
  19. }
  20. @Override
  21. public int getType() {
  22. return RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS;
  23. }
  24. @Override
  25. public RtdeSetupOutputs read(DataInputStream d, int length) throws IOException {
  26. recipe = d.readByte();
  27. byte[] text=new byte[length-3];
  28. d.readFully(text);
  29. typesText=new String(text);
  30. types.addAll(Arrays.asList(typesText.split(",")));
  31. return this;
  32. }
  33. @Override
  34. public RtdeSetupOutputs send(DataOutputStream dos) throws IOException {
  35. var payload = String.join(",", variables).getBytes();
  36. sendHeader(dos, payload.length+8);
  37. dos.writeDouble(1); //output frequency [1..125]
  38. dos.write(payload);
  39. dos.flush();
  40. return this;
  41. }
  42. }