Driverstation referencing

Id like to be able to get values from our driver station into my code so I can quickly change code through my driver station in Labview. I have tried using the new driver station blocks that we got this year in the update that sends code to the driver station but it won’t send values back to the code. Anyone have any ideas on how I can get values from the driver station to the code?

The picture below shows the values I want to use in my code.





You’ve made a number of additional tabs. In order to add the controls to the binding list, duplicate the dashboard code that is attached, but create the constant from your new tab datatype and append the arrays together before binding.

That will be enough to create variables on the robot that you can read from wherever you need them.

It would be a good idea to make the variable names unique. having eight Holder controls will likely be confusing.

Greg McKaskle

Clipboard 1.png


Clipboard 1.png

The holder dags are just place holders and will be changed or deleted before competition. Thanks for the help.

How do I append the arrays?

I an posting all I have so far so you can look at it. After it’s bundled and binded do I reference it in my code through some sort of SD Read?

2013 Dashboard Project.zip (256 KB)


2013 Dashboard Project.zip (256 KB)

The attached image collects references to the controls in Operation and in your tab. It combines them into a single array using the array builder, and those will then be bound to variables of the same name. In order to write this code, you will need to right-click and tell the array builder whether the 2 one dimensional arrays should be built into a longer 1-D array or a 2-D array. It default to 2-D, so right click and tell it to concatenate.

The other code you were writing outside of the loops will only run once. So the D Shifter Invert doesn’t do what you probably intended. If it is to be read each iteration of the loop, the terminal needs to be in the loop. I suspect that most of the other terminals won’t be used on the dashboard except for display, and simply need to be stacked on the side, where the Slider 1 and Checkboxes are.

Greg McKaskle

Clipboard 1.png


Clipboard 1.png

Ok I put everything where it should be and it should all be binded. When I reference it it my crio code do I side a SD write in the dashboard and a SD read in the crio code?

You can both read and write to the variable on the cRIO. You can both read and write to the variable on the dashboard.

Interactive edits to the value of the control will propagate to the variable.

The one case that will not propagate is if you write to a terminal or local of the control and want it to affect the variable. This is to avoid race conditions.

Greg McKaskle

Is their a read and write for clusters?

There isn’t one built in that I’ve found. You’ll need to unbundle the cluster and write each element separately, and you can bundle them back together at the other end if you want to. If you get fancy, I think you can use a name hierarchy, adding the cluster name and a slash in front of the element name, and get things to “cluster” together in the variable viewer.

Thank you Mr. McKaskle and Mr. Anderson for the help. This will make editing code at competition much fast.

As mentioned, SmartDashboard is very simple and doesn’t have clusters. It does have arrays, so if you look at how the motors and joysticks are done, the elements are put into an array of numbers and an array of Booleans and are broken apart when accessed. This trick isn’t something you have to do though. If you do it, you may find that converting from array to cluster and back is handy. But you can also do this by dropping and growing the Array Index node and the Build Array node.

Greg McKaskle

I have it so it gets binded, but when I try referencing the values it only gives me zero. Am I doing something wrong?

On the left is teleop on the right is the dashboard reference.

telop reference.PNG
Dashboard.PNG


telop reference.PNG
Dashboard.PNG

Have you tried to look at the variables tab to see if the writes are working? On the dashboard, you can click to the tab and scroll to see all variables and their current value.

Greg McKaskle

The variables tab works correctly yes but that’s getting variables from the code not sending variables to the code. Right?

The variables tab shows the current value of every variable in all network tables along with metrics on its usage. If it shows the correct value, that indicates the writes are working and the issue is with the reads, otherwise the first issue to resolve is that the writes are not working.

Greg McKaskle

I see them in the other order, but no matter.

Where are those wires heading upward in the dashboard code going, and what are they connected to? Is that part of the code inside a loop?

It was a different test I did I was bundling them then trying to send them that way to. I have sense removed it and just did each one individually.

Attached I have the driver station code and the code for Teleop where i reference it.

Code for review.zip (414 KB)


Code for review.zip (414 KB)

It looks like your Dashboard code does a SmartDashboard write for those values once when the program begins, then never does it again. If you want to use the SD Write functions, you’ll need to put them in a loop that runs as long as the values are required.

But you don’t need to use the SD functions with the LabVIEW Dashboard. An indicator or control on the Operations tab is automatically a SmartDashboard variable all by itself, and Greg showed you how to make things on other tabs work as well.