embedded-multi-page-hmi

Crates.ioembedded-multi-page-hmi
lib.rsembedded-multi-page-hmi
version0.3.1
sourcesrc
created_at2021-09-09 07:47:05.908341
updated_at2021-10-01 19:14:44.873654
descriptionMulti page HMI targetting embedded devices with a few of buttons input and a constrainted display
homepagehttps://github.com/almedso/embedded-multi-page-hmi
repositoryhttps://github.com/almedso/embedded-multi-page-hmi
max_upload_size
id448769
size115,549
Volker Kempert (volker-kempert)

documentation

https://docs.rs/embedded-multi-page-hmi

README

Embedded Multi-Page HMI

crates.io docs.rs license rustc [CI status

An embedded page oriented HMI library supporting a few buttons as input and a constraint display as output on embedded devices.

Capabilities

  • Predefined Input Models using two, three, four or five buttons or a rotary switch.
  • Adaptable to different constraints displays: E.g.
  • Declarative page structure specification and page transition specification
    • Multiple information pages
    • Continuous page updates and page system triggered page transitions
    • Dedicated startup/ shutdown pages
    • Setting menu, submenu and edit pages

Usage

Add this to your Cargo.toml:

[dependencies]
embedded-multi-page-hmi = "0.2"

Checkout the example how to specify page structures and interaction.

Example

A documented demonstration of all capabilities is maintained as an example in this crate. The example application runs on windows, linux and OSX in a terminal using the pancurses crate.

You can run the example as follow (assuming you have rust installed):

# Get this repository from github
git clone https://github.com/almedso/embedded-multi-page-hmi.git

cd embedded-multi-page-hmi
# Build and run the example
cargo run --example simulate-on-host

License

This project is licensed under

Contribution

Feel free and join for contribution.

Checkout DESIGN-NOTES.md for design issues and design decisions.

Future Work

  • Edit page for select 1 of many
  • Edit page for select multiple of many (list of binary flags)
  • Provide examples on raspi with four-button epaper shield
  • Move to no-std
    • Replacement for Box with trait objects e.g. RefCell? in page manager
    • Provide example on stmf32 with two-buttons and 16x2 alpha-num display
Commit count: 34

cargo fmt