All pages
Powered by GitBook
1 of 9

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

VEX Programming Software

VEX Programming Software vary in complexity, platform, and supported VEX Competition micro controllers.

RobotC

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.

Details:

  • 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.

Features

  • 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

Shortcomings

  • 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

Teams Contributed to this Article:

  • (Purdue SIGBots)

Simple and easy to learn, no need for users to interest themselves with technical details

Lack of support for objects, dynamic allocation, wide integers, or interrupts severely limits code capabilities
  • 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

  • Midnight C
    VEX Cortex
    VEX sensors
    BLRS

    Robot Mesh Studio (RMS)

    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.

    Teams Contributed to this Article:

    • (Purdue SIGBots)

    PROS

    PROS Robotics Operating System (Yes it's recursive)

    PROS is Open Source C/C++ Development for VEX V5 and VEX Cortex made by SIGBots. To learn more about PROS head over to the

    Platforms:

    • Windows

    BLRS
    macOS
  • Linux

  • Features:

    • Open source

    • Native C/C++

    • Cross-platform

    • Integrated with VSCode

    • Developed by students

    • CLI Available

    Teams Contributed to this Article:

    • BLRS (Purdue SIGBots)

    PROS Website

    vexide

    Open-source Rust runtime for VEX V5 robots.

    For more in-depth documentation and tutorials on vexide, head over to their website.

    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.

    Platforms:

    Features

    • 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 .

    Teams Contributed to this Article:

    • (Auburn Robotics Club)

    • (Generals Robotics)

    OkapiLib

    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 the latest version is hosted on the Okapi website: Current OkapiLib Docs

    Documentation for OkapiLib versions 3.x.x and below hosted on the PROS site:

    Teams Contributed to this Article:

    • (Purdue SIGBots)

    EasyC

    EasyC is a programming language for the VEX Cortex.

    EasyC is for the older VEX Cortex which is no longer competitve.

    Hardware-optimized VFPv3 Math Operations
  • 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)

    library on crates.io
    vexide-template
    AUBIE2
    FRC 3636
    Older OkapiLib Docs
    BLRS

    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.

    Features

    • 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

    Shortcomings

    • 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

    Teams Contributed to this Article:

    • BLRS (Purdue SIGBots)

    Platforms:

    Windows

    OSS (Partial)

    Midnight C

    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

    Jitter

    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.

    Installation

    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.

    Features

    • 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

    Shortcomings

    • Initial setup still needs work

    • Not supported by VEX

    Object-oriented programming

    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.

    Teams Contributed to this Article:

    • BLRS (Purdue SIGBots)

    VEXcode

    VEXcode is VEX's software for programming V5 and VEX IQ products.

    VEXcode is VEX's own programming software for V5 and VEX IQ products, more can be seen on . VEXcode V5 Text is the version that is commonly used in competitive VEX.

    Note: There was an older version of this known as VEX Coding Studio (VCS) that has been discontinued by VEX.

    SPI
    I2C
    Teams Contributed to this Article:
    • BLRS (Purdue SIGBots)

    VEX's Website