view plotss.py @ 84:4b4ae555067b

Use RMS detector and fix the sweep time for more accuracy. Add links to app notes discussing theory. Run forever without pause and print a summary on ctrl-c
author Daniel O'Connor <doconnor@gsoft.com.au>
date Thu, 03 Oct 2024 08:57:10 +0930
parents 91b476ebc0f2
children
line wrap: on
line source

#!/usr/bin/env python

import datafile
import exceptions
import numpy
import pylab
import sys

def doplot(fname):
    dfile = datafile.DataFile(fname)
    
    xdata = dfile.freqs / 1e6
    ydata = dfile.powers
    pylab.title("Tag \'" + dfile['TAG'] + "\' at " + dfile['TIMESTAMP'])
    pylab.xlabel("Frequency (MHz)")
    pylab.ylabel("Level (dBm)")
    annstr = "FStart: %.2f MHz\nFStop: %.2f MHz\nPoints: %d" % (
        float(dfile['FSTART']) / 1e6,
        float(dfile['FSTOP']) / 1e6,
        len(xdata))
    pylab.annotate(annstr, xy=(5, -40),  xycoords='axes points')

    annstr = "Video BW: %.1f kHz\nResol. BW: %.1f kHz\nAttenuation: %.1f dB\nRef Level: %.1f dBm" % (
        float(dfile['VIDBW']) / 1e3,
        float(dfile['RESBW']) / 1e3,
        float(dfile['ATTEN']),
        float(dfile['REFLEV']))        
    pylab.annotate(annstr, xy=(-140, -55),  xycoords='axes points')
    pylab.grid(True)
    pylab.plot(xdata, ydata, linestyle='solid', marker='.')
    pylab.show()
    
if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Need at least one file to plot")
        sys.exit(1)

    for fn in sys.argv[1:]:
        doplot(fn)