Chat-like HMI for embedded Rust applications and PLCs
RFlow is a part of RoboPLC project.
The idea
Many of embedded applications and PLC programs do not have any human-machine interface and not supposed to have one by design.
However, sometimes it is very useful to have a simple way to interact with the application, e.g. for debugging purposes or having a basic emergency interface in production.
RFlow provides the most possible lightweight way to have a chat-like interface between the application (server) and its clients, which does not affect the application real-time run-flow and consumes minimal system resources.
The RFlow protocol is fully text-based and can be used with no special client.
MSRV: 1.68.0
Clients
-
RFlow Chat - a dedicated RFlow chat client (terminal).
-
Custom clients, built with the crate
ClientAPI. -
Any terminal TCP client, e.g.
telnet,nc.
A very basic example
use ;
use interval;
Locking safety
Note: the asynchronous client uses parking_lot_rt locking only.
By default, the crate (both the server and the client modules) uses parking_lot for locking. For real-time applications, the following features are available:
-
locking-rt- use parking_lot_rt crate which is a spin-free fork of parking_lot. -
locking-rt-safe- use rtsc priority-inheritance locking, which is not affected by priority inversion (Linux only).
Note: to switch locking policy, disable the crate default features.
About
RFlow is a part of RoboPLC project.