Go to Post If you don't manage weight from the beginning, weight will manage you at the end. - charrisTTI [more]
Home
Go Back   Chief Delphi > Technical > Programming > Java
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #6   Spotlight this post!  
Unread 02-18-2016, 04:46 PM
pblankenbaker pblankenbaker is offline
Registered User
FRC #0868
 
Join Date: Feb 2012
Location: Carmel, IN, USA
Posts: 102
pblankenbaker is a glorious beacon of lightpblankenbaker is a glorious beacon of lightpblankenbaker is a glorious beacon of lightpblankenbaker is a glorious beacon of lightpblankenbaker is a glorious beacon of light
Re: Network tables has already been initialized

Here is an stand alone example program I have been using (run as a Java application, not as a Robot program) that connects to our network tables, monitors and then clears the "SmartDashboard" entries.

If you are running your program outside of a robot project, then maybe the way we do our set up would apply to you as well.

Code:
package com.techhounds.dashboard;

import edu.wpi.first.wpilibj.networktables.NetworkTable;
import edu.wpi.first.wpilibj.tables.ITable;
import edu.wpi.first.wpilibj.tables.ITableListener;

/**
 * A utility to delete (clear) the SmartDashboard keys from the NetworkTable.
 * 
 * @author pkb
 */
public class ClearDashboard implements ITableListener {
	
	/**
	 * Entry point into the application.
	 * 
	 * @param args You can specify the IP address of the NetworkTable server to connect to on the command line. 
	 * 
	 * @throws InterruptedException If there is a problem accessing the SmartDashboard table.
	 */
	public static void main(String args[]) throws InterruptedException {
		ClearDashboard cd = new ClearDashboard();
		String defaultIp = "10.8.68.2";
		//String defaultIp = "127.0.0.1";
		String ipAddr = (args.length > 0) ? args[0] : defaultIp;
		
		NetworkTable.setIPAddress(ipAddr);
		NetworkTable.setClientMode();
		NetworkTable.initialize();
		NetworkTable table = NetworkTable.getTable("SmartDashboard");
		table.addTableListener(cd);
		table.addSubTableListener(cd);
		table.putBoolean("Cleared", false);
		// Give a bit of time to allow network fetch of keys to show up
		Thread.sleep(1000);
		deleteTableKeys(table, "", true);
		// Give a bit of time for network operations to flush out
		Thread.sleep(500);
		
		// Put value back (for testing)
		// table.putBoolean("Cleared", true);
	}

	/**
	 * Helper method to recursively delete NetworkTable key/value pairs.
	 * 
	 * @param table The NetworkTable to clear key/value pairs from.
	 * @param indent The leading indent (like: "  ") for printing out info.
	 * @param deleteTable Should we delete the table after clearing its children.
	 */
	private static void deleteTableKeys(ITable table, String indent, boolean deleteTable) {
		System.out.println(indent + table);
		indent += "  ";
		
		// Delete key/value pairs from table
		for (String key : table.getKeys()) {
			Object value = table.getValue(key, null);
			System.out.println(indent + key + " : " + value);
			table.delete(key);
		}
		
		// Process any sub-tables
		for (String key : table.getSubTables()) {
			ITable subTable = table.getSubTable(key);
			System.out.println(indent + key + " {");
			// Is it save to delete table entries (and if so should we delete children first?)
			deleteTableKeys(subTable, indent, true);
			System.out.println(indent + "}");
			if (deleteTable) {
			  table.delete(key);			  
			}
		}
	}

	/**
	 * Let's us know as values come in.
	 */
	@Override
	public void valueChanged(ITable table, String key, Object value, boolean flag) {
		System.out.println("table: " + table + "  key:" + key + "  value: " + value + "  flag: " + flag);
	}

}
Hope that helps.
Reply With Quote
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 08:28 PM.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi