Medium Pins used Inclusion
System memory NA #include <PJONLocalFile.h>

LocalFile uses a file present on the hard drive to let multiple processes communicate on the same machine. It can be used for inter-process communication and for developing, simulating and testing applications and networks on a real time operative system without having to deploy physical hardware.


Before including the library it is possible to configure LocalFile using predefined constants:

Constant Purpose Supported value
LF_POLLDELAY Poll interval Duration in milliseconds (20 by default)
LF_FILENAME Name and location of the file used as medium Duration in microseconds (1500 by default)
LF_QUEUESIZE Size of the packets queue > 0 (20 by default)

Use PJONLocalFile to instantiate a PJON object ready to communicate using LocalFile strategy:

  #include <PJONLocalFile.h>

  PJONLocalFile bus(44); // Use device id 44

After testing or simulation you may want to use conditional compiling and exchange this strategy with the actual one on your target hardware.

The directory examples/LINUX/Local/LocalFile/PingPong contains examples. To build these on Linux, simply type "make". To build on Windows, open the solution file in Visual Studio 2017.

Reading messages is based on polling. The poll interval in milliseconds is defined by the pre-processor definition LF_POLLDELAY. Decreasing this value will increase the communication speed but also use more CPU and cause more disk activity.

The strategy uses a file where messages are persisted. A queue of the last messages is kept there, with the queue size set by the pre-processor define LF_QUEUESIZE.

Known issues

  • Will create the file PJONLocalFile.dat in the parent directory. This file can be deleted when your client is not running. The name and location of the file can be specified using the pre-processor define LF_FILENAME which is ../PJONLocalFile.dat by default.

This document is automatically generated from the github repository. If you have noticed an error or an inconsistency, please report it opening an issue here
Updated on 06 November 2020 at 19:21:02