View Single Post
  #1   Spotlight this post!  
Unread 13-02-2010, 18:47
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
ZomB: a C# Drag and Drop Dashboard

Team 451 would like to share our ZomB Dashboard (Yes, you read that right, zombie) that we have been working on, and get some feedback. We have used this successfully for a few response testing, like ultrasonic (it looks good on a graph)

Pre-build controls: AnalogMeter, DataGraph(inspired by taskmanager), DirectionMeter, DistanceMeter, SpikeControl, RoundSpeedMeter, TacoMeter(Yes, it even has cheese), MessageDisplay, VarValue, OnOffControl, ColorFind(Totally misleading name, still testing)

There are 2 parts, the dashboard, and the robot files.
Requirements: Visual Studio 2008, .Net 2.0
Note: we use C++, but you can do this in java and LabView also, look at the bottom of this post for the format

The robot side files are ZDashboard.h and cpp, copy them into your project and add at the top of the main file #include "ZDashboard.h"
in your code, create a ZDashboard object , and initialize it.
Code:
class RobotDemo:public SimpleRobot
{
   //...
   ZDashboard ZomB;
public:
   RobotDemo():
      /* ... */ ZomB()
   {
      //...
   }
//...
Whenever you want to send some data to the dashboard, use the Add function, and then Send it off with the Send function
Code:
//...
void OperatorControl()
{
   while(IsOperatorControl())
   {
      ZomB.Add("controlName","controlValue");
      ZomB.Add("grph2",stick.GetY());
      ZomB.Send();
      Wait(0.02);
   }
}
//...
Now, Launch Visual Studio 2008 (express edition also works), and Open the Dashboard Solution, and open Form1 of the DefaultDash Project. Click on the control you want to have update, in our test case, the graph. Find the BindToInput and change it to what you specified in the code. Run both the Dashboard and the Robot and have fun!

Some notes:
THIS IS BETA!!! I am still working on bugs, the least tested feature is the VarValue control and the var and AddDebugVariable functions. please report any bugs
the .Net controls features are in the .Cat group. most have Max, Min, and Value.
DataGraphs cannot have a Min less that 0
Taco is pure fun
To see what each control does, open the test project (run it), click on a control, and move the slider at the top (EDIT: direction and analog meter barely move). onoff and spike are click state change, the thing in the lower right corner is a drag and drop sample, not related
to create a new Dashboard, make a new project, Reference System451.Communications.Dashboard.dll (in dash/System451.Communication.Dashboard/bin/Release folder), build the project. the controls will appear at the top of the toolbox, they are drag and drop. add 1 dashboardDataHub control. in the constructor (or a start button) add this code
Code:
dashboardDataHub1.AddDashboardControl(YourControls);
dashboardDataHub1.AddDashboardControl(AnotherControl);
dashboardDataHub1.StartRecieving();
It is Ready!

the Format of the strings, which can be Printf'd from the Dashboard class is
@@@451:|controlname=value|name=value|:451@@@
Attached Thumbnails
Click image for larger version

Name:	ZomB.png
Views:	379
Size:	91.4 KB
ID:	8650  
Attached Files
File Type: zip ZDashboard.zip (3.84 MB, 152 views)
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib

Last edited by byteit101 : 13-02-2010 at 18:51.