mirror of
https://github.com/Qortal/Brooklyn.git
synced 2025-02-07 06:44:18 +00:00
b73fb8b536
* Try that punk NASA -_-
71 lines
1.7 KiB
Python
71 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
#
|
|
# rtl_fsk modem dashboard
|
|
#
|
|
# usage:
|
|
# netcat -luk 8001 | ./dash.py
|
|
|
|
import json
|
|
import sys
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
import io
|
|
|
|
roll_s = 5
|
|
SNRestdB = []
|
|
norm_timing = [];
|
|
|
|
# unbuffered stdin
|
|
sys.stdin = io.open(sys.stdin.fileno())
|
|
|
|
for line in sys.stdin:
|
|
|
|
data = json.loads(line)
|
|
|
|
# update rolling SNRest
|
|
SNRest_lin = data['SNRest_lin']
|
|
tmp = 10*np.log10(SNRest_lin+1)
|
|
SNRestdB.append(tmp)
|
|
if len(SNRestdB) > roll_s:
|
|
SNRestdB.pop(0)
|
|
|
|
# update rolling norm timing
|
|
latest_norm_timing = data['norm_rx_timing']
|
|
norm_timing.extend(latest_norm_timing)
|
|
one_sec = len(latest_norm_timing)
|
|
if len(norm_timing) > roll_s*one_sec:
|
|
norm_timing = norm_timing[one_sec:]
|
|
|
|
plt.clf()
|
|
plt.subplot(311)
|
|
SfdB = data['SfdB']
|
|
fsk_lower_kHz = np.array(data['fsk_lower_Hz'])/1000
|
|
fsk_upper_kHz = np.array(data['fsk_upper_Hz'])/1000
|
|
f_est_kHz = np.array(data['f_est_Hz'])/1000
|
|
Fs_kHz = data['Fs_Hz']/1000
|
|
f_axis_kHz = -Fs_kHz/2 + np.arange(len(SfdB))*Fs_kHz/len(SfdB)
|
|
plt.plot(f_axis_kHz, SfdB)
|
|
height = 10;
|
|
mn = np.min(SfdB);
|
|
for f in f_est_kHz:
|
|
plt.plot(f, mn,"r+")
|
|
plt.plot([fsk_lower_kHz, fsk_lower_kHz], [mn, mn+height],"g")
|
|
plt.plot([fsk_upper_kHz, fsk_upper_kHz], [mn, mn+height],"g")
|
|
plt.grid()
|
|
plt.ylabel('Spectrum')
|
|
|
|
plt.subplot(312)
|
|
|
|
plt.plot(SNRestdB)
|
|
plt.ylabel('SNR')
|
|
mx = 10*np.ceil(np.max(SNRestdB)/10);
|
|
plt.ylim([0, mx])
|
|
plt.grid()
|
|
plt.subplot(313)
|
|
plt.plot(norm_timing)
|
|
plt.ylabel('Timing')
|
|
plt.ylim([-0.5, 0.5])
|
|
|
|
plt.draw()
|
|
plt.pause(0.01) # renders plot
|