Python Block Message Passing: Difference between revisions
Mattcarrick (talk | contribs) |
Mattcarrick (talk | contribs) |
||
Line 29: | Line 29: | ||
* Select, or [https://en.wikipedia.org/wiki/Multiplexer multiplex], one of two input signals based on a receive message | * Select, or [https://en.wikipedia.org/wiki/Multiplexer multiplex], one of two input signals based on a receive message | ||
* Count the number of samples and send a message to the multiplexing block to switch inputs | * Count the number of samples and send a message to the multiplexing block to switch inputs | ||
Start by adding the following blocks to the flowgraph and connecting them: | |||
* Noise Source | |||
* Signal Source | |||
* ''Throttle'' | |||
* '' | |||
== PMT == | == PMT == |
Revision as of 16:11, 24 January 2022
The previous tutorial, Creating Your First Block, demonstrates how to create a Python block using the Embedded Python Block. The next tutorial, Low Pass Filter Example, demonstrates how to use filtering blocks in GNU Radio.
Message Overview
Messages are an asynchronous way to send information between blocks. Messages are good at conveying control data, maintaining a consistent state across blocks and providing some forms of non-data feedback to blocks in a flowgraph.
Messages have a couple unique properties:
- There is no sample-clock based guarantee when messages will arrive
- Messages are not associated with a specific sample like a tag
- Message input and output ports do not have to be connected in GRC
- Message ports use the Polymorphic Type (PMT)
Message ports are denoted by a grey color and their connections are distinguished by dashed lines:
Starting the Message Passing Flowgraph
The following flowgraph will demonstrate how to:
- Add message sending and receiving ports to Python blocks
- Transmit messages
- Receive and handle messages
- Adapt block behavior in the work() function based on a received messages
Two custom Embedded Python Blocks will be created to:
- Select, or multiplex, one of two input signals based on a receive message
- Count the number of samples and send a message to the multiplexing block to switch inputs
Start by adding the following blocks to the flowgraph and connecting them:
- Noise Source
- Signal Source
- Throttle
PMT
describe basic PMT types
link against other PMT pages
Creating a Message Output Port
- saving code 'compiles' the python and error messages are displayed the EPB window
- message ports do not have to be connected like stream/vector ports
The next tutorial, Low Pass Filter Example, demonstrates how to use filtering blocks in GNU Radio.