GNU RADIO软件无线电发送接收文件测试笔记

本文详细记录了如何使用GNU RADIO的benchmark程序进行900MHz无线电信号的发送与接收,并介绍了如何修改程序实现从一台电脑通过无线电发送文件到另一台电脑。在发送端,通过添加代码读取aa.txt文件内容并发送;在接收端,修改程序将接收到的数据写入tt.txt。实验证明,当文本长度小于3571字节时,发送接收正常。
摘要由CSDN通过智能技术生成

GNU RADIO软件无线电benchmark程序发送接收文件测试笔记

GNU RADIO软件无线电benchmark程序发送接收文件测试笔记
在GNU RADIO软件无线电程序中,benchmark程序可以发射900MHZ,接收900MHZ的无线电信号。具体做法是,把两台装有Basic子板的USRP1母板分别连上两台电脑的USB端口上,接通电源,在ubuntu操作系统下,在其中一台电脑的终端提示符下键入:
“ cd /usr/local/share/gnuradio/example/digital/"
进入benchmark程序的目录, 再键入:
“./benchmark_tx.py -f 900M"
这时候,和这台电脑USB端口连接的USRP母板上的LFTX子板通过电线就会发送一个900MHZ的无线电信号,电脑显示器显示:
“…”
表示正在发射无线电信号。这时,在另外的一台电脑上的终端提示符下键入:
“ cd /usr/locaul/share/gnuradio/example/digital/"
进入benchmark程序的目录, 再键入:
“./benchmark_rx.py -f 900M"
这时候,和这台电脑USB端口连接的USRP母板上的LFTX子板通过电线就会收到一个900MHZ的无线电信号,电脑显示器显示:
ok=True pktno=1202 n_rcvd=1 n_right=0
表明接收信号正常。
现在的问题是要从这个电脑发送一个文件到另外一个电脑,我查找了相关资料发现,benchmark具有发送文件的功能,但是开源程序里没有这项功能,需要用户根据自己的需要修改程序来达到发送接收文件的功能。我通过研究发现,修改程序后,可以把这台电脑的aa.txt文件的“hello“字符发送到另外一台 电脑的tt.txt文件中。具体做法是,在发送端电脑的"/usr/local/share/gnuradio/example/digital"目录下新建aa.txt,tt.txt两个文本文件,在aa.txt中输入"hello"并保存,然后在终端下输入:
“vi benchmark_tx.py"
在vi编辑器下打开benchmark_tx.py程序,在第124行
" tb.start() # start flow graph",
后输入
“f=open("/usr/local/share/gnuradio/examples/digital/aa.txt",“r”)”
“lines=f.readlines()”
两行新程序,第一行程序是以只读方式打开aa.txt文件,第二行程序的作用是以每行阅读的方式读出aa.txt中的文本内容,然后再赋值给"lines"数组,接着把第140行程序
“payload = struct.pack(’!H’, pktno & 0xffff) + data "
改为
" payload = str(options.num ) + str(lines) "
这步的作用是,去掉了打包发送pkno函数的功能,而加入发送lines函数和options.num函数的功能。
现在说一下options.num函数是从哪来的。首先把程序的第95行至第100行,改为
parser.add_option(”-E","–discontinuous", action=“store_true”, default=False,
help=“enable discontinous transmission (bursts of 5 packets)”)

parser.add_option("-W","--from_file",dest="from_file", default=None,
                  help="use intput file for packet contents")

parser.add_option("-T","--to_file",dest="to_file", default=None,
                  help="Output file for modulated samples")

parser.add_option("-n","--num",type="int",dest="num",default=1000,
                  help="send message")

parser.add_option("-e", "--file",dest="filename", 
                  help="write report to FILE",metavar="FILE")

parser.add_option("-p", "--pdbk", action="store_true", 
                  dest="pdcl", 
                  default=False, 
                  help="write pdbk data to oracle db") 

 parser.add_option("-z", "--zdbk", action="store_true", 
                  dest="zdcl", 
                  default=False, 
                  help="write zdbk data to oracle db") 

简单说一下,在终端输入“benchmark_tx -f 900M -n 1500”时,程序以900MHZ的频率发送数组options.num中的数字1500和lines数组,因为
parser.add_option("-n","–num",type=“int”,dest=“num”,default=1000,
help=“send message”)
定义了一个属性是num的option.num函数通过提示符"-n xxx"来返回一个值给option.num数组, 上面其他程序的作用是定义了在终端提示符下发送文件"-W",接收文件"-T",写入给数据库"-p",读取数据库"-z", 其他功能这里暂时不讨论。修改完成后保存文件,退出vi编辑器。
下来在接收端的电脑上的"/usr/local/share/gnuradio/example/digital/narrowband"目录下新建aa.txt,tt.txt两个空白文本文件,然后在终端下输入:
“vi benchmark_rx.py"
在vi编辑器下打开benchmark_rx.py程序,把第79行到第98行的内容改为
global n_rcvd, n_right
global n_data
def main():
global n_rcvd, n_right
global n_data
n_rcvd = 0
n_right = 0
n_data = str()
def rx_callback(ok, payload):
global n_rcvd, n_right
global n_data
(pktno,) = struct.unpack(’!H’, payload[0:2])
n_data = payload[0:4096]
f=open("/usr/loc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值