discuss-gnuradio
[Top][All Lists]
Advanced

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

[Discuss-gnuradio] High Data rate File Sink dropped data


From: Jason Thomas
Subject: [Discuss-gnuradio] High Data rate File Sink dropped data
Date: Mon, 1 Aug 2011 07:24:11 -0700

I am trying to record data directly from a UDP stream to file. I have four channels at 1.2MHz sample rate the code is below. Basically it opens a UDP source and connects to a file sink. However, It is losing data when writing to the file. If I stream a signal with a one second burst the spacing is not correct. Also, I have another c++ program that reads the UDP packets and records directly to file, and there are no lost UDP packets nor lost data with this program. Also I have checked that the UDP packet size is less than 1472, it is currently at 1024 bytes.

Is there a way to see if file_sink is not able to handle that data rate, or to see if the UDP source cannot keep up?


#!/usr/bin/env python

from gnuradio import gr
from gnuradio.wxgui import waterfallsink2, stdgui2, fftsink2,scopesink2
import wx
from optparse import OptionParser
from gnuradio.qtgui import qtgui
import os
import time
import thread
import threading

class gnuradioGUI(stdgui2.std_top_block):
        def __init__(self,frame,panel,vbox,argv):
                stdgui2.std_top_block.__init__(self,frame,panel,vbox,argv)
               
                self.sr = 1200000
                self.channels = 4
                self.FileLength = 5 #seconds of data in each file
                self.filenum = -1
                self.baseName = "udp_1k."
                self.file_increment()
                self.ipAdd = "192.168.100.178" #the ip of this computer
                self.port = 3456
                self.bufSize = self.channels*4096


                self.signal = gr.udp_source(gr.sizeof_short,self.ipAdd,self.port)

                self.Update()
               
                self.thread = threading.Thread(target=self.FileThread)
                self.thread.start()

        def Update(self):
                self.lock()
                try:
                        self.disconnect(self.signal,self.dest)
                except:
                        print "could not disconnect"
                self.file_increment()
                self.dest = gr.file_sink(gr.sizeof_short,self.saveFile)
                self.connect(self.signal,self.dest)
                self.unlock()
               


        def FileThread(self):
                while 1:
                        time.sleep(self.FileLength)
                        self.Update()

        def file_increment(self):
                self.filenum = self.filenum + 1
                self.saveFile = self.baseName + "%d"%self.filenum
                print "writing to file:  " + self.saveFile
               

if __name__ == '__main__':
        app = stdgui2.stdapp(gnuradioGUI,"CAIS signal using GNU Radio GUI")

        parser = OptionParser()
        parser.add_option("-w", "--file", dest="filename",
                        help="write data to FILE", metavar= "FILE")
        (options, args) = parser.parse_args()

        app.MainLoop()

        os._exit(1)


CONFIDENTIALITY NOTICE:This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message.



reply via email to

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