public void run() {
            while (m_run) {
                if (CommandBase.raspberryPi.isEnabled()) { //Checks for Thread to run
                    if (CommandBase.raspberryPi.isConnected()) {
                        report = true;
                        try {
                            String[] data = CommandBase.raspberryPi.tokenizeData(CommandBase.raspberryPi.getRawData()); //Get and examine Data
                            time = Timer.getFPGATimestamp(); //Timestamp used to check if data was updated from outside thread (through DataKeeper)
                            if (data.length < 2) { //Error Check
                                report = false; //If a remote was made
                            } else {
                                try {
                                    x = Integer.parseInt(data[0]);
                                    y = Integer.parseInt(data[1]); //Get data and parse it to proper data types
                                    width = Double.parseDouble(data[2]);
                                    height = Double.parseDouble(data[3]);
                                } catch (NumberFormatException ex) {
                                    report = false;
                                }
                            }
                        } catch (IOException ex) {
                            report = false;
                        }
                        DataKeeper.setReport(report);

                        if (report) { //Store Data in DataKeeper
                            DataKeeper.setX(x);
                            DataKeeper.setY(y);
                            DataKeeper.setWidth(width);
                            DataKeeper.setHeight(height);
                            DataKeeper.setTime(time);
                        }
                    } else {
                        try {
                            CommandBase.raspberryPi.connect();
                        } catch (IOException ex) {
                            DataKeeper.setReport(false);
                        }
                    }
                }
                try {
                    Thread.sleep(375); //Wait half second before getting Data again
                } catch (InterruptedException ex) {
                }
            }
        }