NetworkTables not refreshing

I am using grip with networktables and I do not think I am setting it up properly. Here is my code:

package org.usfirst.frc.team2847.robot.subsystems;

import org.usfirst.frc.team2847.robot.RobotMap;
import org.usfirst.frc.team2847.robot.commands.JoystickDrive;

import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.command.PIDSubsystem;
import edu.wpi.first.wpilibj.networktables.NetworkTable;

/**
 *
 */
public class Drivetrain extends PIDSubsystem {

	// Initialize your subsystem here

	double] greenAreasArray = {};
	double] greenXArray = {};
	double] greenYArray = {};
	double] defaultValue = new double[0];

	double maxArea = 0;
	double greenX = 0;
	double greenY = 0;
	double offsetX;

	int arrayNum = 0;

	// create our drivetrain object
	RobotDrive myDriveTrain = new RobotDrive(RobotMap.frontLeftDrive, RobotMap.rearRightDrive);

	NetworkTable table = NetworkTable.getTable("GRIP/myContoursReport");

	public Drivetrain() {
		// Use these to get going:
		// setSetpoint() - Sets where the PID controller should move the system
		// to
		// enable() - Enables the PID controller.
		super("Drivetrain", RobotMap.kDriveP, RobotMap.kDriveI, RobotMap.kDriveD);
		setPercentTolerance(5.0);

		// viz

	}

	// Put methods for controlling this subsystem
	// here. Call these from Commands.

	public void initDefaultCommand() {
		// Set the default command for a subsystem here.
		setDefaultCommand(new JoystickDrive());
	}

	// make the method for our drivetrain
	public void manDrive(double leftValue, double rightValue) {
		myDriveTrain.tankDrive(leftValue, rightValue);
	}

	/*
	 * starts a counter and for each item in the number array compares it to the
	 * max value from before in the end of the loop we should have max = the
	 * biggest value in our array we do this to find out which contour is our
	 * target this should filter out any minor interference in the camera
	 */

	public boolean isContours() {
		table = NetworkTable.getTable("GRIP/myContoursReport");
		greenAreasArray = table.getNumberArray("area", defaultValue);
		if (greenAreasArray.length > 0) {
			System.out.println(greenAreasArray.length);
			return true;
		} else {
			System.out.println("no array");
			return false;
		}
	}

	public void findMaxArea() {
		if (isContours()) {
			System.out.println("Areas:");
			for (int counter = 0; counter < greenAreasArray.length; counter++) {
				if (greenAreasArray[counter] > maxArea) {
					maxArea = greenAreasArray[counter];
					arrayNum = counter;
					System.out.println(greenAreasArray[counter]);
				}
			}
			System.out.print(maxArea);
		}
	}

	public void updateArea() {
		findMaxArea();
	}

	public void useCenter() {
		this.updateArea();
		if (isContours()) {
			greenXArray = table.getNumberArray("centerX", defaultValue);
			greenYArray = table.getNumberArray("centerY", defaultValue);
			greenX = greenXArray[arrayNum];
			greenY = greenYArray[arrayNum];
		}
	}

	public double offsetCalc() {
		this.useCenter();
		offsetX = 320 - greenX;
		return offsetX;
	}

	protected double returnPIDInput() {
		// Return your input value for the PID loop
		// e.g. a sensor, like a potentiometer:
		// yourPot.getAverageVoltage() / kYourMaxVoltage;
		return greenY;
	}

	protected void usePIDOutput(double output) {
		// Use output to drive your system, like a motor
		// e.g. yourMotor.set(output);
		double go;
		go = (output * 0.50);
		if (offsetCalc() > 0) {
			this.manDrive(go * (greenX / 320), go);
		} else if (offsetCalc() < 0) {
			this.manDrive(go, go * (greenX / 320));
		} else {
			this.manDrive(go, go);
		}

		System.out.println(go);
	}
}

I currently use a button to call the PID, but my area array doesnt update. Its always 1001.1. How am I supposed to set up the NetworkTable, as a server, do I need to give it an IP? I am using Outline viewer server to view the GRIP tables right now, but how do I replicate that in my code to update.

Possibly related, I currently have the GRIP SmartDashboard plugin, I have a contour drawn on my screen and it is stuck and not updating. Could this be part of the issue?

I rebooted the computer, now the GRIP extension doesn’t display the frozen info on the screen, but if I open outline viewer I can see the NetworkTable is filled with information. When I run my code and try to output the contents of the table, my code instead says that the array is empty. How do I point the NetworkTable to localhost?

Well it looks like I’m just talking to myself here, but if anyone else stumbles upon this, the issue is, GRIP can push the values to localhost, but network tables only reads the roboRIO-2847-FRC.local, so the fix is pointing GRIP at the roboRIO not localhost. Also make sure to put NetworkTable.setServerMode() in the robotInit().

MY Team is ALSO having the same problems, only with a Raspberry PI.

We can see the NetworkTables in the LabView dashboard, but according to the code on our RoboRio, our “GRIP” Table does not exist.

We also tried sending the values to a Sub-Table, and just writing the variables in the SmartDashboard table.

No matter where we put them, the LabView dashboard COULD see them, and our RoboRio code COULD NOT.

Any help would be fantastic, our team is completely stumped.