12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package at.acdp.urweb.rtde.packets;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.concurrent.ConcurrentHashMap;
- import static at.acdp.urweb.rtde.CommandType.RTDE_TEXT_MESSAGE;
- public class RtdeDataPackage implements IRtdeData {
- private final RtdeSetupOutputs outputs;
- private HashMap<String, String> pdata=new HashMap<>();
- public RtdeDataPackage(RtdeSetupOutputs outputs) {
- this.outputs=outputs;
- }
- @Override
- public int getType() {
- return RTDE_TEXT_MESSAGE;
- }
- public HashMap<String, String> getPdata() {
- return pdata;
- }
- @Override
- public RtdeDataPackage read(DataInputStream di, int length) throws IOException {
- int recipeID=di.readByte();
- for(int i=0; i<outputs.variables.size(); i++) {
- String output=outputs.variables.get(i);
- String type=outputs.types.get(i);
- switch (type) {
- case "BOOL":
- pdata.put(output, String.valueOf(di.readBoolean()));
- break;
- case "UINT8":
- pdata.put(output, String.valueOf(di.readByte()));
- break;
- case "UINT32":
- case "INT32":
- pdata.put(output, String.valueOf(di.readInt()));
- break;
- case "UINT64":
- pdata.put(output, String.valueOf(di.readLong()));
- break;
- case "DOUBLE":
- pdata.put(output, String.valueOf(di.readDouble()));
- break;
- case "VECTOR3D":
- pdata.put(output, String.format("%f %f %f",di.readDouble(), di.readDouble(), di.readDouble()));
- break;
- case "VECTOR6D":
- pdata.put(output, String.format("%f %f %f %f %f %f",di.readDouble(), di.readDouble(), di.readDouble(), di.readDouble(), di.readDouble(), di.readDouble()));
- break;
- case "VECTOR6INT32":
- pdata.put(output, String.format("%d %d %d",di.readInt(), di.readInt(), di.readInt()));
- break;
- case "VECTOR6UINT32":
- pdata.put(output, String.format("%d %d %d %d %d %d",di.readInt(), di.readInt(), di.readInt(), di.readInt(), di.readInt(), di.readInt()));
- break;
- default:
- throw new IllegalStateException("Unexpected value: " + type);
- }
- }
- return this;
- }
- @Override
- public RtdeDataPackage send(DataOutputStream dos) throws IOException {
- sendHeader(dos,0);
- return this;
- }
- }
|