discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] How to create a python block


From: Chris Kuethe
Subject: Re: [Discuss-gnuradio] How to create a python block
Date: Wed, 16 Mar 2016 14:40:35 -0700

Here's one example of a block implemented in python
https://github.com/drmpeg/gr-paint/pull/4/commits/6f3356c9816402961e75082f0ab9aa5b5b0eb338

Perhaps you want something like Tim O'Shea's lambda blocks?
https://oshearesearch.com/2015/05/23/gnu-radio-message-lambda-blocks/

Balint does strange any wonderful things with "Any" blocks:
http://wiki.spench.net/wiki/GRC_Any_Blocks

Hopefully one of these does what you need.
-C

On Wed, Mar 16, 2016 at 2:34 PM, Dennis Glatting <address@hidden> wrote:
> On Wed, 2016-03-16 at 16:58 -0400, James Humphries wrote:
>> Hi Dennis,
>>
>> Have you seen these:
>>
>> https://gnuradio.org/doc/doxygen/page_python_blocks.html
>>
>> and
>>
>> http://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorial_GN
>> U_Radio_in_Python
>>
>> They have some good info on how to setup your Python block.
>>
>
> This is where I am confused, not being a Python hack. I didn't want to
> create the graph by connecting things together in a python script, such
> as:
>
> src = blocks.vector_source_f (src_data)
> mult = multiply_py_ff (2)
> snk = blocks.vector_sink_f ()self.tb.connect (src, mult)
> self.tb.connect (mult, snk)
>
> Rather I wanted the python block to be part of the GUI run graph.
> Specifically, my graph looks like this:
>
>
> Rx -> Demod C++ ------> MITM ---> Mod C++ -> Tx
> ^       ^               ^  ^        ^        ^
> |       |               |  |        |        |
> --------|               |  |        |        |
> Controls                |  |        |        |
>                         |  |        |        |
> Fixed extensions--------|  |        |        |
> Python extensions ---------|        |        |
>                                     |        |
> Controls ---------------------------|--------|
>
> My thinking is within the properties field of a block a person could
> type some python code where the block imports the code and runs it.
> Sounds like that isn't the workable approach? (The MITM block has
> canned messages and fixed manipulations based on GUI controls, which is
> fairly limiting as a penetration test tool.)
>
> When I looked at some examples I saw either C++ blocks or Python blocks
> but the python code created the whole graph itself.
>
> I think what you are telling me (and looking through the web pages) is
> I could have an ugly, fixed C++ MITM block /and/ a separate python
> block (i.e., two MITM blocks) with the python block part of the build,
> or both could be incorporated into the python block for a better
> design. Yes?
>
> Sorry, I'm not a python hack so it isn't evident to me.
>
> TIA.
>
>
>> -Trip
>>
>> On Wed, Mar 16, 2016 at 4:51 PM, Dennis Glatting <address@hidden>
>> wrote:
>> > This is probably a dumb question but someone has to ask them...
>> >
>> >
>> > I have a run graph with c++ blocks: a receiver block, a transmitter
>> > block, and a manipulator block. I want to have the manipulator
>> > block
>> > editable from the run graph where the user can insert python code.
>> > Specifically:
>> >
>> > 1) The block has two message ports: an "in" port and an "out" port.
>> >
>> > 2) A user can write and type python code into the block to
>> > manipulate
>> > the message received on the input port and post the manipulated
>> > message
>> > on the output port.
>> >
>> > 3) The python code may have to call other functions, such as
>> > updating a
>> > hash code.
>> >
>> > How might I do that? I could do a c++ wrap around exec() but I
>> > believe
>> > there has to be an easier way since GNURadio is a combination of
>> > python
>> > and c++.
>> >
>> > The incoming messages arrive at a low frequency and a low data rate
>> > so
>> > I'm not really concerned about processing time.
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Discuss-gnuradio mailing list
>> > address@hidden
>> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>> >
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



-- 
GDB has a 'break' feature; why doesn't it have 'fix' too?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]