Error on using network tables from smartdashboard.

Hello, I am trying to send some simple double values from the smart dashboard to the robot the problem is the data does not appear to be recieved and I get a flood of messages from the network tables such as the ones below.

connection state: GOT_CONNECTION_FROM_CLIENT
edu.wpi.first.wpilibj.networktables2.server.ServerConnectionAdapter@14f entered
connection state: SERVER_ERROR: class
edu.wpi.first.wpilibj.networktables2.connection.BadMessageException: Unknown Network Table Message Type: 12
Close: edu.wpi.first.wpilibj.networktables2.server.ServerConnectionAdapter@14f

The Code I use is as follows


SmartDashboard Code
------------------------------
public static NetworkTable table;
public int network=0;
public WPIImage processImage (WPIColorImage image)
{
    if (network==0)
    {
     NetworkTable.setIPaddress("10.4.86.2");
     table = NetworkTable.getTable("camera");
     network=1
      }
      table.putDouble("AREA", 2);

}

Robot Code
------------------------------
public static NetworkTable cameraTable = NetworkTable.getTable("camera");

function()
{
System.out.println(cameraTable.getNumber("AREA",-1);
}

The above code displays the previous error and -1(the default output)
Any help is much appreciated.

I believe you have to actually create a table called camera before you can try to get anything from it. I don’t have access to the javadocs for the NetworkTable right now.

The description in the java doc for getTable() is

Gets the table with the specified key. If a table does not excist, a new table will be created. This will automatically initialize network tables if it has not been already.

to mean that means that no seprate creation is nessasary, but if im wrong how do i create one?

The actual error appears to be “Unknown Network Table Message Type: 12”

I actually was on the wrong track then. It is an issue with communicating using table “camera” probably when you are trying to retrieve a number or it could be when you put the number in.

Perhaps someone else more experienced can help you, I am trying to guess the most likely errors.

I have been trying to find a solution using what you said but I still cant figure out what is wrong.

You put in a number under the key of “area” but you try to retrieve with the key “RED_AREA” try changing “RED_AREA” to “area” when you use getNumber()

Oh sorry that was a miss type in the post. In my actual code they are the same. Sorry for the confusion.

If I had to guess, I’d say your smartdashboard code is using Network Tables Version 1, while the cRIO is running a Network Tables 2 server.

Is there any documentation specifically for using NetworkTables2 yet? I noticed the documents for NT on screensteps are still empty.

Yes I believe this is the error which you will get if the smart dashboard is running the old version of Network Tables.
You can go here to get the latest version of SmartDashboard which uses NetworkTables2
http://wpilib.screenstepslive.com/s/3120/m/7932/l/93058-smart-dashboard-standalone-vision-installer

Thanks for everyones’ input. I have re-installed the dashboard and no longer get the error. However the data is still not sent from the dashboard to the network tables. I have used the NetworkTable Viewer to determine that the Robot communicates with the Network Tables just fine, but the dashboard seems unable to. I used the code below on the robot to put and retrieve values and this works just fine.

NetworkTable.getTable("MyTable").putDouble("AREA", 5);
System.out.println(NetworkTable.getTable("MyTable").getNumber("AREA",-1));

I have had no success repeating this on the dashboard however. If someone could post some SmartDashboard network table code from this season using the new crio image and new SmartDashboard I would very much appreciate it. :smiley:

You have to put values using the SmartDashboard class
For example http://wpilib.screenstepslive.com/s/3120/m/7932/l/81106-displaying-expressions-from-within-the-robot-program
SmartDashboard only looks at a single table in networktables so that you can use other tables to send data to other programs but not have it show up on the SmartDashboard

You can also find more info on the SmartDashboard here http://wpilib.screenstepslive.com/s/3120/m/7932

I might be wrong, but I thought the SmartDashboard class could only be used on the robot not in the dashboard itself(don’t have it in front of me at the moment)
I am trying to send data from the dashboard to the robot not the other way around. Should I use a table called “SmartDashboard” would that work?

Sorry I misunderstood your question. You should be able to do Robot.getTable() to get the SmartDashboard table from the plugin.

Thank you! that did it.

Mitchell, are there any plans for a tutorial on creating a SmartDashboard widget, like there was last year?

I believe so. We just haven’t gotten to adding it to screenstepslive yet. if you want some examples you can look at the basic widgets that are included with SmartDashboard. There were a few changes in the NetworkTables API but beside that it is the same as last year.

I have a question. When you say SmartDashboard code and Robot Code, where are those? We are very confused as to how you connect RoboRealm to SmartDashboard and what code you need everywhere.

Thanks!

Could you post your code? Network Tables is probably the least-documented important feature atm, and it would be nice to have something to work from.

Best I could find for documentation on Network Tables. Robot to driver station networking | WPILib programming | 2014 FRC Control System

I seem to remember very recently someone posting a link to the specification, but for the life of me I can’t find it.