1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package at.acdp.urweb.rtde.packets;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.util.HashMap;
- import static at.acdp.urweb.rtde.CommandType.RTDE_DATA_PACKAGE;
- import static at.acdp.urweb.rtde.CommandType.RTDE_TEXT_MESSAGE;
- public class RtdeOutDataPackage implements IRtdeData {
- private final RtdeSetupOutputs outputs;
- private HashMap<String, String> pdata=new HashMap<>();
- public RtdeOutDataPackage(RtdeSetupOutputs outputs) {
- this.outputs=outputs;
- }
- @Override
- public int getType() {
- return RTDE_DATA_PACKAGE;
- }
- public HashMap<String, String> getPdata() {
- return pdata;
- }
- @Override
- public RtdeOutDataPackage 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 RtdeOutDataPackage send(DataOutputStream dos) throws IOException {
- sendHeader(dos,0);
- return this;
- }
- }
|