TypeError:__init__():构造函数参数不兼容。在 GNU 广播中

问题描述 投票:0回答:1

我最近一直在使用python学习GNU Radio,并且在制作ASCII来浮动符号分层块调制时,我遇到了这个错误:

Qt GUI: Could not restore geometry: restoreGeometry(self, geometry: Union[QByteArray, bytes, bytearray]): argument 1 has unexpected type 'NoneType'
Traceback (most recent call last):
  File "C:\Users\alper\Documents\GNU Radio\asc2sym_bf.py", line 201, in <module>
    main()
  File "C:\Users\alper\Documents\GNU Radio\asc2sym_bf.py", line 179, in main
    tb = top_block_cls(a_bpsym=options.a_bpsym, b_eds=options.b_eds, c_pol=options.c_pol, d_inv=options.d_inv, e_true_asc=options.e_true_asc)
  File "C:\Users\alper\Documents\GNU Radio\asc2sym_bf.py", line 82, in __init__
    self.blocks_packed_to_unpacked_xx_0 = blocks.packed_to_unpacked_bb(1, 1)
TypeError: __init__(): incompatible constructor arguments. The following argument types are supported:
    1. gnuradio.blocks.blocks_python.packed_to_unpacked_bb(bits_per_chunk: int, endianness: gnuradio.gr.gr_python.endianness_t)

Invoked with: 1, 1

我尝试调试它,但没有成功:(,所以请帮助我,这是我写的代码:

from packaging.version import Version as StrictVersion
from PyQt5 import Qt
from gnuradio import qtgui
from gnuradio import blocks
from gnuradio import digital
from gnuradio import gr
from gnuradio.filter import firdes
from gnuradio.fft import window
import sys
import signal
from PyQt5 import Qt
from argparse import ArgumentParser
from gnuradio.eng_arg import eng_float, intx
from gnuradio import eng_notation

class asc2sym_bf(gr.top_block, Qt.QWidget):

    def \__init_\_(self, a_bpsym=1, b_eds=1, c_pol=1, d_inv=0, e_true_asc=0):
        gr.top_block.\__init_\_(self, "ASCII to Float Symbols", catch_exceptions=True)
        Qt.QWidget.\__init_\_(self)
        self.setWindowTitle("ASCII to Float Symbols")
        qtgui.util.check_set_qss()
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except BaseException as exc:
            print(f"Qt GUI: Could not set Icon: {str(exc)}", file=sys.stderr)
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)
    
        self.settings = Qt.QSettings("GNU Radio", "asc2sym_bf")
    
        try:
            if StrictVersion(Qt.qVersion()) \< StrictVersion("5.0.0"):
                self.restoreGeometry(self.settings.value("geometry").toByteArray())
            else:
                self.restoreGeometry(self.settings.value("geometry"))
        except BaseException as exc:
            print(f"Qt GUI: Could not restore geometry: {str(exc)}", file=sys.stderr)
    
        ##################################################
        # Parameters
        ##################################################
        self.a_bpsym = a_bpsym
        self.b_eds = b_eds
        self.c_pol = c_pol
        self.d_inv = d_inv
        self.e_true_asc = e_true_asc
    
        ##################################################
        # Variables
        ##################################################
        self.M = M = 2\*\*a_bpsym
    
        ##################################################
        # Blocks
        ##################################################
    
        self.digital_map_bb_0 = digital.map_bb(d_inv\*list(2\*\*8-1-i for i in range(2\*\*8))+(1-d_inv)\*list(range(2\*\*8)))
        self.blocks_packed_to_unpacked_xx_0 = blocks.packed_to_unpacked_bb(1, 1)
        self.blocks_char_to_float_0 = blocks.char_to_float(1, (c_pol\*0.5+(1-c_pol)\*1))
        self.blocks_and_const_xx_0 = blocks.and_const_bb(255)
        self.blocks_add_const_vxx_0 = blocks.add_const_ff((-c_pol\*(M-1)+(1-c_pol)\*0))
    
    
        ##################################################
        # Connections
        ##################################################
        self.connect((self.blocks_add_const_vxx_0, 0), (self, 0))
        self.connect((self.blocks_and_const_xx_0, 0), (self.digital_map_bb_0, 0))
        self.connect((self.blocks_char_to_float_0, 0), (self.blocks_add_const_vxx_0, 0))
        self.connect((self.blocks_packed_to_unpacked_xx_0, 0), (self.blocks_char_to_float_0, 0))
        self.connect((self.digital_map_bb_0, 0), (self.blocks_packed_to_unpacked_xx_0, 0))
        self.connect((self, 0), (self.blocks_and_const_xx_0, 0))
    
    
    def closeEvent(self, event):
        self.settings = Qt.QSettings("GNU Radio", "asc2sym_bf")
        self.settings.setValue("geometry", self.saveGeometry())
        self.stop()
        self.wait()
    
        event.accept()
    
    def get_a_bpsym(self):
        return self.a_bpsym
    
    def set_a_bpsym(self, a_bpsym):
        self.a_bpsym = a_bpsym
        self.set_M(2\*\*self.a_bpsym)
    
    def get_b_eds(self):
        return self.b_eds
    
    def set_b_eds(self, b_eds):
        self.b_eds = b_eds
    
    def get_c_pol(self):
        return self.c_pol
    
    def set_c_pol(self, c_pol):
        self.c_pol = c_pol
        self.blocks_add_const_vxx_0.set_k((-self.c_pol\*(self.M-1)+(1-self.c_pol)\*0))
        self.blocks_char_to_float_0.set_scale((self.c_pol\*0.5+(1-self.c_pol)\*1))
    
    def get_d_inv(self):
        return self.d_inv
    
    def set_d_inv(self, d_inv):
        self.d_inv = d_inv
    
    def get_e_true_asc(self):
        return self.e_true_asc
    
    def set_e_true_asc(self, e_true_asc):
        self.e_true_asc = e_true_asc
    
    def get_M(self):
        return self.M
    
    def set_M(self, M):
        self.M = M
        self.blocks_add_const_vxx_0.set_k((-self.c_pol\*(self.M-1)+(1-self.c_pol)\*0))

def argument_parser():
    description = 'Conversion from ASCII (bytes) to M-ary symbols'
    parser = ArgumentParser(description=description)
    parser.add_argument(
        "--a-bpsym", dest="a_bpsym", type=intx, default=1,
        help="Set Bits per Symbol \[default=%(default)r\]")
    parser.add_argument(
        "--b-eds", dest="b_eds", type=intx, default=1,
        help="Set LSB First \[default=%(default)r\]")
    parser.add_argument(
        "--c-pol", dest="c_pol", type=intx, default=1,
        help="Set Polar \[default=%(default)r\]")
    parser.add_argument(
        "--d-inv", dest="d_inv", type=intx, default=0,
        help="Set Invert Bits \[default=%(default)r\]")
    parser.add_argument(
        "--e-true-asc", dest="e_true_asc", type=intx, default=0,
        help="Set 7-Bit ASCII \[default=%(default)r\]")
    return parser

def main(top_block_cls=asc2sym_bf, options=None):
    if options is None:
        options = argument_parser().parse_args()

    if StrictVersion("4.5.0") \<= StrictVersion(Qt.qVersion()) \< StrictVersion("5.0.0"):
        style = gr.prefs().get_string('qtgui', 'style', 'raster')
        Qt.QApplication.setGraphicsSystem(style)
    qapp = Qt.QApplication(sys.argv)
    
    tb = top_block_cls(a_bpsym=options.a_bpsym, b_eds=options.b_eds, c_pol=options.c_pol, d_inv=options.d_inv, e_true_asc=options.e_true_asc)
    
    tb.start()
    
    tb.show()
    
    def sig_handler(sig=None, frame=None):
        tb.stop()
        tb.wait()
    
        Qt.QApplication.quit()
    
    signal.signal(signal.SIGINT, sig_handler)
    signal.signal(signal.SIGTERM, sig_handler)
    
    timer = Qt.QTimer()
    timer.start(500)
    timer.timeout.connect(lambda: None)
    
    qapp.exec\_()

if __name__ == '__main__':
    main()

我很确定代码是正确的,但无法理解错误。

有人可以帮助我吗?

python-3.x gnuradio
1个回答
0
投票

您使用

1
作为“字节序”参数。但我不知道这是什么意思,GNU Radio 也不知道!

您必须使用两个有效值之一:

gr.endianess_t.GR_MSB_FIRST
….GR_LSB_FIRST

© www.soinside.com 2019 - 2024. All rights reserved.