⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usrp_tv_rcv.py

📁 这是用python语言写的一个数字广播的信号处理工具包。利用它
💻 PY
📖 第 1 页 / 共 2 页
字号:
        elif process_type=='do_nullsink':          #self.connect (self.src, self.am_demod,self.invert_and_scale,f2uc,video_sink)          c2r=gr.complex_to_real()          nullsink=gr.null_sink(gr.sizeof_float)          self.connect (self.src, c2r,nullsink) #video_sink)        elif process_type=='do_tv_sync_corr':          frame_size=width*height #int(usrp_rate/25.0)          nframes=10# 32          search_window=20*nframes           debug=False          video_alpha=0.3 #0.1          corr_alpha=0.3          tv_corr=gr.tv_correlator_ff(frame_size,nframes, search_window, video_alpha, corr_alpha,debug) #Note: this block is not yet in cvs          shift=gr.add_const_ff(-0.7)          self.connect (self.src, self.agc,self.am_demod,tv_corr,self.invert_and_scale, self.set_blacklevel,f2uc,self.dst) #self.agc,        else: # process_type=='do_test_image':          src_vertical_bars = gr.sig_source_f (usrp_rate, gr.GR_SIN_WAVE, 10.0 *usrp_rate/320, 255,128)          self.connect(src_vertical_bars,f2uc,self.dst)        self._build_gui(vbox, usrp_rate, usrp_rate, usrp_rate)           if abs(options.freq) < 1e6:            options.freq *= 1e6        # set initial values        self.set_gain(options.gain)        self.set_contrast(self.contrast)        self.set_brightness(options.brightness)        if not(self.set_freq(options.freq)):            self._set_status_msg("Failed to set initial frequency")    def _set_status_msg(self, msg, which=0):        self.frame.GetStatusBar().SetStatusText(msg, which)    def _build_gui(self, vbox, usrp_rate, demod_rate, audio_rate):        def _form_set_freq(kv):            return self.set_freq(kv['freq'])        if 0:            self.src_fft = fftsink.fft_sink_c (self, self.panel, title="Data from USRP",                                               fft_size=512, sample_rate=usrp_rate)            self.connect (self.src, self.src_fft)            vbox.Add (self.src_fft.win, 4, wx.EXPAND)        if 0:            post_demod_fft = fftsink.fft_sink_f (self, self.panel, title="Post Demod",                                                  fft_size=512, sample_rate=demod_rate,                                                  y_per_div=10, ref_level=-40)            self.connect (self.am_demod, post_demod_fft)            vbox.Add (post_demod_fft.win, 4, wx.EXPAND)        if 0:            post_filt_fft = fftsink.fft_sink_f (self, self.panel, title="Post Filter",                                                 fft_size=512, sample_rate=audio_rate,                                                y_per_div=10, ref_level=-40)            self.connect (self.set_blacklevel, post_filt)            vbox.Add (fft_win4, 4, wx.EXPAND)                # control area form at bottom        self.myform = myform = form.form()        if not (self.u is None):          hbox = wx.BoxSizer(wx.HORIZONTAL)          hbox.Add((5,0), 0)          myform['freq'] = form.float_field(            parent=self.panel, sizer=hbox, label="Freq", weight=1,            callback=myform.check_input_and_call(_form_set_freq, self._set_status_msg))          hbox.Add((5,0), 0)          myform['freq_slider'] = \              form.quantized_slider_field(parent=self.panel, sizer=hbox, weight=3,                                        range=(50.25e6, 900.25e6, 0.25e6),                                        callback=self.set_freq)          hbox.Add((5,0), 0)          vbox.Add(hbox, 0, wx.EXPAND)        hbox = wx.BoxSizer(wx.HORIZONTAL)        hbox.Add((5,0), 0)        myform['contrast'] = \            form.quantized_slider_field(parent=self.panel, sizer=hbox, label="Contrast",                                        weight=3, range=(-2.0, 2.0, 0.1),                                        callback=self.set_contrast)        hbox.Add((5,0), 1)        myform['brightness'] = \            form.quantized_slider_field(parent=self.panel, sizer=hbox, label="Brightness",                                        weight=3, range=(-255.0, 255.0, 1.0),                                        callback=self.set_brightness)        hbox.Add((5,0), 0)        if not (self.u is None):          myform['gain'] = \              form.quantized_slider_field(parent=self.panel, sizer=hbox, label="Gain",                                        weight=3, range=self.subdev.gain_range(),                                        callback=self.set_gain)          hbox.Add((5,0), 0)        vbox.Add(hbox, 0, wx.EXPAND)        try:            self.knob = powermate.powermate(self.frame)            self.rot = 0            powermate.EVT_POWERMATE_ROTATE (self.frame, self.on_rotate)            powermate.EVT_POWERMATE_BUTTON (self.frame, self.on_button)        except:            print "FYI: No Powermate or Contour Knob found"    def on_rotate (self, event):        self.rot += event.delta        if (self.state == "FREQ"):            if self.rot >= 3:                self.set_freq(self.freq + .1e6)                self.rot -= 3            elif self.rot <=-3:                self.set_freq(self.freq - .1e6)                self.rot += 3        elif (self.state == "CONTRAST"):            step = 0.1            if self.rot >= 3:                self.set_contrast(self.contrast + step)                self.rot -= 3            elif self.rot <=-3:                self.set_contrast(self.contrast - step)                self.rot += 3        else:            step = 1            if self.rot >= 3:                self.set_brightness(self.brightness + step)                self.rot -= 3            elif self.rot <=-3:                self.set_brightness(self.brightness - step)                self.rot += 3                def on_button (self, event):        if event.value == 0:        # button up            return        self.rot = 0        if self.state == "FREQ":            self.state = "CONTRAST"        elif self.state == "CONTRAST":            self.state = "BRIGHTNESS"        else:            self.state = "FREQ"        self.update_status_bar ()            def set_contrast (self, contrast):        self.contrast = contrast        self.invert_and_scale.set_k(-self.contrast *128.0*255.0/(200.0))        self.myform['contrast'].set_value(self.contrast)        self.update_status_bar ()    def set_brightness (self, brightness):        self.brightness = brightness        self.set_blacklevel.set_k(self.brightness +255.0)        self.myform['brightness'].set_value(self.brightness)        self.update_status_bar ()                                            def set_freq(self, target_freq):        """        Set the center frequency we're interested in.        @param target_freq: frequency in Hz        @rypte: bool        Tuning is a two step process.  First we ask the front-end to        tune as close to the desired frequency as it can.  Then we use        the result of that operation and our target_frequency to        determine the value for the digital down converter.        """        if not (self.u is None):          r = usrp.tune(self.u, 0, self.subdev, target_freq)          if r:              self.freq = target_freq              self.myform['freq'].set_value(target_freq)         # update displayed value              self.myform['freq_slider'].set_value(target_freq)  # update displayed value              self.update_status_bar()              self._set_status_msg("OK", 0)              return True        self._set_status_msg("Failed", 0)        return False    def set_gain(self, gain):        if not (self.u is None):          self.gain=gain          self.myform['gain'].set_value(gain)     # update displayed value          self.subdev.set_gain(gain)          self.update_status_bar()    def update_status_bar (self):        msg = "Setting:%s Contrast:%r Brightness:%r Gain: %r" % (self.state, self.contrast,self.brightness,self.gain)        self._set_status_msg(msg, 1)        #self.src_fft.set_baseband_freq(self.freq)        if __name__ == '__main__':    app = stdgui2.stdapp (tv_rx_block, "USRP TV RX black-and-white")    app.MainLoop ()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -