Optimized Python Uniden PWR command band scope

import serial
import pandas as pd
import matplotlib.pyplot as plt
import csv
from datetime import datetime

ser = serial.Serial('COM14', '115200', timeout = 0.5)
print(ser.name)
serialCmd = b'PWR\r'
readSize = 19
loop = True
freq = ""
rssi = 0
data = []
log_data = []
cols = ['Frequency', 'RSSI', 'Timestamp']

plt.xlabel("Frequency")
plt.ylabel("RSSI")
plt.xticks(rotation = 90)
plt.ion()

try:
    while (loop == True):
        ser.write(serialCmd)
        res = ser.read(readSize).decode()
        if (len(res) > 15):
            r = res.replace('\r', '').split(",")
            freq = r[2]
            rssi = int(r[1])
            log_data.append([freq, rssi, datetime.now().strftime("%Y%m%d%H%M%S")])
            i = -1
            b = False
            for x in data:
                i = i + 1
                if (x[0] == freq):
                    data[i][1] = rssi
                    df = pd.DataFrame(data, columns = ['Frequency', 'RSSI'])
                    b = True
                    break
            if (b == False):
                data.append([freq, rssi])
                df = pd.DataFrame(data, columns = ['Frequency', 'RSSI'])
                df = df.sort_values("Frequency")
                plt.cla()
                plt.xticks(rotation = 90)
            plt.bar('Frequency', 'RSSI', data = df)
            plt.pause(0.03)
except KeyboardInterrupt:
    loop = False
    plt.close()
ser.close()
with open("c:\\temp\\unidenscope.csv", 'w', newline = '') as csvfile:
    csvwriter = csv.writer(csvfile)
    csvwriter.writerow(cols)
    csvwriter.writerows(log_data)




Comments

Popular posts from this blog

Modifying old SDR# TETRA demod plug-in

Mods for SDR# TETRA demod plugin 1.0.14.0 - 2