From anywhere in the component you can send messages to other components and send data. In order to let the component know to whom it has to send data, we introduce here the concept of observers.
An observer is a component that listens and thus receives data and start & stop commands. The observee is the component that sends data and commands. In order to specify you the observers, you have to set in the configuration the component IDs.
Specify observers
- Run your component and configure it. Herefore you need to have a Configure button on the GUI that sends a ConfigureMessage to itself. When you have overridden the Configure method, click on Configure Murmex to get that configuration panel. Otherwise you get the correct panel directly.
- On the right you have the current list of observers. It should be empty. Click on New to add a new observer to the list.
- new observer ID: sets the ID of the component that should receive the data.
- observe mode: sets if it should receive only complete data or all data.
- channels: sets which channels should be sent.
- queue type: uses RabbitMQ for sending over the internet reliably. Network Streaming Queue only for equal LabVIEW versions of the component and preferably on the same network.
- wait until done?: sets the status of the observer at the observee component to ‘not done’, until the component has sent back a ProceedMessage.
- All observers will receive automatically the data when you send the data. Also it will receive the Start and StopMessages automatically, when the observee receives such message. This can be enabled (by default) or disabled by the property ‘relay start and stop messages’.
Sending data
- Now let’s send some data. From anywhere you can send data. In this example we will send data from the Start method. In Murmex you can send the data in multiple channels and also of many different types of data. Every channels first has to be converted to variant and the array of variants is used as input. Mixed data types is allowed.
- Numeric values: U8, I8, U16, I16, U32, I32, U64, I64, SGL, DBL, EXT
- Strings
- Booleans
- Scalars, multidimensional arrays and waveforms
- That’s it. The sky is the limit with sending data. Keep in mind that if the server is not hosted locally, all data has to be sent over the network. In order to keep latency low, rather send many medium sized packages of data than a few mega large or thousands of tiny data structures.