微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 学着使用wxpython编写程序

学着使用wxpython编写程序

时间:10-02 整理:3721RD 点击:

在明白实现原理的基础上,使用功能强大的python直接编写gnuradio应用程序,也熟悉一下wxpython工具包的使用。实现的主要是常规调幅(要实现抑制载波的DSB比起来要简单一步)。最后的波形为:

载波为20khz的正弦,幅度为10,调制信号为1khz的正弦信号,幅度为0.5。调制系数为0.5。从图上也可以清楚地看到包络。下面的图为频谱显示,20khz的载波分量最大,其他的还有两个距离为1khz的分量。正是AM信号的常规频谱图。

编写程序的过程中也总结了下步骤:

1、第一步依然是导入相应的包,这里比以前要多导入的有wx,stdgui2,fftsink2还有scopesink2。这些都是利用wxpython这一GUI工具所必须的包。

2、以前定义的类母类都是gr.top_block。而这里新建了一个类,继承自stdgui2.std_top_block。具体追溯的话,这个类也最终继承自gr.top_block。

3、程序中用到了scopesink2和fftsink2。都是作为框架frame的零件添加上去的。wxpython里面的布局层次为:windows、frame、panel、vbox、button等等。大多数会涉及一个parent参数,用来设置把这个控件放在哪一个层次上。

4、最后在几行差不多都是一样的。用之前实例化的类来定义一个stdgui2.stdapp对象,然后开始对象的主进程mainloop。这样程序就能运行并显示结果。

查看stdgui2.py文件可以得到整个的文件结构。这个文件里定义了四个类:stdapp、stdframe、stdpanel以及之前的std_top_block。我对整个的过程理解是这样的:当用继承自stdgui2.std_top_block的类test_graph(我自己定义)来生成stdapp类的实例app时,这里先进行的是test_graph的初始化。实例化stdapp时,会将刚生成的test_graph做为参数来生成app。在app的OnInit方法中,又定义了一个实例frame=stdframe()。这样就产生了frame,并且它的各种方法也可以进行作用。在frame的__init__中又定义了一个panel。所以程序又依照stdpanel的定义将frame作为参数来生成panel。到这里,所有涉及的元素都进行了实例化。整个stdgui2,是一个整体调用的过程。这里挺乱的,不过看它的原始定义文件就可以明白其中的过程了。





不错 看界面是linxu下的

恩,是的,ubuntu,在这上面用起来比较方便

嗯 求助一个12.04直接安装到pc的方法 我看网上说做成usb的安装盘用一些第三方软件插上u盘抽取镜像就可以了,还说可以先进去live,不用安装。这个确实不懂,只能进入安装还是个11.xx的iso,官方12.04的那个iso(里面还有wubi,这个安装不喜欢,装成正真的系统也是用这个iso吗)

我试了安装就是不成。。不想用虚拟机 看您用的也不是虚拟机的吧。

先谢了,虚拟机中qt好慢啊,受不了了

恩,我是直接在硬盘上分了一个200G的区,格式化文件系统格式为ext2 ,然后再安装的。因为还有win7,所以这样启动的时候ubuntu自带的那个grub可以让我选择是启动哪一个系统。当时安装用的是刻录好的光盘DVD(普通的CD好像已经装不下了)。如果想用U盘的话,这个我倒没有尝试过,之前都是光盘直接安装硬盘的,不过我当时也找了一些资料,里面有介绍刻录到U盘,用U盘作启动盘进行安装的。如果感兴趣,我可以发给你。

哈哈 谢谢 我试试看

这个是linxu开发的呀

是的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top