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
Post a Comment