A description of how the generic networking functionality was created and how it works
The core functionality (hse-gennet.lvlib
) and the GenNet reuse modules (GenNet-Server.lvlib
and GenNet-Client.lvlib
) are part of the HSE Reuse Collection. That way, we can easily use them in all of our projects.
This project - the GenNet Examples repository - is a showcase of how the generic, reusable gennet libs can be used in actual projects or with actual DQMH modules. It contains examples of modules using the generic networking functionality but the GenNet VIs and modules are actually maintained as a separate project in their own repository.
All the GenNet reuse code - GenNet-Client
and GenNet-Server
modules as well as the hse-gennet.lvlib
- are installed via the HSE Core: GenNet VI Package.
The Generic Networking project aims to integrate network communication into DQMH in a way that is generically reusable and has no module- or project-specific dependencies. This means that the networking functions are oblivious to the actual datatype and content of the messages that are passed on, and network communication can happen totally transparent to both the user and the DQMH module itself. The Generic Networking project also implements network communication in a way that allows for enabling and disabling that feature during runtime.
All of this is achieved by:
GenNet-Client
module) and for receiving requests via ethernet (by the GenNet-Server
module) which can be used by any DQMH modulehse-gennet.lvlib
, a collection of generically reusable VIs When we use the term “Generic-Networking-enabled”, we mean overriding the default DQMH Message Queue class and making a number of modifications to the DQMH module:
Delacor_Lib_QMH_Message Queue.lvclass
Start Module.vi
Start Module.vi
This example shows a Generic-Networking-enabled module. The identical module (i.e. the same source code) is running in two separate applications:
GenNet-Client
module to do that. GenNet-Server
module to do that.The following part discusses the flow of data for a Request and Wait for Reply that is called on the local side but actually executed on the remote side.