This might be happening because "gr.file_sink" is not closing the passed file 
handle until its destructed. I checked "gr_file_sink_base"'s source and various 
functions like open, close and unbuffered writes are supported. Try playing 
around with these(I haven't used these things yet).

http://www.reynwar.net/gnuradio/sphinx/gr/sink_blk.html (Check gr.file_sink 
section)

 
---
Regards
Sreeraj Rajendran
http://home.iitb.ac.in/~rsreeraj



________________________________
 From: Nazmul Islam <mnis...@winlab.rutgers.edu>
To: GNURadio Discussion List <discuss-gnuradio@gnu.org> 
Sent: Monday, 6 August 2012 8:52 PM
Subject: Re: [Discuss-gnuradio] Dynamic flow graph control
 

Hi,

I am trying to simplify my previous email for clarification. I am looking to 
resolve the following issue:

I have two flowgraphs: 

1. USRP Source --> File Sink     #   self.file_sink = 
gr.file_sink(gr.sizeof_gr_complex*1, "Data.dat")
2. USRP Source --> Null Sink

I have defined both of them inside a class. I use unlock --> disconnect --> 
connect --> lock to switch from one flow graph to the other. When I connect 
USRP-->Null, I work on the stored data of "Data.dat" file. Thereafter, I want 
to clear the data of the "Data.dat" file. I use the following line of code to 
obtain my goal:

open("Data.dat",'w').close()  

However, this command does not seem to erase the data of "Data.dat" file, i.e., 
when I run flow graph 1 again, the previous file does not get erased. The file 
size of "Data.dat" keeps growing with each run of flow graph.

How can I erase the contents of the file sink before I switch to flow graph #1?

Any suggestion will be very appreciated. Sorry for sending two emails on the 
same matter.

Thanks,

Nazmul






On Sun, Aug 5, 2012 at 6:46 PM, Nazmul Islam <mnis...@winlab.rutgers.edu> wrote:

Hello,
>
>I have an application where I need to collect the data for 5 seconds from the 
>USRP source and do offline processing for 5 seconds in a repeated manner. I am 
>planning to use the lock & unlock features of the gnuradio to obtain my goals. 
>The major part of my code is given below:
>
>
>class SingleSource(grc_wxgui.top_block_gui):
>
>
>self.source = 
>.....                                                                           
> # Source block
>self.throttle = 
>......                                                                          
> # throttle
>self.file_sink = gr.file_sink(gr.sizeof_gr_complex*1, "Data.dat")            # 
>File Sink
>self.null_sink = 
>............                                                                   
># Null sink
>
>self.connect((self.source, 0), (self.throttle, 
>0))                                      
>self.connect((self.throttle, 0), (self.sink, 0))
>
> def reconf1(self):
>                self.disconnect((self.gr_throttle_0, 0),(self.gr_file_sink_0, 
>0))            # Disconnecting the throttle & the file sink
>                self.connect((self.gr_throttle_0, 0), (self.gr_null_sink_0, 
>0))               # re-connecting the throttle & the null sink
>
> def reconf2(self):
>                self.disconnect((self.gr_throttle_0, 0),(self.gr_null_sink_0, 
>0))             # disconnecting the throttle & the null sink
>                self.connect((self.gr_throttle_0, 0),(self.gr_file_sink_0, 
>0))                 # re-connecting the throttle & the file sink
>
>................................
>
>
>if __name__ == '__main__':
>
>    tb = SingleSource()
>        var = 1
>        
>tb.start()                                                                                  
> # Flow graph starts
>        for loop in range(0,2):
>                
>sleep(5)                                                                     # 
>Collects the data in the file sink
>                
>tb.lock()                                                                   
>                
>tb.reconf1()                                                         # 
>Flowgraph gets locked & reconfigured and unlocked
>                
>tb.unlock()                                                         # Now, 
>data is going to the null sink. I don't need this data
>                sleep(5)
>                 
>.................                                                # Offline 
>processing
>                open("SineData.dat",'w').close()                       # I 
>WANT TO ERASE THE DATA IN THE FILE SINK AFTER PROCESSING 
>                                                                                   
> # SO THAT THE FILE SIZE DOES NOT BIGGER
>                tb.lock()
>                tb.reconf2()                                       # File sink 
>is getting reconnected so that I can collect the data in the next run          
>            
>                tb.unlock()
>
>Now, the problem is: the file size of "SineData.dat" should not grow with each 
>loop since I am using open("SineData.dat",'w').close() . In each new loop, I 
>expect the file to only contain the latest information and not the previous 
>ones. However, I am finding that the file size keeps growing with each loop, 
>i.e., the open("SineData.dat",'w').close() command is not working.
>
>Any suggestion will be very appreciated.
>
>Thanks,
>
>Nazmul
>
>
>-- 
>Muhammad Nazmul Islam
>
>Graduate Student
>Electrical & Computer Engineering
>Wireless Information & Networking Laboratory
>Rutgers, USA.
>
>


-- 
Muhammad Nazmul Islam

Graduate Student
Electrical & Computer Engineering
Wireless Information & Networking Laboratory
Rutgers, USA.


_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to