TcMenu is a modular, IoT ready multi level menu library for Arduino, mbed, Pico-SDK, mbed and many more 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:
Using Tc menu library:
Desktop version of the menu designer
You can use PicoSDK without requiring Arduino framework at all. The opensource version of IoAbstraction supports PicoSDK directly for nearly all cases. Our direct support generally works via CMake, and the starting point for these builds is our CMake based project in the cmakeProject directory. If you're using this commercially, please contact us for commercial support.
We can support other platforms such as ESP-IDF and STM32 using this approach commercially.
We have tested the designer application and embedCONTROL on a Raspberry PI, so not only can you make a Raspberry PI embedded application, you can even run designer and embedCONTROL on an RPI as well! The Java API and EmbedControl libraries are fully JavaDoc commented.
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.
Introduction - Java Remote control The Java API contains domain and state objects that represent the items in your application along with the current value of that item. Whether used locally or remotely you use a menu tree to represent items. Whichever way, the menu structure accurately represents the structure in designer, because the Arduino embedded menu designer uses this...
Within TcMenu designer there is a bitmap creation utility, it can take most common file formats as its source, and convert them to a format suitable for use in tcMenu (and many other libraries too). The bitmap creation utility is located in the "Code->Bitmap/Widget creation tool". It can create header files for bitmaps or title widgets to either the clipboard or...
In this guide we cover code generation in more detail. Once a menu structure has been built it needs to be turned into code. To do this we use the code generator (menu: "Code -> Generate code"). Once selected a dialog similar to the one below will be presented. At this point we need to define the devices that we plan...
In the theme plugin properties you can often select the font to use. However, there are a few points to bear in mind when using fonts. Here are the key points: Most graphical plugins (other than Uno specific) support TcUnicode, a font rendering system that has full Unicode UTF-8 support. These fonts can be easily created in the designer UI, see...
Sometimes the input or rendering capabilities of the built in plugins may suit your purposes, or your hardware may not be supported. In these cases it is possible to either write a custom renderer from scratch, or more likely generate a new in the case of a graphical device. This article assumes you are customising an input or display renderer...
Like any library, we occasionally need to make changes to the way that things work, this makes the library more viable going forward, and often provides major improvements in what's possible for nearly everyone. However, sometimes we need to deprecate features so that it reduces the support burden, we do this as infrequently as possible, and try and give users long...
Embed Control local area transmissions use a protocol called TagVal with the option of sending binary data too. TagVal is a simple and lightweight protocol that has implementations on device for Arduino and mbed, and developer APIs in Java , Javascript , Python , DotNet , and Dart is coming soon. If you are working in a language where an API...
We've added a new fluent menu builder to the library. This builder provides a more intuitive and readable way to construct menus, making it easier for developers to create complex menu structures without requiring the many static definitions of the past. We've added this builder because on most machines with moderate sized menus, the overhead of this method is relatively low....
Action menu items represent a menu item that does nothing more than run the callback when it is selected. There is no hard requirement for it to have a callback, but one without a callback would have no purpose. Type information for ActionMenuItem Class type: / in MenuItems.h Enum returned by is MENUTYPE_ACTION_VALUE This item is based on...
An item type that represents a color in the Red Green Blue space, optionally also having an Alpha. Colors are represented as values between 0 and 255 for each part and optionally an additional part for Alpha. Type information for Rgb32MenuItem Type: with default callback of in Enum returned by is MENUTYPE_COLOR_VALUE This item is based on RuntimeMenuItem...