diff options
author | Nao Pross <np@0hm.ch> | 2021-12-03 22:19:57 +0100 |
---|---|---|
committer | Nao Pross <np@0hm.ch> | 2021-12-03 22:19:57 +0100 |
commit | 2d02a9787d3bbd7320f23a3c65ee8e8ed0369c1e (patch) | |
tree | daa5c17d4315f2660508d27202a156b215691084 /src/gr-fadingui/python/netsink.py | |
parent | Remove frequency LPF and clean up (diff) | |
download | Fading-2d02a9787d3bbd7320f23a3c65ee8e8ed0369c1e.tar.gz Fading-2d02a9787d3bbd7320f23a3c65ee8e8ed0369c1e.zip |
Replace DearPyGui Sink with Network Sink
Diffstat (limited to '')
-rw-r--r-- | src/gr-fadingui/python/netsink.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/gr-fadingui/python/netsink.py b/src/gr-fadingui/python/netsink.py new file mode 100644 index 0000000..9df81f5 --- /dev/null +++ b/src/gr-fadingui/python/netsink.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2021 Sara Cinzia Halter, Naoki Pross. + +import socket +from urllib.parse import urlparse + +import numpy as np +from gnuradio import gr + +class netsink(gr.sync_block): + """ + Sink that sends the data over the network using UDP. + Keep in mind that is quite slow. + """ + def __init__(self, address, dtype, vlen): + gr.sync_block.__init__(self, + name="Network Sink", + in_sig=[], + out_sig=None) + + # Create a socket and parse remote machine url + self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.url = urlparse(sock_addr) + self.srv = (self.srv.hostname, self.srv.port) + + def send(self, data): + """ + Send the data to self.srv + + @param data Data as python bytes + @return Number of bytes that were actually sent + """ + assert type(data) == bytes + return self.socket.sendto(data, self.srv) + + def encode(self, data): + """ + Encode the data into a dead simple format + + @param data Array like type + @return Bytes of ASCII encoded comma separated string of numbers + """ + # no data (what are you doing?) + if not data: + return bytes() + + values = "[" + ",".join(map(str, data)) + "]" + return bytes(values, "ascii") + + def work(self, input_items, output_items): + inp = input_items[0] + + # TODO: Check that inp has a reasonable size + self.send(self.encode(inp)) + + return len(input_items[0]) + |