This example connects to a device specified on the command line, tunes it to a center frequency of 2.450 MHz then reads and displays one capture of 1024 i, q values.
#!/usr/bin/env python
import sys
from thinkrf.devices import WSA4000
# connect to wsa
dut = WSA4000()
dut.connect(sys.argv[1])
# setup test conditions
dut.reset()
dut.request_read_perm()
dut.ifgain(0)
dut.freq(2450e6)
dut.gain('low')
dut.fshift(0)
dut.decimation(0)
# capture 1 packet
dut.capture(1024, 1)
# read until I get 1 data packet
while not dut.eof():
pkt = dut.read()
if pkt.is_data_packet():
break
# print I/Q data into i and q
for i, q in pkt.data:
print "%d,%d" % (i, q)
Example output (truncated):
0,-20
-8,-16
0,-24
-8,-12
0,-32
24,-24
32,-16
-12,-24
-20,0
12,-32
32,-4
0,12
-20,-16
-48,16
-12,12
0,-36
4,-12
This example connects to a device specified on the command line, tunes it to a center frequency of 2.450 MHz and sets a trigger for a signal with an amplitude of -70 dBm or greater between 2.400 MHz and 2.480 MHz.
When the trigger is satisfied the data is captured and rendered as a spectrum display using NumPy and matplotlib.
#!/usr/bin/env python
from thinkrf.devices import WSA4000
from thinkrf.config import TriggerSettings
from thinkrf.util import read_data_and_reflevel
from thinkrf.numpy_util import compute_fft
import sys
import time
import math
from matplotlib.pyplot import plot, figure, axis, xlabel, ylabel, show
# connect to wsa
dut = WSA4000()
dut.connect(sys.argv[1])
# setup test conditions
dut.reset()
dut.request_read_perm()
dut.ifgain(0)
dut.freq(2450e6)
dut.gain('high')
dut.fshift(0)
dut.decimation(0)
trigger = TriggerSettings(
trigtype="LEVEL",
fstart=2400e6,
fstop=2480e6,
amplitude=-70)
dut.trigger(trigger)
# capture 1 packet
data, reflevel = read_data_and_reflevel(dut, 1024)
# compute the fft of the complex data
powdata = compute_fft(dut, data, reflevel)
# setup my graph
fig = figure(1)
axis([0, 1024, -120, 20])
xlabel("Sample Index")
ylabel("Amplitude")
# plot something
plot(powdata, color='blue')
# show graph
show()