Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
VEX Programming Software vary in complexity, platform, and supported VEX Competition micro controllers.
RobotC is an interpreted C-like programming language available for the VEX PIC and VEX Cortex.
Robot C is for the older VEX Cortex which is no longer supported.
VEX-Supported
Bytecode interpreted
Preemptive multitasking
Proprietary libraries
Works out-of-box, built-in IDE
Superseded by
RobotC is an interpreted C-like programming language available for the VEX PIC and . It offers real-time debugging and a relatively simple set of internal libraries mostly based on the use of (real or virtual) arrays.
Built-in debugger allows pausing and resuming user code and real-time monitoring of variables
IDE integrates firmware updates, code authoring, compilation, and flashing into one program
Primitive multi-tasking built in
Support available on website and from VEX
Interpreter emulates an 8-bit processor, substantially slowing user code and preventing any numerically intensive algorithms from being useful
Library abstracts many details and prevents advanced access or fine-tuning
Neither free nor open-source, and only works on Windows
(Purdue SIGBots)
Simple and easy to learn, no need for users to interest themselves with technical details
Array-like syntax can be confusing and is rife with opportunities for indexes out of bounds or overflow
Optimizer is poor and IDE is generally low-quality, with a fixed code style and terrible code completion
Flowol, Blockly, Python, C++ programming for VEX IQ, VEX Cortex and VEX V5
Robot Mesh Studio has been discontinued and will no longer be supported.
Robot Mesh Studio is a programming environment for V5 and more can be see on Robot Mesh's site. They have a popular mimic program which allows for a virtual V5 robot.
(Purdue SIGBots)
PROS Robotics Operating System (Yes it's recursive)
Platforms:
Windows
Linux
Features:
Open source
Native C/C++
Cross-platform
Integrated with VSCode
Developed by students
CLI Available
BLRS (Purdue SIGBots)
Open-source Rust runtime for VEX V5 robots.
vexide is a community-maintained no_std Rust runtime for VEX V5 robots. It allows you to write and run Rust code for the V5 Brain and control V5 devices like motors and sensors. You can think of it as an alternative to PROS or VEXcode, but for the Rust programming language (rather than C or C++).
vexide handles low-level operations like task scheduling, memory allocation, competition state, etc… allowing user code written on top of it to run seamlessly and fast. It heavily leans into Rust's async features for multitasking, providing its own lightweight cooperative scheduler for asynchonous operations.
Open source; no proprietary dependencies.
Cross-platform
Memory Safety
Minimal Runtime Overhead
vexide is available as a and can be added to an existing Rust project, but the recommended way to create a project is through .
(Auburn Robotics Club)
(Generals Robotics)
OkapiLib is a PROS library for programming VEX V5 robots. This library is intended to raise the floor for teams with all levels of experience.
New teams should have an easier time getting their robot up and running, and veteran teams should find that OkapiLib doesn't get in the way or place any limits on functionality.
It also helps to shorten some of the more repetitive parts of programming a robot out of the way for teams that have to start new code projects every season (Example: Operator Control Code, Main PID Algorithm)
Documentation for OkapiLib versions 3.x.x and below hosted on the PROS site:
(Purdue SIGBots)
EasyC is a programming language for the VEX Cortex.
EasyC is for the older VEX Cortex which is no longer competitve.
Error handling features for devices.
Supports compiling to WASM and running locally in a WASM simulator or QEMU emulator.
Graphics drivers for Slint and embedded-graphics.
Works with the cargo/crates.io package management/dependency ecosystem.
Dedicated cargo-v5 CLI tool for uploading.
Windows
macOS
Linux
Android (via termux)
VEX Supported
Native code compilation
32- and 64-bit types
Partial multitasking
Proprietary libraries
Works out-of-box, built-in IDE
Superseded by Midnight C
EasyC is a programming language for the VEX Cortex. It initially appears to sport a drag-and-drop interface designed for beginners, but hides a full C text editor and compiler underneath that can compile to native code for the Cortex.
Native code compilation (thus fast execution)
Built-in library is a good compromise between ease of use and granularity
VEX-supported with strong community following, especially among high school teams
IDE integrates firmware updates, code authoring, compilation, and flashing into one program
Extensive documentation and help files
Not all C features are available, including pointers and the standard library. However, the early versions of Midnight C are completely backwards-compatible with EasyC and unlock said functionality
Not free and works only on Windows
Advanced C editor has been somewhat neglected and does not feature code completion
Flash utility does not cooperate with powered programming adapters.
Low-level code performance poor, with buggy library functions and unpredictable timing
BLRS (Purdue SIGBots)
Platforms:
Windows
OSS (Partial)
The Midnight C platform, often referred to in the past as the "Makefile", is a cross-platform method of compiling native C code for the VEX Cortex.
Midnight C is for the older VEX Cortex which is no longer supported
Features -
Not VEX-Supported
Native code compilation
32- and 64-bit types
Partial multitasking
Uses Eclipse IDE
Interrupt control
Pointer and register control
Purdue Robotics OS
The Midnight C platform, often referred to in the past as the "Makefile", is a cross-platform method of compiling native C code for the VEX Cortex. It supplanted Robotc during VEX Gateway as the primary language for programming the Cortex. Initial versions used the EasyC runtime library to interface with VEX parts, making it fully EasyC compatible; the development of the Purdue Robotics OS brought a more powerful API compatible with a variety of existing environments.
Midnight C is compatible with Windows, Mac OS X, and Linux.
Firmware (Mastercode) reflashing for Midnight C is performed using the same procedure as reflashing EasyC firmware.
Uses the GNU GCC compiler for ARM
Can use any standard C syntax, library, data type, or function
Powerful, high-speed library implementation surpasses I/O and interrupt performance of even the EasyC library
Low-level access available to system registers, allowing the implementation of protocols such as or
Midnight-C IDE (based on the Eclipse IDE) handles routine compilation and upload tasks
Vast improvements in size and speed
Initial setup still needs work
Not supported by VEX
C++ support is also available; if a file is created with a .cpp extension, it will be compiled using arm-none-eabi-g++. The code used must have entry points from one of the built-in C files through a C++ function exposed via extern 'C' { ... }. Otherwise, any standard C++ construct or syntax can be used; the API header files have the appropriate declarations for use of the standard C functions. Beware of code size - while using C++ itself imposes only a small penalty, any function in the C++ standard library (e.g. new, std::) will often add 50-100 KB to the hex file.
Please note that object-oriented principles tend to encourage practices such as dynamic memory allocation and excessive indirection which may conflict with the embedded system goals of speed and program size. When possible, use C code.
BLRS (Purdue SIGBots)
VEXcode is VEX's software for programming V5 and VEX IQ products.
BLRS (Purdue SIGBots)