Filename using time-stamp in GRC

He all-

is there a way to implement a button controlling a record-to-file
function where the filename is generated instantly from the current time
stamp? I can do this manually in python as follows (taken from a
previously existing gnuradio code):

    #
    # Recording file, in case we ever need to record baseband data
    #
    self.recording = gr.file_sink(gr.sizeof_float, "/dev/null")
    self.recording_state = False
    # Filename prefix for recording file
    self.prefix = options.prefix

    # We come up with recording turned off, but the user may
    #  request recording later on
    self.recording.close()

.
.
.

self.connect (self.source, self.recording)

.
.
.

    # Data recording control
    buttonbox = wx.BoxSizer(wx.HORIZONTAL)
    self.record_control = form.button_with_callback(self.panel,
          label="Recording Data: Off 

",
callback=self.toggle_recording)

    buttonbox.Add(self.record_control, 0, wx.CENTER)

.
.
.

#
# Turn recording on/off
# Called-back by "Recording" button
#
def toggle_recording(self):
    # Pick up localtime, for generating filenames
    timestamp = time.localtime()

    # Generate filenames for both data and header file
    filename = "%04d_%02d_%02d_%02d:%02d:%02d.dat" % 

(timestamp.tm_year, timestamp.tm_mon,
timestamp.tm_mday, timestamp.tm_hour,
timestamp.tm_min,timestamp.tm_sec)

    # Current recording?  Flip state
    if (self.recording_state == True):
      self.recording_state = False
      self.record_control.SetLabel("Recording Data: Off 

")
self.recording.close()
# Not recording?
else:
self.recording_state = True
self.record_control.SetLabel("Recording Data to: "+filename)

      # Cause gr_file_sink object to accept new filename
      #   note use of self.prefix--filename prefix from
      #   command line (defaults to ./)
      #
      self.recording.open (self.prefix+filename)

Thanks!
eric

If you created a custom block in python that would do the right thing as
far as writing the file and handling the data; then you could use the
variable chooser (button) or variable text box (string input) to
generate the event.

-Josh

On Thu, Jan 20, 2011 at 5:41 PM, [email protected] wrote:

[Discuss-gnuradio] GRC selector audio sink error

If so, will this approach work if I upgrade via git?

Hi Eric,

The problem with this simple example is that the variable containing

“prefix + datetime.now().strftime(”%Y.%m.%d.%H.%M.%S") + “.bin”

is evaluated when you start the script, so it will only work for a
single file per execution. I believe it is for the same reason that
you see no file with your modification: The file sink is initialized
with /dev/null as filename and it can not change the file name during
runtime because the required code for “close file, set new file name,
open new file” is not generated by GRC - I am not exactly sure about
this but it should be obvious if you look in the generated code. I
would try to do as Josh said in the other mail, implement the required
code yourself and embed it as a custom block.

Alex

— On Wed, 1/19/11, [email protected] [email protected] wrote:

existing gnuradio code):
self.prefix = options.prefix

self.record_control =

def toggle_recording(self):
timestamp.tm_hour, timestamp.tm_min,timestamp.tm_sec)

Thanks!
eric

Following up on this, I found this site that had some useful
suggestions:http://www.oz9aec.net/index.php/gnu-radio/grc-examples

A grc example is provided that implements a dynamic time stamp, but NOT
a button to control it. So I am trying to use a Variable Chooser to
select between “/dev/null” and the filename that is based on the
time-stamp. However, nothing is generated. In particular, I have:

A file sink with File: recfile
A Variable with ID prefix with Value “./”
A Variable Chooser with ID: recfile, Default Value: “/dev/null” and
Choices of “/dev/null” or “prefix +
datetime.now().strftime(”%Y.%m.%d.%H.%M.%S") + “.bin”

I was hoping this would dynamically create a file with the current time
stamp for the name, but no files are actually being generated. Could
this be and issue related to a bug that is described in the link below?

http://lists.gnu.org/archive/html/discuss-gnuradio/2011-01/msg00080.html

If so, will this approach work if I upgrade via git?

Thanks!
eric

— On Thu, 1/20/11, Alexandru C. [email protected] wrote:

useful suggestions:http://www.oz9aec.net/index.php/gnu-radio/grc-examples
“/dev/null” and

If so, will this approach work if I upgrade via git?
is evaluated when you start the script, so it will only
sure about
this but it should be obvious if you look in the generated
code. I
would try to do as Josh said in the other mail, implement
the required
code yourself and embed it as a custom block.

Alex

Thank you all.

Eric