2014-04-16 11 views
1

저는 학생이며 GNU 라디오에서 일하고 있습니다.파이썬 코드 실행 중 속성 오류가 발생했습니다.

나는 파이썬 코드가 GNU 라디오 동반자에서 실행하고 싶지만 그 코드를 실행하기 위해 올바른 블록을 검색 할 수 없다 ... 그와 함께 나를 도와 줄 수 있을까? 같은 파이썬 코드를 실행할 때

AttributeError : (안 GNU에서), 나는 다음과 같은 오류가 발생합니다

#!/usr/bin/env python 
from gnuradio import blocks 
from gnuradio import eng_notation 
from gnuradio import gr 
from gnuradio import uhd 
#from gnuradio import window 
from gnuradio.eng_option import eng_option 
#from gnuradio.gr import firdes 
from gnuradio.wxgui import forms 
from gnuradio.wxgui import waterfallsink2 
from grc_gnuradio import wxgui as grc_wxgui 
from optparse import OptionParser 
import wx 

class top_block(grc_wxgui.top_block_gui): 
    def __init__(self): 
     grc_wxgui.top_block_gui.__init__(self, title="Top Block") 
     _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" 
     self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) 
     ################################################## 
     # Variables 
     ### 
     ############################################### 
     self.variable_slider_1 = variable_slider_1 = 32 
     self.variable_slider_0 = variable_slider_0 = 0 
     self.samp_rate = samp_rate = 21e6 
     self.gain = gain = variable_slider_1 
     self.delay_length = delay_length= variable_slider_0 
     ################################################## 
     # Blocks 
     ################################################## 
     self.wxgui_waterfallsink2_0_0 = waterfallsink2.waterfall_sink_c(
     self.GetWin(), 
     baseband_freq=0, 
     dynamic_range=100, 
     ref_level=0, 
     ref_scale=2.0, 
     sample_rate=samp_rate, 
     fft_size=512, 
     fft_rate=15, 
     average=False, 
     avg_alpha=None, 
     title="Output Waterfall Plot", 
     ) 
     self.GridAdd(self.wxgui_waterfallsink2_0_0.win, 0, 10, 10, 10) 
     self.wxgui_ 
     waterfallsink2_0 = waterfallsink2.waterfall_sink_c(
     self.GetWin(), 
     baseband_freq=0, 
     dynamic_range=100, 
     ref_level=0, 
     ref_scale=2.0, 
     sample_rate=samp_rate, 
     fft_size=512, 
     fft_rate=15, 
     average=False, 
     avg_alpha=None, 
     title="Input Waterfall Plot", 
     ) 
     self.GridAdd(self.wxgui_waterfallsink2_0.win, 0, 0, 10, 10) 
     _variable_slider_1_sizer = wx.BoxSizer(wx.VERTICAL) 
     self._variable_slider_1_text_box = forms.text_box(
     parent=self.GetWin(), 
     sizer=_variable_slider_1_sizer, 
     value=self.variable_slider_1, 
     callback=self.set_variable_slider_1, 
     label="Output Gain", 
     converter=forms.float_converter(), 
     proportion=0, 
     ) 
     self._variable_slider_1_slider = forms.slider(
     parent=self.GetWin(), 
     sizer=_variable_slider_1_sizer, 
     value=self.variable_slider_1, 
     callback=self.set_variable_slider_1, 
     minimum=0, 
     maximum=32, 
     num_steps=31, 
     style=wx.SL_HORIZONTAL, 
     cast=float, 
     proportion=1, 
     ) 
     self.GridAdd(_variable_slider_1_sizer, 12, 10, 1, 9) 
     _variable_sl 
     ider_0_sizer = wx.BoxSizer(wx.VERTICAL) 
     self._variable_slider_0_text_box = forms.text_box(
     parent=self.GetWin(), 
     sizer=_variable_slider_0_sizer, 
     value=self.variable_slider_0, 
     callback=self.set_variable_slider_0, 
     label="Delay Length", 
     converter=forms.int_converter(), 
     proportion=0, 
     ) 
     self._variable_slider_0_slider = forms.slider(
     parent=self.GetWin(), 
     sizer=_variable_slider_0_sizer, 
     value=self.variable_slider_0, 
     callback=self.set_variable_slider_0, 
     minimum=0, 
     maximum=710000, 
     num_steps=1000, 
     style=wx.SL_HORIZONTAL, 
     cast=int, 
     proportion=1, 
     ) 
     self.GridAdd(_variable_slider_0_sizer, 10, 10, 1, 9) 
     self.uhd_usrp_source_0 = uhd.usrp_source(
     device_addr="", 
     stream_args=uhd.stream_args(
     cpu_format="fc32", 
     channels=range(1), 
     ), 
     ) 
     self.uhd_usrp_source_0.set_samp_rate(samp_rate) 
     self.uhd_usrp_source_0.set_center_freq(2.28e9, 0) 
     self.uhd_usrp_source_0.set_gain(0, 0) 
     self.uhd_usrp_sink_0 = uhd.usrp_sink(
     device_addr="", 
     stream_args 
     =uhd.stream_args(
     cpu_format="fc32", 
     channels=range(1), 
     ), 
     ) 
     self.uhd_usrp_sink_0.set_samp_rate(samp_rate) 
     self.uhd_usrp_sink_0.set_center_freq(2.28e9, 0) 
     self.uhd_usrp_sink_0.set_gain(gain, 0) 
     self.gr_file_source_0_0 = gr.file_source(
     gr.sizeof_gr_complex*1, 
"/home/ubuntu/radar-rx3.capture", True) 
     self.gr_file_source_0 = gr.file_source(gr.sizeof_gr_complex*1, 
"/home/ubuntu/radar-rx3.capture", True) 
     self.gr_delay_0_0 = gr.delay(gr.sizeof_gr_complex*1, delay_length) 
     self.blocks_mult 
     iply_xx_0 = blocks.multiply_vcc(1) 
     ################################################## 
     # Connections 
     ################################################## 
     self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_waterfallsink2_0, 0)) 
     self.connect((self.gr_file_source_0_0, 0), (self.gr_delay_0_0, 0)) 
     self.connect((self.gr_file_source_0, 0), (self.blocks_multiply_xx_0, 0)) 
     self.connect((self.gr_delay_0_0, 0), (self.blocks_multiply_xx_0, 1)) 
     self.connect((self.blocks_multiply_xx_0, 0), (self.uhd_usrp_sink_0, 0)) 
     self.connect((self.blocks_multiply_xx_0, 0), (self.wxgui_waterfallsink2_0_0, 0)) 
    def get_variable_slider_1(self): 
     return self.variable_slider_1 
    def set_variable_slider_1(self, variable_slider_1): 
     self.variable_slider_1 = variable_slider_1 
     self.set_gain(self.variable_slider_1) 
     self._variable_slider_1_slider.set_value(self.variable_slider_1) 
     self._variable_slider_1_text_box.set_value(self.variable_slider_1) 

    def get_variable_slider_0(self): 
     return self.variable_slider_0 
    def set_variable_slider_0(self, variable_slider_0): 
     self.variable_slider_0 = variable_slider_0 
     self.set_delay_length(self.variable_slider_0) 
     self._variable_slider_0_slider.set_value(self.variable_slider_0) 
     self._variable_slider_0_text_box.set_value(self.variable_slider_0) 
    def get_samp_rate(self): 
     return self.samp_rate 
    def set_samp_rate(self, samp_rate): 
     self.samp_rate = samp_rate 
     self.wxgui_waterfallsink2_0.set_sample_rate(self.samp_rate) 
     self.wxgui_waterfallsink2_0_0.set_sample_rate(self.samp_rate) 
     self.uhd_usrp_sink_0.set_samp_rate(self.samp_rate) 
     self.uhd_usrp_source_0.set_samp_rate(self.samp_rate) 
    def get_gain(self): 
     return self.gain 
    def set_gain(self, gain): 
     self.gain = gain 
     self.uhd_usrp_sink_0.set_gain(self.gain, 0) 
    def get_delay_length(self): 
     return self.delay_length 
    def set_delay_length(self, delay_length): 
     self.delay_length = delay_length 
     self.gr_delay_0_0.set_delay(self.delay_length) 
if __name__ == '__main__': 
    parser = OptionParser(option_class=eng_option,usage="%prog: [options]") 
    (options, args) = parser.parse_args() 
    tb = top_block() 
    tb.Run(True) 

답변

1

잘못된 줄 바꿈이있다 'top_block_sptr'객체는 코드가 표시됩니다 어떠한 속성 'wxgui_'

이 없습니다 in

self.wxgui_ 
    waterfallsink2_0 = waterfallsink2.waterfall_sink_c(... 

잘못된 줄 바꿈을 제거하면 제대로 작동합니다. 의심스러운 경우 GNU Radio Companion을 사용하여 python 파일을 다시 생성하십시오. 편집자가 줄 바꿈을 추가하지 않도록합니다.

관련 문제