DS "User Message"

The “User Message” on the Driver Station is just a string indicator, right?
Does it word-wrap and scroll like a normal string indicator, or does it have some processing on it to make it act like a primitive LCD text display?

I assume you mean the one on the overview page of the DS

IIRC, that one has a limit on how far text can go on and will cut it off with a … and not wrap

I tested and confirmed this with line 1.
Unfortunately, that makes it useless to me.
I guess I’ll just have to use the error messages window.

I’m making a CAN startup test, and want to send the results back to the driver. However, I’d rather not make anyone who uses this startup test have to fit this into their dashboard. I only plan to send the message once at the start of Autonomous Enabled.

If its your own message, then why can’t you make it fit within the length of the box?
You could use multiple lines.

Or, you could use this:

public class DriverStationLCDwWrap  {

    private static DriverStationLCD lcd = null;
    private static DriverStationLCDwWrap LCDw = null;//keep the singleton pattern going

    private DriverStationLCD.Line] lcdLines =
    {DriverStationLCD.Line.kMain6, DriverStationLCD.Line.kUser2,
     DriverStationLCD.Line.kUser3, DriverStationLCD.Line.kUser4,
     DriverStationLCD.Line.kUser5, DriverStationLCD.Line.kUser6};

    private DriverStationLCDwWrap()
        lcd = DriverStationLCD.getInstance();

    public static DriverStationLCDwWrap getInstance()
        if(LCDw == null)
            LCDw = new DriverStationLCDwWrap();
        return LCDw;

    public void updateLCD()

    public void println(String text)
        int length = text.length();
        int lines  = length / lcd.kLineLength;
        String blank = "                      "; // 21 spaces, clears the line.
        for(int i = 0; i < i < lcdLines.length; i++)
            lcd.println(lcdLines*, 1, blank); // Clear the all lines of previous text

        for(int i = 0; i < (lines + 1) && i < lcdLines.length; i++)
            int start = lcd.kLineLength*i;
            int end   = (start+lcd.kLineLength  >= length)? length : start+lcd.kLineLength;
            lcd.println(lcdLines*, 1, text.substring(start, end));
        updateLCD(); // call it since the the string has replaced the entire DS LCD buffer 

(note, this is character wrapping. Your message can and will be chopped off to a new line)
For example: println(“This is a very long message that will be split into several pieces”);
This is a very long m
essage that will be s
plit into several pie

I can’t because of the amount of information I’d like it to display. (If the startup test can’t figure out the issue, then it will return all the configuration and status information it has on the Jaguar. That’s a LONG message.)
However, I found a lovely subVI in “StartCommunication.vi” that is a functional global for the DS error messages, so I can write to that without having to evoke and error.
It’s called StatusErrorCache.vi.

Another option is to write a status message to the LCD (CAN Status: Pass/Fail). Then use the error messages to print all your detailed status when it failed.

We used the LCD for a lot of status messages in that manner, and it was very convenient for that.