TcMenu is a modular, IoT ready multi level menu library for Arduino, ESP32-IDF, Pico-SDK, STM32Cube and mbed platforms supporting many input, display and IoT / remote interfaces. It makes presenting configuration, status and operational information much easier. Apache licensed and therefore safe for commercial use.
Start by working out what information and state is to be represented in the Designer UI. Take inspiration from the Arduino menu examples. Then, run Code Generator which outputs code for the selected board ready for use in an IDE.
Web based menu designer:
We've done our best to provide examples and starters for every board and API that we support. Including examples for using menus directly on STM32Cube and PicoSDK.
You can use STM32Cube, PicoSDK, and mbed without requiring the Arduino framework at all. We have example menu projects that build directly against STM32Cube and PicoSDK with highly impressive performance. Our direct support generally works via CMake using vendor-provided best practice.
See the examples section further up as it has links to the repositories for STM32Cube, PicoSDK, and ESP32-IDF.
Our menu designer can build in IoT capabilities near automatically (on Ethernet2, UipEthernet (ENC28J60), ESP8266-WiFi, ESP32-WiFi, Bluetooth, and Serial). Allowing you to remotely monitor and control your device using Embed Control with minimal effort.
However, to write your own remote monitoring, use our Java Remote API, TypeScript/JavaScript API, C#/DotNet API, or the Python API. Coming soon is a Dart API.
All types of MenuItem can have an INFO block, which is a structure that can be stored in FLASH that represents the static data for an item. This is because all items directly extend from the MenuItem class, they always have a reference to an AnyMenuInfo block that's stored in program memory on devices that support it. In addition to this,...
Items that extend from runtime menu item use a callback at runtime that can be used to get more or less every property, but will use the INFO block if it is available (not null). That being the case, they don't need but can use an info block (that is defined ahead of time) ahead of time. However, in...