59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
|
|
import frappy.core as fc
|
|
import frappy
|
|
|
|
from frappy_psi.network_analysers.ZVL.ZVLDriver import ZVLNetAnalyzer
|
|
|
|
class ZVLNode(fc.Readable):
|
|
"""A ZVL Network Analyser.
|
|
|
|
Use
|
|
---
|
|
Set the center (target) and the analyser will be in a BUSY (3XX) state until the output is up to date (at that frequency).
|
|
|
|
Attributes
|
|
----------
|
|
value: the magnitude (in dB) of the signal at the set frequency.
|
|
status: status tuple (see frappy docs)
|
|
pollinterval: see frappy docs
|
|
central_freq: the center frequency (in Hz) to be probing
|
|
freq_span: the frequency span (in Hz) to be probing
|
|
analyser_ip: the IP address of the network analyser. Best to set in the config!
|
|
"""
|
|
|
|
value = fc.Parameter('value', fc.ArrayOf(fc.FloatRange(unit='dB'), minlen=1000, maxlen=1000), readonly=True)
|
|
status = fc.Parameter(datatype=frappy.datatypes.StatusType(fc.Readable, "DISABLED", 'PREPARED', 'BUSY'), default=('IDLE', 'idle'))
|
|
pollinterval = fc.Parameter(default=1)
|
|
central_freq = fc.Parameter('central_freq', fc.FloatRange(min=9_000, max=13_600_000_000, unit='Hz'), default=10_000_000, readonly=False)
|
|
freq_span = fc.Parameter('freq_span', fc.FloatRange(unit='Hz'), default=1_000_000, readonly=False)
|
|
|
|
analyser_ip = fc.Parameter('analyser_ip', fc.StringType())
|
|
|
|
def initialReads(self):
|
|
self.connect()
|
|
|
|
def connect(self):
|
|
self.NA = ZVLNetAnalyzer(self.analyser_ip)
|
|
self.NA.reset()
|
|
self.acq()
|
|
|
|
def acq(self):
|
|
self.status = ('BUSY', 'acquiring')
|
|
self.NA.set_freq_span(self.central_freq, self.freq_span)
|
|
self.value = self.NA.get_data()[1]
|
|
self.status = ('IDLE', 'idle')
|
|
|
|
def write_central_freq(self, f):
|
|
self.central_freq = (f)
|
|
self.acq()
|
|
return self.read_central_freq()
|
|
|
|
def write_freq_span(self, f):
|
|
self.freq_span = f
|
|
self.acq()
|
|
return self.read_freq_span()
|
|
|
|
def write_analyser_ip(self, ip):
|
|
self.analyser_ip = ip
|
|
self.connect()
|
|
return self.read_analyser_ip() |