Setting Pictures as covers for programs

how do you set the cover of a program to be a different picture?

vex shows it in the pictures of the brain on the website

but there doesnt seem to be a way to do it in VEXcode V5 pro.

I asked this question a couple years ago, and the answer was you can’t. I haven’t seen any indication that this has been added since then, but @jpearman will know…

3 Likes

yea, we sort of changed out minds on this one. We show different icons based on the program source, but don’t allow selection by end user. There is an unofficial way to change the icon that was posted a while back, but the choices are so limited it’s really not worth messing with it, all you would do is confuse tech support of you changed, for example, the icon we use in VEXcode for Python to the PROS icon or something.

4 Likes

So there are no plans to implement this in the future then, correct?

There is a guide for doing so that was posted a while back.

3 Likes

perhaps one day, but it’s not planned at this time.

The icons are part of vexos, so to be able to select alternatives they would first need to be added to vexos as part of an update. There are no plans (and never have been) to allow an actual png or jpg image to be downloaded, all that was to be offered was selection from a preset list.

4 Likes

Sorry to bug you @jpearman , but I just had a question:

Are there any plans to add any extra functionality to the controller or brain screens?

It was mentioned previously that adding widgets to the controller screen was not a priority:

Setting program logos has been mentioned in this thread.

Granted, the screens already have a good amount of power to them. The text interface for the controller is useful, and the brain screen has a powerful number of functions for drawing. You’ve demo’ed LVGL in VexCode. I was really just curious if there were plans to add any more functionality.

3 Likes

regarding widgets on controller screen.
There has been no recent discussion about this, it’s still low priority.

Just as explanation, it seems a simple request but there would need to be a whole bunch of things that would need to be done.

  • decide what widgets would look like,
  • create the code for drawing the widgets on the controller screen
  • create new messages for the brain to select widgets and send values
  • add new API to access the new controller messages
  • add new API to the VEXcode SDK
  • add new API to the partner developer SDK
  • VEXcode would need updating with new API, blocks etc.
  • Communicate with the PROS team, RobotMesh and Mathworks to have them update the SDK and add new API
  • regression test everything

so a whole bunch of work for firmware and App developers, it takes a lot of time.

Are there any plans to add any extra functionality to the controller or brain screens?

What would you want on the brain screen ?

In terms of dashboards, every one we add gets a little more complex and we have been back to revisit some of the early ones and refresh them. Here is the latest GPS dash.

gps_dash_user

gps_8

gps_5

For user programs, that’s up to you. I had expected someone by now to provide some nice C++ classes on top of VEXcode to draw standard useful things like buttons and gauges, but I’ve not heard of any. LVGL is ok, but steep learning curve and every version they release seems to have breaking changes. I’ve not updated my projects for LVGL 8 yet, they changed their business model a while back and seem to release far more often now, it’s hard to keep up.

4 Likes

Is there documentation on how one would create a library in VEXcode and then include that library in other projects?

1 Like

It’s pretty straight forward in VEXcode V5 Pro, but I guess that assumes you understand makefiles etc. and how gcc links libraries. (you will need to show build files in the preferences dialog).

to build the library, with a new project created I would remove all VEXcode generated files and create my own source and headers, for example, lets say I created a file demolib.cpp and demolib.h in src and include folders. project may look like this.
(I’ll attach projects at the end)

add code to demolib.cpp, there is no need for a main function.

now change the makefile to build a static library.
add this line to name the library

# override default library name
PROJECTLIB = libdemo

then change the build target from an executable to a library here.

# build targets
all: $(BUILD)/$(PROJECTLIB).a

that’s all that’s required, build the project and libdemo.a will be created in the build directory.

To use the library in another project, copy the header into the include directory, copy the library (libdemo.a) into a suitable place, I made a “lib” folder in the new project and placed it there.

project structure will be as follows.

include the header and use library functions, in this case I defined one function called drawRoundRectangle (no particular reason for that function, just some old code I had).

now the project will still not build as we have to tell the linker to link the library

open mkenv.mk and edit to add the new library (add -ldemo)

# libraries
LIBS =  --start-group -lv5rt -lstdc++ -lc -lm -lgcc -ldemo --end-group

and tell the linker where it is by adding the folder here. (add -L"lib")

TOOL_LIB  = -L"$(TOOLCHAIN)/$(PLATFORM)/gcc/libs" -L"lib"

now project should build and download (unless I forgot something)

note: these projects were saved with an old version of VEXcode, do not update them when asked !

V5_staticlib.zip (11.3 KB)
V5_demo.zip (13.3 KB)

4 Likes

for a more complex example, see my LVGL demo here.

This builds the lvgl library and also some test code for the library in a single VEXcode project by making changes to the build files.

3 Likes