The PROS of PROS

You probably can with v5.
It is possible to open the v5 smart ports as serial connections, and it is also possible to use the v5 usb as a serial output.

I use PROS and it’s very nice but there are some very annoying issues…

Stuff that annoys me

My favorite is: on my team’s laptop if I start uploading and unplug the wire during the upload I get an error message; the problem is that the close button is off screen, you can’t scroll, or just click enter. What I have to do is rotate the screen so that it is big enough to display the whole error message (rip if you have this issue and your screen is still too small), and then since most of the time the touch screen doesn’t work, I need to move the mouse (horizontal moves it vertically and vertical moves it horizontally) to the close button. Also I am not sure but I think this is not an issue directly with PROS.

Another one is the build and the upload buttons. The build buttons builds it and then just hides the results. The upload doesn’t have an option for the program slot. All these issues aren’t present if you add a terminal panel and build/upload using that (Including the one with the error message beacuse it just displays it in the terminal).

Also I don’t like how you PROS has to have all those files in the project. They could easily store them somewhere else and only have the src files.

Also apparently when implementing LVGL PROS removed most of the fonts to make the upload size smaller.

Another problem with LVGL is for some reason the first element (specifically a button on a page) cannot be move down. It can be solve by first adding an invisible element. Does anyone know why this happens and/or is just an issue with my code?

This is probably just be an issue with my team’s old laptop but sometimes intellisense stops working until I restart PROS.

All that aside PROS is a very good option. All the things I have listed are minor issues/bugs.
PROS uses C++, it has LVGL, there is very good intellisense, haven’t used it but PROS has hot/cold linking for uploading through the controller, and features that come with atom.

Also here a tutorial on how to use LVLG.

Good feedback. However, each of these issues have a solution.

Solutions

1.Building and uploading process
I don’t like using the buttons. They are slow, and the experience with the warnings and such is not optimal. It creates a new terminal tab each time you click, and the errors are sometimes not easy to read.
However, the buttons are meant for beginners, and I rarely use them. It is so much easier to open a terminal, type prosv5 mut, and you are done. The error is in one place, and when you want to redownload, you go Ctr-C (abort terminal), Up key, and Enter, and you are done. It is much faster too.
I use the atom package platformio-ide-terminal and simple cmd.
Pro tip: Navigate to a folder in Explorer, then type cmd in the path bar. It will open cmd with the proper directory. You can also run any other command like git.
Last thing, you can control the linger time of the compile warnings so it does not disappear by going into settings->Packages->Terminal Tab Plus

2.Source files
I really like having those. It is not a hassle to manage, and it provides a good reference for available functions. It is just the way it is supposed to work. Header files are very important. It also gives the linter information.

3.LVGL
Sure, they compiled lvgl into pros without some fonts, but I think we can agree it was for a good reason. However, nothing is stopping you from simply going to the lvgl github and copying the fonts into your project, you can even create your own. This is also a thing https://github.com/HotelCalifornia/libfonts

Your issue with the first lvgl element is an issue with your code, it has not happened to other people. You sure you are creating a new object with the screen as the parent?

4.linter (intellisense)
Yeah, the linter sometimes has trouble keeping up, but it’s not pros fault. They are buggy and only meant to predict your errors anyways.

4 Likes

@theol0403

I don’t want to sound rude but what about the first one.

Yes I said it can all just be done in the terminal.
However if the buttons had better functionality they would be more convenient to use.

For the source file; They take up room and they could just be stored once in the program files, and some easy way to look through them in pros, but it is a very minor complaint.

Yeah, I guess I agree.

For the issue with the first LVGL element I add it to the page element and I can’t find any errors in my code. I don’t have access to a brain right now, but when I do I will test it. My program is large and most likely I missed something.

It is mostly likely failing simply because my team has a slow old laptop, and it’s not really pros’s fault. The intelligence is very nice though. When you type it shows the options and has descriptions (which are just comments in the header files). It also shows the description when you hover over stuff. And you can ctrl click to jump the the header files. It is actually a bit harder to program without it.

Thanks for your feedback.

I think we are on the same page.
I didn’t answer the first question as I believe you that it is a bug, but can be avoided by using the CLI to compile, which is honestly the better experience anyways. Improving the buttons would be good though.

The thing that makes a pros project a pros project is all the files inside it. The pros kernel is in contained in it, everything that makes it a project is in there, all the compile scripts, the files for pros to compile, the support files. The rest of the pros install is just the gcc compiler (with headers and c++ library) and the CLI. Pros literally just runs gcc on your project, and all the information is there. All the header files are there, everything belongs to the project. This is how most real-world code is. All the libraries a project uses comes with the project, so you don’t have external dependencies.
It is better this way, for functionality and management reasons, but also I think it is nicer.
It would be annoying to transfer code to someone else’s computer and realize their version of pros has an older version of LVGL or something, and a change you did to your makefile did not apply to another computer.
Yep, the linter is very nice, but can be inconsistent.

6 Likes

My VEXU Team uses PROS with Git, which seems to have served us well. I would definitely recommend using git to any team that doesn’t already since having your code backed up and sharable is very convienient. In fast, I’d say that all VEXU teams where someone knows at least some coding should use PROS, especially if they are using custom sensors.

2 Likes

This behavior is configurable. If you go to Settings > Packages, search for terminal-tab-plus and click “Settings,” you can set the default timeout for the terminal tab to be longer (or set it to never disappear with -1).

In the latest version of the PROS Editor (or with the latest CLI and Atom package), you can change the slot when uploading using the menu: PROS > Upload Project will open a dialog with various options.

5 Likes

We are always evaluating- I don’t understand your comment about RMS. Can you expand?

It has similar languages, one of the languages is identical to VCS C+ +. The interface is much nicer because it looks like somebody actually put some thought into how a piece of software should function.

1 Like

If I’m not mistaken RMS has the most options - Blockly, C++, JavaScript, and Python.

VCS has C++ only, right? What does PROS have? Just C++?

But PROS has some really cool added features

Like? I believe both RMS and PROS do wireless download (big miss for VCS, it has VCS come out with it?)

PROS has industry-standard C and C++ support.

VCS has two different C++ APIs (with several caveats compared to PROS’s implementation) in addition to Modkit. VCS is generally not recommended for a number of reasons. VEXcode should be used instead if the VCS C++ API is desired.

RMS indeed has the greatest variety of options. RMS C++ is not quite identical to VCS C++, but the vast majority of the API is indeed the same.

3 Likes

For me, PROS is the best choice right now for sorta to very experienced programmers right now because it IMO unlocks everything V5 has to offer (as of RN), supports add-on libraries, and has as @Barin said, amazing support.

RMS does offer the widest range of options for different people’s experience programming though, I agree with you on that

1 Like

PROS has OkapiLib and LVGL built-in. OkapiLib is a general-purpose library that simplifies various tasks.

LVGL is a standardized graphics and GUI library. PROS has implemented LVGL for the screen on the Brain. As an added benefit to incorporating LVGL, emulation software is available so you can develop graphics without physically needing the screen on the Brain.

PROS also has the best documentation as far as I’m aware, in addition to proper support for literally any IDE you might want to use (RMS now has this support too).

3 Likes

I mean, VEXcode and VCS are also industry standard C and C++, it’s hard not to be when you use clang as the compiler and provide standard C and C++ libraries.

PROS and VEXcode use different user APIs to access the V5 hardware, but underneath they are both using essentially the same SDK to access vexos.

This is high level system architecture.

v5_system_arch

8 Likes

from what I hear, I’ll probably be using either VexCode or RMS next year. I’m sort of a beginner, seeing as all I’ve done is simple robotC, which is why I’m not choosing pros. It seems super powerful, but not beginner friendly. I’m not completely inept at coding though, I know many other languages, but I’ll be new to C++. Which is better, RMS or VexCode? or is Pros still a viable option for someone like me?

2 Likes

This

2 Likes

I don’t recall exactly since I haven’t done any V5 programming myself, but I thought there were caveats with multi-file support or something.

I was aware that VCS and VEXcode use Clang, though.

VCS only supports editing a single source file, but you are still writing standard C and C++.

VEXcode removes that limitation, you can pretty much do anything you want, including running LVGL if you want.

4 Likes