1 Commits
Author SHA1 Message Date
James C. Ahlstrom 7121dacbbd Quisk version 4.2.46 2025-10-12 12:43:21 -04:00
7 changed files with 27 additions and 81 deletions
+6
View File
@@ -1,3 +1,9 @@
Quisk Version 4.2.46 October 2025
==================================
I fixed a bug in Hamlib rig 2 which happens with the new Pure Signal code. The Hamlib "f" command
now always returns the main receiver frequency, not one of the added receiver frequencies. This is
consistent with the Flex ZZ commands.
Quisk Version 4.2.45 October 2025 Quisk Version 4.2.45 October 2025
================================== ==================================
The new FreeDV including RADE mode is now a built-in mode of Quisk. Just press "FDV" to talk FreeDV. The new FreeDV including RADE mode is now a built-in mode of Quisk. Just press "FDV" to talk FreeDV.
+1 -1
View File
@@ -1,2 +1,2 @@
#Quisk version 4.2.45 #Quisk version 4.2.46
from .quisk import main from .quisk import main
+2 -7
View File
@@ -1,8 +1,5 @@
# This is the hardware control file for my shack. # This is the hardware control file for my shack.
# It is for the Hermes-Lite2 5 watt output which uses only the antenna tuner. # It is for the Hermes-Lite2 RF1 output and Alt Rx input.
from __future__ import print_function
from __future__ import absolute_import
from __future__ import division
from hermes.quisk_hardware import Hardware as BaseHw from hermes.quisk_hardware import Hardware as BaseHw
from n2adr import station_hardware from n2adr import station_hardware
@@ -17,7 +14,7 @@ class Hardware(BaseHw):
self.controlbox = station_hardware.ControlBox(app, conf) # Control my Station Control Box self.controlbox = station_hardware.ControlBox(app, conf) # Control my Station Control Box
self.v2filter = station_hardware.FilterBoxV2(app, conf) # Control V2 filter box self.v2filter = station_hardware.FilterBoxV2(app, conf) # Control V2 filter box
def open(self): def open(self):
if False: if False: # Start the station control GUI
from n2adr.station_hardware import StationControlGUI from n2adr.station_hardware import StationControlGUI
self.GUI = StationControlGUI(self.application.main_frame, self, self.application, self.conf) self.GUI = StationControlGUI(self.application.main_frame, self, self.application, self.conf)
self.GUI.Show() self.GUI.Show()
@@ -42,8 +39,6 @@ class Hardware(BaseHw):
# band is a string: "60", "40", "WWV", etc. # band is a string: "60", "40", "WWV", etc.
ret = BaseHw.ChangeBand(self, band) ret = BaseHw.ChangeBand(self, band)
self.anttuner.ChangeBand(band) self.anttuner.ChangeBand(band)
#self.lpfilter.ChangeBand(band)
#self.hpfilter.ChangeBand(band)
self.v2filter.ChangeBand(band) self.v2filter.ChangeBand(band)
self.CorrectSmeter() self.CorrectSmeter()
return ret return ret
+4 -50
View File
@@ -1,56 +1,10 @@
# Please do not change this widgets module for Quisk. Instead copy
# it to your own quisk_widgets.py and make changes there.
#
# This module is used to add extra widgets to the QUISK screen. # This module is used to add extra widgets to the QUISK screen.
from __future__ import print_function
from __future__ import absolute_import
from __future__ import division
import wx, time import wx, time
import _quisk as QS import _quisk as QS
class BottomWidgets: # Add extra widgets to the bottom of the screen from hermes.quisk_widgets import BottomWidgets as BaseWidgets
class BottomWidgets(BaseWidgets): # Add extra widgets to the bottom of the screen
def __init__(self, app, hardware, conf, frame, gbs, vertBox): def __init__(self, app, hardware, conf, frame, gbs, vertBox):
#self.config = conf BaseWidgets.__init__(self, app, hardware, conf, frame, gbs, vertBox)
#self.hardware = hardware
#self.application = app
#start_row = app.widget_row # The first available row
#start_col = app.button_start_col # The start of the button columns
#b = app.QuiskCycleCheckbutton(frame, self.OnAntTuner, ('Antenna', 'Ant 0', 'Ant 1'))
#bw, bh = b.GetMinSize()
#gbs.Add(b, (start_row, start_col), (1, 2), flag=wx.EXPAND)
#b = app.QuiskPushbutton(frame, self.OnAntTuner, 'L+')
#b.Enable(0)
#gbs.Add(b, (start_row, start_col + 2), (1, 2), flag=wx.EXPAND)
#b = app.QuiskPushbutton(frame, self.OnAntTuner, 'L-')
#b.Enable(0)
#gbs.Add(b, (start_row, start_col + 4), (1, 2), flag=wx.EXPAND)
#b = app.QuiskPushbutton(frame, self.OnAntTuner, 'C+')
#b.Enable(0)
#gbs.Add(b, (start_row, start_col + 6), (1, 2), flag=wx.EXPAND)
#b = app.QuiskPushbutton(frame, self.OnAntTuner, 'C-')
#b.Enable(0)
#gbs.Add(b, (start_row, start_col + 8), (1, 2), flag=wx.EXPAND)
#b = app.QuiskPushbutton(frame, self.OnAntTuner, 'Save')
#b.Enable(0)
#gbs.Add(b, (start_row, start_col + 10), (1, 2), flag=wx.EXPAND)
#self.swr_label = app.QuiskText(frame, 'Watts 000 SWR 10.1 Zh Ind 22 Cap 33 Freq 28100 (7777)', bh)
#gbs.Add(self.swr_label, (start_row, start_col + 2), (1, 10), flag=wx.EXPAND)
#b = app.QuiskCheckbutton(frame, None, text='')
#gbs.Add(b, (start_row, start_col + 25), (1, 2), flag=wx.EXPAND)
# Example of a horizontal slider:
# lab = wx.StaticText(frame, -1, 'Preamp', style=wx.ALIGN_CENTER)
# gbs.Add(lab, (5,0), flag=wx.EXPAND)
# sl = wx.Slider(frame, -1, 1024, 0, 2048) # parent, -1, initial, min, max
# gbs.Add(sl, (5,1), (1, 5), flag=wx.EXPAND)
# sl.Bind(wx.EVT_SCROLL, self.OnPreamp)
# def OnPreamp(self, event):
# print event.GetPosition()
self.num_rows_added = 0
#def OnAntTuner(self, event):
# btn = event.GetEventObject()
# text = btn.GetLabel()
# self.hardware.OnAntTuner(text)
#def UpdateText(self, text):
# self.swr_label.SetLabel(text)
+7 -6
View File
@@ -410,7 +410,7 @@ class AntennaTuner: # Control my homebrew antenna tuner and my KI8BV dipole
self.set_C = 0 self.set_C = 0
self.set_HighZ = 0 self.set_HighZ = 0
self.antnum = 0 # Antenna number 0 or 1 self.antnum = 0 # Antenna number 0 or 1
self.dipole2 = AntennaControl(app, conf) # Control the KI8BV dipole self.dipole2 = None #AntennaControl(app, conf) # Control the KI8BV dipole
if False and conf.use_rx_udp == 10: # Hermes UDP protocol for Hermes-Lite2 if False and conf.use_rx_udp == 10: # Hermes UDP protocol for Hermes-Lite2
path = 'TunerLCZ_HL2.txt' path = 'TunerLCZ_HL2.txt'
else: else:
@@ -484,10 +484,10 @@ class AntennaTuner: # Control my homebrew antenna tuner and my KI8BV dipole
if tx_freq < 17000000: if tx_freq < 17000000:
if DEBUG and self.antnum == 1: print ("antnum 0") if DEBUG and self.antnum == 1: print ("antnum 0")
self.antnum = 0 self.antnum = 0
else: elif self.dipole2:
if DEBUG and self.antnum == 0: print ("antnum 1") if DEBUG and self.antnum == 0: print ("antnum 1")
self.antnum = 1 self.antnum = 1
if self.antnum == 1: if self.antnum == 1 and self.dipole2:
self.dipole2.SetTxFreq(tx_freq) self.dipole2.SetTxFreq(tx_freq)
if not self.socket: if not self.socket:
return return
@@ -521,7 +521,8 @@ class AntennaTuner: # Control my homebrew antenna tuner and my KI8BV dipole
self.timer = 0 self.timer = 0
else: else:
self.timer = 0 self.timer = 0
self.dipole2.HeartBeat() if self.dipole2:
self.dipole2.HeartBeat()
def Send(self): def Send(self):
try: try:
self.socket.send(self.want_data) self.socket.send(self.want_data)
@@ -657,9 +658,9 @@ class StationControlGUI(wx.Frame): # Display a stand-alone control window for
fff, anttuner.set_L, anttuner.set_C, anttuner.set_HighZ = tup fff, anttuner.set_L, anttuner.set_C, anttuner.set_HighZ = tup
if tx_freq < 17000000: if tx_freq < 17000000:
anttuner.antnum = 0 anttuner.antnum = 0
else: elif anttuner.dipole2:
anttuner.antnum = 1 anttuner.antnum = 1
if anttuner.antnum == 1: if anttuner.antnum == 1 and anttuner.dipole2:
anttuner.dipole2.SetTxFreq(tx_freq) anttuner.dipole2.SetTxFreq(tx_freq)
anttuner.WantData() anttuner.WantData()
def FindIndexTup(self, tx_freq): def FindIndexTup(self, tx_freq):
+6 -16
View File
@@ -995,17 +995,12 @@ class HamlibHandlerRig2: # Test with telnet localhost 4532
else: else:
self.Send('0\n') self.Send('0\n')
def GetFreq(self): # The Rx frequency def GetFreq(self): # The Rx frequency
rx = self.app.multi_rx_screen.receiver_list # This is always the main Rx frequency without reference to added receivers.
if rx: self.Reply('Frequency', self.app.rxFreq + self.app.VFO, 0)
rx = rx[0] if HAMLIB_DEBUG:
self.Reply('Frequency', rx.txFreq + rx.VFO, 0) print ("GetFreq app", self.app.rxFreq, self.app.txFreq, self.app.VFO)
if HAMLIB_DEBUG:
print ("GetFreq rx", rx.txFreq, rx.VFO)
else:
self.Reply('Frequency', self.app.rxFreq + self.app.VFO, 0)
if HAMLIB_DEBUG:
print ("GetFreq app", self.app.rxFreq, self.app.txFreq, self.app.VFO)
def SetFreq(self): # The Rx frequency def SetFreq(self): # The Rx frequency
# This is always the main Rx frequency without reference to added receivers.
freq = self.GetParamNumber() freq = self.GetParamNumber()
try: try:
freq = float(freq) freq = float(freq)
@@ -1014,12 +1009,7 @@ class HamlibHandlerRig2: # Test with telnet localhost 4532
self.ErrParam() self.ErrParam()
else: else:
freq = int(freq + 0.5) freq = int(freq + 0.5)
# For multiple receivers this controls the first added receiver frequency; else it controls split Rx/Tx frequency. self.app.ChangeRxTxFrequency(freq, None)
rx = self.app.multi_rx_screen.receiver_list
if rx:
rx[0].ChangeRxTxFrequency(freq)
else:
self.app.ChangeRxTxFrequency(freq, None)
def GetSplitFreq(self): # The Tx Frequency def GetSplitFreq(self): # The Tx Frequency
self.Reply('TX Frequency', self.app.txFreq + self.app.VFO, 0) self.Reply('TX Frequency', self.app.txFreq + self.app.VFO, 0)
def SetSplitFreq(self): # The Tx Frequency def SetSplitFreq(self): # The Tx Frequency
+1 -1
View File
@@ -7,7 +7,7 @@ import os
# You must define the version here. A title string including # You must define the version here. A title string including
# the version will be written to __init__.py and read by quisk.py. # the version will be written to __init__.py and read by quisk.py.
Version = '4.2.45' Version = '4.2.46'
fp = open("__init__.py", "w") # write title string fp = open("__init__.py", "w") # write title string
fp.write("#Quisk version %s\n" % Version) fp.write("#Quisk version %s\n" % Version)