import serial
import pandas as pd
import matplotlib.pyplot as plt

ser = serial.Serial('COM3', '115200', timeout = 0.5)
print(ser.name)
serialCmd = b'WIN\r'
readSize = 17
loop = True
freq = ""
win = 0
data = []

plt.xlabel("Frequency")
plt.ylabel("Window voltage")

try:
    while (loop == True):
        ser.write(serialCmd)
        result = ser.read(readSize)
        res = str(result)
        if (len(res) > 15):
            i = res.find(",")
            j = res.find(",", i + 1)
            if ((i != -1) and (j != -1)):
                freq = res[j + 1:j + 9]
                win = int(res[i + 1:i + 4])
                i = -1
                b = False
                for x in data:
                    i = i + 1
                    if (x[0] == freq):
                        data[i][1] = win
                        b = True
                        break
                if (b == False):
                    data.append([freq, win])
                df = pd.DataFrame(data, columns = ['Frequency', 'Window voltage'])
                df = df.sort_values("Frequency")
                plt.clf()
                plt.xticks(rotation = 90)
                plt.bar('Frequency', 'Window voltage', data = df)
                plt.pause(0.05)
except KeyboardInterrupt:
    loop = False
    plt.close()
ser.close()

WIN\r = window voltage
PWR\r = signal strength (UBC-3500XLT does not support PWR command)

win-volt-scope.jpg
https://i.ibb.co/qCx9wvn/win-volt-scope.jpg

 

With freq/win voltage/timestamp logging

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

ser = serial.Serial('COM3', '115200', timeout = 0.5)
print(ser.name)
serialCmd = b'WIN\r'
readSize = 17
loop = True
freq = ""
win = 0
data = []
log_data = []
cols = ['Frequency', 'Window voltage', 'Timestamp']

plt.xlabel("Frequency")
plt.ylabel("Window voltage")

try:
    while (loop == True):
        ser.write(serialCmd)
        result = ser.read(readSize)
        res = str(result)
        if (len(res) > 15):
            i = res.find(",")
            j = res.find(",", i + 1)
            if ((i != -1) and (j != -1)):
                freq = res[j + 1:j + 9]
                win = int(res[i + 1:i + 4])
                log_data.append([freq, win, datetime.now().strftime("%Y%m%y%H%M%S")])
                i = -1
                b = False
                for x in data:
                    i = i + 1
                    if (x[0] == freq):
                        data[i][1] = win
                        b = True
                        break
                if (b == False):
                    data.append([freq, win])
                df = pd.DataFrame(data, columns = ['Frequency', 'Window voltage'])
                df = df.sort_values("Frequency")
                plt.clf()
                plt.xticks(rotation = 90)
                plt.bar('Frequency', 'Window voltage', data = df)
                plt.pause(0.05)
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)



Frequency,Window voltage,Timestamp
04261000,372,20231023120213
04260000,369,20231023120214
04261000,374,20231023120214
04260000,367,20231023120214
04260250,371,20231023120214
04262000,373,20231023120214
04260000,356,20231023120214
04260250,368,20231023120214
....