? GNU Radio ?    发布于 2017-01-06   1168人围观   0条评论

参考:http://gnuradio.org/doc/doxygen/page_msg_passing.html,参考的这是API文档,翻译已经完成,戳这里可以看。

Programming Topics

Tags, Messages and PMTs

目标:

  • 学习PMTs
  • 理解tags是什么/有什么用/如何用
  • 理解stream和message passing的区别
  • 更多高级block方面的知识

前提:


目前我们已经讨论过一个block到另外一个block的数据流。这些数据往往是采样点,一个数据流的结构会更有意义。例如,一个声卡会源源不断的产生声信号。

在某些情况下,我们不想管道采样流,而是将单个消息传递到另一个块,例如“这是突发的第一个采样”,或者“将发送频率改变为144MHz” 。或者考虑在PHY顶部的MAC层:在较高的通信级别,数据通常在PDU(协议数据单元)而不是流中传递。

在GNU Radio中,我们有两种机制来传递这些消息:

要传递的消息可能是字符串、数组向量、字典表或其他类型的信息,为使消息能够在不同的模块间传递,需要将不同类型的信息抽象为某⼀一特定的数据类型。Python是弱类型语言,在创建变量时无需声明类型。而C++是强类型语言,在创建变量前必须已知它的类型。GNURadio的软件架构决定我们需要在Python和C++中使⽤用同⼀一数据对象,为了解决消息信息类型不同的矛 盾,我们引⼊入了polymorphic types(PMTs),使承载不同信息类型的消息变量转化为统⼀的 PMT类型。!

多形态类型(PMT)

5.1.1 介绍

多态类型用作从一个块/线程到另一个块的数据的载体,例如流标签(stream tags)和消息传递接口(message passi

查看更多
? GNU Radio ?    发布于 2016-12-29   2078人围观   0条评论

Working with GNU Radio in C++

目标

  • 增加用C++编程GNU Radio的知识
  • GNU Radio中C++的API,尤其是:
    • types
    • 通用函数
    • GNU Radio blocks
  • 学习管理和用C++编写自己的OOT模块
    • 基于一个实例讨论OOT模块
    • 在tutorial的module中,我们将用c++建立My QPSK Demodulator作为我们的QPSK解调。
  • 理解开发OOT模块的差别
    • 本节包含一些GNU Radio框架的高级主题,
    • 这些主题用于OOT模块中的一些特殊实现

前提:

  • C++基础
  • 之前的章节学习

4.1 C++还是Python?

这是我们每个人都需要思考的问题,在tutorial3中我们已经展示了gr_modtool在创建blocks时可以选择语言,像下面这样:

  1. $ gr_modtool add -t sync -l python

亦或

  1. $ gr_modtool add -t sync -l cpp # This is the default

这两种语言除了编译器和解释器之外,还有其他区别。比如,当性能不是主要因素时,可以考虑python,因为它很简洁,并且测试十分方便。考虑到性能时,用c++往往更有意义。所以,具体选择哪一模块,需要主观上的考虑。

4.2 使我们的OOT模块变的灵活

我们将介绍gr_modtool制作OOT模块和用c++编写blocks

gr_modtool命令的具体介绍,参考tutorial3里关于gr_modtool的介绍,或者快速查看如下表格:

Name Alias Description
help h Enlist the operations available
disable dis Disable block (comments out CMake entries for files)
info getinfo, inf Return information about a given module
remove rm, de R
查看更多
? GNU Radio ?    发布于 2016-12-15   3368人围观   0条评论

Working with GNU Radio in Python

目标

  • Python Blocks
  • OOT模块实现功能
  • 如何添加OOT
  • 如何用gr_modtool添加python block以及如何编写
  • QPSK mapping
  • 如何添加GRC绑定

前提

  • 安装GNU Radio3.7.4 和 之后版本
  • 建议了解 GRC Tutorial

* 熟悉python

3.1 简介

本节分为三个部分。首先是如何建立、改变和简单理解GRC产生的python文件。其次,是如何从头开始建立自己的OOT模块。最后,我们举一个实际项目作为例子。和上一节一项,所有的源文件都在gr-tutorial repository中。

3.1.1 GRC生成的python文件

先看一个GRC的例子
title
点击Generate按钮,终端里会显示它生成了一个.py文件。打开该文件,代码如下:

  1. #!/usr/bin/env Python
  2. ##################################################
  3. # Gnuradio Python Flow Graph
  4. # Title: Tutorial Three
  5. # Generated: Wed Mar 12 15:35:18 2014
  6. ##################################################
  7. from gnuradio import analog
  8. from gnuradio import audio
  9. from gnuradio import eng_notation
  10. from gnuradio import gr
  11. from gnuradio.eng_option import eng_option
  12. from gnuradio.filter import firdes
  13. from optparse import OptionParser
  14. class tutorial_three(gr.top_block):
  15. def __init__(self):
  16. gr.top_block.__init__(self, "Tutoria
查看更多
? python ? ? 爬虫 ?    发布于 2016-12-09   628人围观   0条评论

参考慕课网的爬虫教程

简单的爬虫架构

title

  • 爬虫调度端:启动、停止、监听爬虫
  • 爬虫程序:
    • url管理器:管理已爬取ur和待爬取的url,取出一个待爬取url送入网页下载器
    • 网页下载器:将url指定的网页下载存储成字符串,将字符串送入网页解析器
    • 网页解析器:从字符串中解析出有价值的信息和数据,并爬取取出其中其他网页的url,送入url管理器
    • 三个模块形成循环
  • 得到价值数据

title

URL管理器

title

网页下载器

title

  • 第一种方法
  1. import urllib2
  2. # 直接请求
  3. response = urllib2.urlopen('http://www.baidu.com')
  4. # 获取状态码
  5. print response.getcode()
  6. # 读取内容
  7. cont = response.read()
  • 第二种方法
  1. import urllib2
  2. # 创建Request对象
  3. request = urllib2.Request(url)
  4. # 添加数据
  5. request = request.add_data('a','1')
  6. # 添加http的head
  7. request = add_header('User-Agent','Mozilla/5.0')
  8. # 发送请求获取结果
  9. response = urllib2.urlopen(request)
  • 第三种方法
    title
  1. import urllib2,cookielib
  2. # 创建cookie容器
  3. cj = cookielib.CookieJar()
  4. # 创建一个opener
  5. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
  6. # 给urllib2安装opener
  7. urllib2.install_opener(opener)
  8. # 使用带有cookie的urllib2访问网页
  9. response = urllib2.urlopen("http://www.baidu.com")

网页解析器

title
title
title

  • pip install beautifulsoup4 安装beautifulsoup4
  • 创建BeautifulSoup对象
  1. from
查看更多
? sublime ? ? python ?    发布于 2016-12-09   766人围观   0条评论

最后折腾了几天,还是用了pycharm 23333

sublime安装和配置

这个安装和配置和简单,和以往一样就行

安装python

在计算机->属性->高级设置->环境变量->系统变量->Path中添加Python的安装位置,如D:\Python27\,这个配置完,重启sublime,然后ctrl+b就能允许当前py文件,并打印log

python的sublime3的相关插件

  • Python Flake8Lint
  1. 代码不规范时会在前面显示一个红色的小灯笼,每次运行会提示你怎么修改
  2. 保存代码的时候也会提示不规范的地方
  3. Ctrl + Alt + Shift + 8 提示修改
  4. Ctrl + Alt + Shift + 9 提示修改下一个错
  5. 当一行代码太长时,会提示,所以修改一下默认的代码行长度就行了Preferences -> Package Settings -> Flake8Lint -> Settings-Default
  • Anaconda 代码检测工具
    • 代码检验使用PyLine,因此注释掉代码检验,在偏好->包设置->用户设置中加入
  1. {
  2. "anaconda_linting":false
  3. }
  • SublimeCodeIntel智能提示工具
    这个插件和Anaconda的许多特性类似,可装可不装,配置如下,这个了解的不多
  1. {
  2. "Python": {
  3. "python":"D:/Python27/python.exe",
  4. "pythonExtraPaths":
  5. [
  6. "D:/Python27",
  7. "D:/Python27/DLLs",
  8. "D:/Python27/Lib",
  9. "D:/Python27/Lib/lib-tk",
  10. "D:/Python27/Lib/site-packages"
  11. ]
  12. }
  13. }
  • SublimeREPLTool->SublimeREPL->Python->Run currunt file可以运行当前环境(
查看更多