You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DroneDetector/scripts_nn/data_saver_epy_block_0.py

77 lines
2.7 KiB
Python

"""
Embedded Python Blocks:
Each time this file is saved, GRC will instantiate the first class it finds
to get ports and parameters of your block. The arguments to __init__ will
be the parameters. All of them are required to have default values!
"""
import numpy as np
from gnuradio import gr
import os
import time
import matplotlib.pyplot as plt
import sys
import gc
class Simsi_Sink(gr.sync_block): # other base classes are basic_block, decim_block, interp_block
"""Embedded Python Block example - a simple multiply const"""
def __init__(self, SaveDir="./signal", FileTag="fragment_", SplitSize=1000000, Delay=2): # only default arguments here
"""arguments to this function show up as parameters in GRC"""
gr.sync_block.__init__(
self,
name='Simsi_Sink', # will show up in GRC
in_sig=[np.complex64],
out_sig=None#[np.complex64]
)
self.Delay = Delay
self.FileTag = FileTag
self.SplitSize = SplitSize
self.SaveDir = SaveDir
if not os.path.exists(self.SaveDir) and self.SaveDir == "./signal":
os.mkdir("signal")
self.it = 0
self.Signal = np.array([], dtype=np.float32)
self.data_dir = SaveDir
self.last_file_path = self.data_dir + "/" + self.FileTag + str(self.it)
self.last_fd = open(self.last_file_path, "wb")
self.last_file_len = 0
self.reading_in_progress_file_path = self.data_dir + "/reading_in_progress"
self.reading_in_progress_file_fd = open(self.reading_in_progress_file_path, "wb")
print(self.Signal)
print(self.data_dir)
# if an attribute with the same name as a parameter is found,
# a callback is registered (properties work, too).
def work(self, input_items, output_items):
"""example: multiply with constant"""
length = len(input_items[0])
self.last_file_len += length
if self.last_file_len > self.SplitSize:
print("Saving file: " + str(self.last_file_path))
length = length - (self.last_file_len - self.SplitSize)
self.last_fd.write(input_items[0][0:length].copy())
self.it += 1
self.last_file_len = 0
self.last_file_path = self.data_dir + '/' + self.FileTag + str(self.it)
self.last_fd.close()
self.reading_in_progress_file_fd.close()
os.remove(self.reading_in_progress_file_path)
time.sleep(self.Delay)
self.reading_in_progress_file_fd = open(self.reading_in_progress_file_path, "wb")
self.last_fd = open(self.last_file_path, "wb")
else:
self.last_fd.write(input_items[0].copy())
return len(input_items[0])