>Por MarianaComo dito anteriormente começamos desenvolver um jeito de controle remoto do simulador, por UDCP. Para isso ocorrer precisamos converter também float em bytes, a seguir a rotina que faz isso:
void comunicacaoRobo2() {
/** 6 floats * 4 bytes cada * 3 conjuntos de estado */
byte data[] = new byte[6 * 4 * 3];
byte cmd[] = new byte[1];
Estado estado[] = new Estado[3];
for (int i = 0; i <>
estado[i] = new Estado();
while (true) {
try {
estado[0].angulo = (float) (2 * Math.PI + robo2.angulo);
estado[0].x = tamXCm - (float) robo2.x;
estado[0].y = tamYCm - (float) robo2.y;
estado[0].dAngulo = (float) robo2.dAngulo;
estado[0].dx = -(float) robo2.dx;
estado[0].dy = -(float) robo2.dy;
estado[1].angulo = (float) bola.angulo;
estado[1].x = tamXCm - (float) bola.x;
estado[1].y = tamYCm - (float) bola.y;
estado[1].dAngulo = (float) 0;// bola.dAngulo;
estado[1].dx = -(float) bola.dx;
estado[1].dy = -(float) bola.dy;
estado[2].angulo = (float) (2 * Math.PI + robo1.angulo);
estado[2].x = tamXCm - (float) robo1.x;
estado[2].y = tamYCm - (float) robo1.y;
estado[2].dAngulo = (float) robo1.dAngulo;
estado[2].dx = -(float) robo1.dx;
estado[2].dy = -(float) robo1.dy;
leBytes(data, estado);
DatagramPacket packet = new DatagramPacket(cmd, 1);
socketRobo2.receive(packet);
if (cmd[0] == (byte) 0x88) {
packet.setData(data);
socketRobo2.send(packet);
// Thread.sleep(100);
} else {
System.out.format("%02x ", cmd[0]);
robo2.comando(cmd[0]);
Thread.sleep(20);
}
} catch (InterruptedException e) {
} catch (IOException e) {
e.printStackTrace();
}
}
}
Até mais e boas provas a todos.