TheTurtleofDoom
27-02-2014, 16:26
Hello, I am using roborealm to try and target the hotzone during autonomous, my sendsocket method or init mehtod is not working, I can not send the commands to the test socket server.
Driver-Station code
import java.io.FileReader;
import java.io.IOException;
import java.net.Socket;
import java.net.*;
import java.io.*;
/**
*
* @author rc10545
*/
public class Autonamous2014 {
int[] Cog_X = new int[9999];
//Creates the Cog_X array
int cogi = 0;
// controls Cog_X array
Boolean shoot, moveRight, moveLeft, terminate;
//controls what is passed to crio, and terminates the autonamus
PrintWriter out;
//Creates a variable that makess it easy to pass to Cro
public static void main(String args[]) throws IOException {
(new Autonamous2014()).runner();
// creates a runner object so that we can have cross method variables easily
}// method main
public void runner() throws IOException {
int Cogx;
// creates a variable that will become a simplified version of the int array"Cog_X"
shoot = false;
moveRight = false;
moveLeft = false;
terminate = false;
// sets the conrol booleans to false
init();
// makes the connection to the crio, not in loop/sendsocket so there is only one connection attempt per ruin of the program
while (terminate == false) {
cog();
//converts the text file into the int array "Cog_X"
Cogx = Cog_X[cogi];
// simplifies the int array "Cog_X" to a single int varaible "Cogx"
positioner(Cogx);
// the logic, determines what the robot should do based off of its int variable "Cogx" position in pixels, -----WILL NEED UPDDATING TO WORK PROPERLY WITH THE GOOD CAMERA!!!!-----
sendSocket();
//passes the commands to the Crio
}// while loop
}//method runner
public void init() {
byte[] ipAddr = new byte[]{10, 100, 72, 42};
//the Ip address array of the Crio
try {
InetAddress addr = InetAddress.getByAddress(ipAddr);
//converts the Ip address array into a usable IP adress
Socket socket = new Socket(addr, 55000);
//Tells it what socket to connect to on the Crio
socket.setSoLinger(false, 0);
//Tells it not to try to connect after the program has beeen closed down
out = new PrintWriter(socket.getOutputStream(), true);
//makes it so you can use the out.write("INSERT TEXT HERE"); command to pass info to the Crio
}/**
* try *
*/
catch (IOException e) {
System.out.println("Run the tcp server/Crio!");
//if someone is using this wrong, tells them what they need to do in relatively simple language
}//catch
}// method init
public void cog() throws IOException {
FileReader fr = new FileReader("c:/cygwin64/home/rc10545/variables");
// makes it so that the program can convert hte variable file into a char array; ---CHANGE IT WHEN THIS PROGRAM IS PUT ONTO THE DRIVERES STATION TO THE UPDATED FILE LOCATION!!!---
char[] a = new char[9999999];
//the char array that the file is read to
int i;
// contols the string array "tokens"
fr.read(a);
//updates/reads the text to char array "a"
String y = new String(a);
//turns the char array "a" into string "y"
String tokens[] = y.split("\r\n");
//splits the string vARIABLE "Y" down on every line break into string array "tokens"
i = tokens.length;
//Gets a variable for how long the string array "tokens" is
Integer convert = Integer.valueOf(tokens[i - 3]);
// converts the latest item in string array "tokens" into the int variable "convert"
Cog_X[cogi] = convert;
// puts the int variable "convert" into int array "Cog_X" for bugfixing purposes, int array "Cog_X" could be replaced by int variable "convert" with no problems
}//method cog
public void positioner(int Cogx) {
int remember = 0;
//remembers wether it has done the initial movement
if (remember == 0 && Cogx > 320) {
moveRight = true;
// sets the boolean variable "moveRight" to true, so in the sendSocket method it passess "goRight" to the crio
remember++;
// tells it that it has done the initial movement
} else if (remember == 0) {
moveLeft = true;
// sets the boolean variable "moveLeft" to true, so in the sendSocket method it passess "goLeft" to the crio
remember++;
// tells it that it has done the initial movement
}//does initial movement to bit right of the center of hotzone
if (remember == 2 && Cogx > 300 && Cogx < 330) {
shoot = true;
//tells it to shoot
} else if (remember == 1) {
remember++;
//makes sure it does not shoot while moving
}//shooter
cogi++;
//says that the latest index of int array "Cog_X" has been used
}//method positioner
public void sendSocket() throws IOException {
out.write("cookie");
//testing
out.flush();
// prevents ther from being a giant amount of text int the buffer by force sending it to the Crio
if (moveRight = true) {
out.write("goRight");
//tells the Crio to go right
} else if (moveLeft == true) {
out.write("goLeft");
// tells the Crio to shoot
} else if (shoot == true) {
out.write("fire");
// tells the Crio to shoot
//terminate = true;
// terminates the porgram, ---DISABLED FOR TESTING---
}
}//socket writer
}//class; and nope not 150 lines of code ~75 lines of commenting
Server(slightly modified) code
package tcp_server;
import java.io.*;
import java.net.*;
import java.security.*;
/**
*
* Title: Sample Server Description: This utility will accept input from a
* socket, posting back to the socket before closing the link. It is intended as
* a template for coders to base servers on. Please report bugs to brad at
* kieser.net Copyright: Copyright (c) 2002 Company: Kieser.net
*
* @author B. Kieser
* @version 1.0
*
* Comprehensive style changes made by shall 12/20/12
*/
/*page --------------------------------------------------------------------- */
public class Tcp_server {
private static int port = 55000;
private static int maxConnections = 10;
/* --------------------------------------------------------------------- */
/* LISTEN FOR INCOMING CONNECTIONS AND HANDLE THEM */
/* --------------------------------------------------------------------- */
public static void main(String[] args) {
int i = 0;
try {
ServerSocket listener = new ServerSocket(port);
Socket server;
while ((i++ < maxConnections) || (maxConnections == 0)) {
doComms connection;
server = listener.accept();
server.setSoLinger(false, 0);
doComms conn_c = new doComms(server);
System.out.println("GOT CONNECTION, CONNECTION COUNT [ " + i + " ]");
Thread t = new Thread(conn_c);
System.out.println("STARTING PROCESSING THREAD");
t.start();
} /* while((i++ < maxConnections) || (maxConnections == 0)) */
} catch (IOException ioe) {
System.out.println("IOException on socket listen: " + ioe);
ioe.printStackTrace();
} /* try / catch (ioe)*/
} /* main(String[] args) */
} /* class Tcp_server */
/*page --------------------------------------------------------------------- */
class doComms implements Runnable {
private Socket server;
private String line;
private String input;
/*page ----------------------------------------------------------------- */
doComms(Socket server) {
this.server = server;
} /* doComms(Socket server) */
/*page ----------------------------------------------------------------- */
public void run() {
input = "";
try {
/* ------------------------------------------------------------- */
/* GET INPUT FROM THE CLIENT */
/* ------------------------------------------------------------- */
DataInputStream in = new DataInputStream(server.getInputStream());
PrintStream out = new PrintStream(server.getOutputStream());
while ((line = in.readLine()) != null && !line.equals(".")) {
input = input + line;
out.println("RECEIVED:" + line);
} /* while ((line = in.readLine()) != null && !line.equals(".")) */
/* ------------------------------------------------------------- */
/* NOW WRITE TO THE CLIENT */
/* ------------------------------------------------------------- */
System.out.println("FULL MESSAGE IS:" + input);
out.println("OVERALL MESSAGE IS:" + input);
// server.close();
} catch (IOException ioe) {
System.out.println("IOException on socket listen: " + ioe);
ioe.printStackTrace();
} /* try / catch (ioe) */
} /* run() */
} /* class doComms */
There is no error message, but no data is passed to the socket server.
Driver-Station code
import java.io.FileReader;
import java.io.IOException;
import java.net.Socket;
import java.net.*;
import java.io.*;
/**
*
* @author rc10545
*/
public class Autonamous2014 {
int[] Cog_X = new int[9999];
//Creates the Cog_X array
int cogi = 0;
// controls Cog_X array
Boolean shoot, moveRight, moveLeft, terminate;
//controls what is passed to crio, and terminates the autonamus
PrintWriter out;
//Creates a variable that makess it easy to pass to Cro
public static void main(String args[]) throws IOException {
(new Autonamous2014()).runner();
// creates a runner object so that we can have cross method variables easily
}// method main
public void runner() throws IOException {
int Cogx;
// creates a variable that will become a simplified version of the int array"Cog_X"
shoot = false;
moveRight = false;
moveLeft = false;
terminate = false;
// sets the conrol booleans to false
init();
// makes the connection to the crio, not in loop/sendsocket so there is only one connection attempt per ruin of the program
while (terminate == false) {
cog();
//converts the text file into the int array "Cog_X"
Cogx = Cog_X[cogi];
// simplifies the int array "Cog_X" to a single int varaible "Cogx"
positioner(Cogx);
// the logic, determines what the robot should do based off of its int variable "Cogx" position in pixels, -----WILL NEED UPDDATING TO WORK PROPERLY WITH THE GOOD CAMERA!!!!-----
sendSocket();
//passes the commands to the Crio
}// while loop
}//method runner
public void init() {
byte[] ipAddr = new byte[]{10, 100, 72, 42};
//the Ip address array of the Crio
try {
InetAddress addr = InetAddress.getByAddress(ipAddr);
//converts the Ip address array into a usable IP adress
Socket socket = new Socket(addr, 55000);
//Tells it what socket to connect to on the Crio
socket.setSoLinger(false, 0);
//Tells it not to try to connect after the program has beeen closed down
out = new PrintWriter(socket.getOutputStream(), true);
//makes it so you can use the out.write("INSERT TEXT HERE"); command to pass info to the Crio
}/**
* try *
*/
catch (IOException e) {
System.out.println("Run the tcp server/Crio!");
//if someone is using this wrong, tells them what they need to do in relatively simple language
}//catch
}// method init
public void cog() throws IOException {
FileReader fr = new FileReader("c:/cygwin64/home/rc10545/variables");
// makes it so that the program can convert hte variable file into a char array; ---CHANGE IT WHEN THIS PROGRAM IS PUT ONTO THE DRIVERES STATION TO THE UPDATED FILE LOCATION!!!---
char[] a = new char[9999999];
//the char array that the file is read to
int i;
// contols the string array "tokens"
fr.read(a);
//updates/reads the text to char array "a"
String y = new String(a);
//turns the char array "a" into string "y"
String tokens[] = y.split("\r\n");
//splits the string vARIABLE "Y" down on every line break into string array "tokens"
i = tokens.length;
//Gets a variable for how long the string array "tokens" is
Integer convert = Integer.valueOf(tokens[i - 3]);
// converts the latest item in string array "tokens" into the int variable "convert"
Cog_X[cogi] = convert;
// puts the int variable "convert" into int array "Cog_X" for bugfixing purposes, int array "Cog_X" could be replaced by int variable "convert" with no problems
}//method cog
public void positioner(int Cogx) {
int remember = 0;
//remembers wether it has done the initial movement
if (remember == 0 && Cogx > 320) {
moveRight = true;
// sets the boolean variable "moveRight" to true, so in the sendSocket method it passess "goRight" to the crio
remember++;
// tells it that it has done the initial movement
} else if (remember == 0) {
moveLeft = true;
// sets the boolean variable "moveLeft" to true, so in the sendSocket method it passess "goLeft" to the crio
remember++;
// tells it that it has done the initial movement
}//does initial movement to bit right of the center of hotzone
if (remember == 2 && Cogx > 300 && Cogx < 330) {
shoot = true;
//tells it to shoot
} else if (remember == 1) {
remember++;
//makes sure it does not shoot while moving
}//shooter
cogi++;
//says that the latest index of int array "Cog_X" has been used
}//method positioner
public void sendSocket() throws IOException {
out.write("cookie");
//testing
out.flush();
// prevents ther from being a giant amount of text int the buffer by force sending it to the Crio
if (moveRight = true) {
out.write("goRight");
//tells the Crio to go right
} else if (moveLeft == true) {
out.write("goLeft");
// tells the Crio to shoot
} else if (shoot == true) {
out.write("fire");
// tells the Crio to shoot
//terminate = true;
// terminates the porgram, ---DISABLED FOR TESTING---
}
}//socket writer
}//class; and nope not 150 lines of code ~75 lines of commenting
Server(slightly modified) code
package tcp_server;
import java.io.*;
import java.net.*;
import java.security.*;
/**
*
* Title: Sample Server Description: This utility will accept input from a
* socket, posting back to the socket before closing the link. It is intended as
* a template for coders to base servers on. Please report bugs to brad at
* kieser.net Copyright: Copyright (c) 2002 Company: Kieser.net
*
* @author B. Kieser
* @version 1.0
*
* Comprehensive style changes made by shall 12/20/12
*/
/*page --------------------------------------------------------------------- */
public class Tcp_server {
private static int port = 55000;
private static int maxConnections = 10;
/* --------------------------------------------------------------------- */
/* LISTEN FOR INCOMING CONNECTIONS AND HANDLE THEM */
/* --------------------------------------------------------------------- */
public static void main(String[] args) {
int i = 0;
try {
ServerSocket listener = new ServerSocket(port);
Socket server;
while ((i++ < maxConnections) || (maxConnections == 0)) {
doComms connection;
server = listener.accept();
server.setSoLinger(false, 0);
doComms conn_c = new doComms(server);
System.out.println("GOT CONNECTION, CONNECTION COUNT [ " + i + " ]");
Thread t = new Thread(conn_c);
System.out.println("STARTING PROCESSING THREAD");
t.start();
} /* while((i++ < maxConnections) || (maxConnections == 0)) */
} catch (IOException ioe) {
System.out.println("IOException on socket listen: " + ioe);
ioe.printStackTrace();
} /* try / catch (ioe)*/
} /* main(String[] args) */
} /* class Tcp_server */
/*page --------------------------------------------------------------------- */
class doComms implements Runnable {
private Socket server;
private String line;
private String input;
/*page ----------------------------------------------------------------- */
doComms(Socket server) {
this.server = server;
} /* doComms(Socket server) */
/*page ----------------------------------------------------------------- */
public void run() {
input = "";
try {
/* ------------------------------------------------------------- */
/* GET INPUT FROM THE CLIENT */
/* ------------------------------------------------------------- */
DataInputStream in = new DataInputStream(server.getInputStream());
PrintStream out = new PrintStream(server.getOutputStream());
while ((line = in.readLine()) != null && !line.equals(".")) {
input = input + line;
out.println("RECEIVED:" + line);
} /* while ((line = in.readLine()) != null && !line.equals(".")) */
/* ------------------------------------------------------------- */
/* NOW WRITE TO THE CLIENT */
/* ------------------------------------------------------------- */
System.out.println("FULL MESSAGE IS:" + input);
out.println("OVERALL MESSAGE IS:" + input);
// server.close();
} catch (IOException ioe) {
System.out.println("IOException on socket listen: " + ioe);
ioe.printStackTrace();
} /* try / catch (ioe) */
} /* run() */
} /* class doComms */
There is no error message, but no data is passed to the socket server.