Issues with retrieving NetworkTables

When we try to retrieve NetworkTables our driver station code crashes with the error:

Unhandled exception: java.lang.IllegalStateException: Network tables has already been initialized

The code on the coprocessor is:


NetworkTable.setIPAddress("59.40");
NetworkTable table = NetworkTable.getTable("Vision");
table.putNumber("Test Value", 8);

Then the code on the driver station is:


NetworkTable.setClientMode();
NetworkTable.setIPAddress("59.40");
table = NetworkTable.getTable("Vision");
SmartDashboard.putNumber("Test Value", table.getNumber("Test Value", 0));

We think it has something to do with NetworkTable.setClientMode() because when we remove that line it doesn’t crash but we are not able to retrieve the number.

Remove the setIPAddress line on the robot, and make sure on the client you set the IP address to the mDNS address of the robot - roborio-5940-FRC.local.

I made the suggested changes and it still has the same error.

Are you calling the setClientMode/setIPAddress/getTable calls repeatedly? They should only be called once on robot initialization.

When we delete all of the lines of the robot code except for NetworkTables.setClientMode() it still crashes.

I am sure we are not calling it twice.

Just a quick update. On the coprocessor, I ran table.isConnected(), and it returned false.

I was able to fix the problem. NetworkTable.setServerMode() is automatically done in the robot code which causes the code to crash if you call NetworkTable.setClientMode().

I removed NetwokTable.setClientMode() from the robot code and put it on the coprocessor instead. I also moved NetworkTable.setIpAddress() to the coprocessor.