Skip to content

Commit

Permalink
added antenna menu
Browse files Browse the repository at this point in the history
  • Loading branch information
andrmuel committed May 15, 2011
1 parent edc56ca commit 68320f5
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 10 deletions.
39 changes: 38 additions & 1 deletion MS2601B.py
Expand Up @@ -24,19 +24,36 @@ class MS2601B:
MS2601B remote control via GPIB.
"""

# calibration modes
CAL_MODES = {"ALL": 0, "FREQ": 1, "LEVEL (1)": 2, "LEVEL (2)": 3}
CAL_MODES_INV = dict([(b,a) for (a,b) in CAL_MODES.iteritems()])

# scales
SCALE = { "1 dB": 0, "2 dB": 1, "5 dB": 2, "10 dB": 3, "Linear": 4}
SCALE_INV = dict([(b,a) for (a,b) in SCALE.iteritems()])

# units

# resolution bandwidth
RES_BW = {"30 Hz": 0, "100 Hz": 1, "300 Hz": 2, "1 kHz": 3, "3 kHz": 4, "10 kHz": 5, "30 kHz": 6, "100 kHz": 7, "300 kHz": 8, "1 MHz": 9, "200 Hz": 10, "9 kHz": 11, "120 kHz": 12}
RES_BW_INV = dict([(b,a) for (a,b) in RES_BW.iteritems()])

# attenuation
ATTEN = {"0 dB": 0, "10 dB": 1, "20 dB": 2, "30 dB": 3, "40 dB": 4, "50 dB": 5}
ATTEN_INV = dict([(b,a) for (a,b) in ATTEN.iteritems()])

# sweep time
SWEEP_TIME = {"1000 s": 1e6, "700 s": 7e5, "500 s": 5e5, "300 s": 3e5, "200 s": 2e5, "150 s": 1.5e5, "100 s": 1e5, "70 s": 7e4, "50 s": 5e4, "30 s": 3e4, "20 s": 2e4, "15 s": 1.5e4, "10 s": 1e4, "7 s": 7000, "5 s": 5000, "3 s": 3000, "2 s": 2000, "1.5 s": 1500, "1 s": 1000, "700 ms": 700, "500 ms": 500, "300 ms": 300, "200 ms": 200, "150 ms": 150, "100 ms": 100, "70 ms": 70, "50 ms": 50}
SWEEP_TIME_INV = dict([(b,a) for (a,b) in SWEEP_TIME.iteritems()])

# video bandwidth
VIDEO_BW = {"1 Hz": 0, "10 Hz": 1, "100 Hz": 2, "1 kHz": 3, "10 kHz": 4, "100 kHz": 5, "OFF": 6}
VIDEO_BW_INV = dict([(b,a) for (a,b) in VIDEO_BW.iteritems()])

# antennas
ANTENNAS = {"DIPOLE": 0, "LOG-PERIODIC (1)": 1, "LOG-PERIODIC (2)": 2, "LOOP": 3, "USER": 4, "OFF": 5}
ANTENNAS_INV = dict([(b,a) for (a,b) in ANTENNAS.iteritems()])

def __init__(self):
self.gpib = PrologixGPIB.PrologixGPIB(GPIB_ADDR)
self.res_bw_dirty = True
Expand All @@ -47,6 +64,8 @@ def __init__(self):
self.sweep_time_auto_dirty = True
self.video_bw_dirty = True
self.video_bw_auto_dirty = True
self.scale_dirty = True
self.antenna_dirty = True

def send(self, command):
self.gpib.gpib_send(command)
Expand Down Expand Up @@ -83,6 +102,10 @@ def set_initial(self):
self.video_bw_auto_dirty = False
self.video_bw = "100 kHz"
self.video_bw_dirty = False
self.scale = "10 dB"
self.scale_dirty = False
self.antenna = "OFF"
self.antenna_dirty = False

def get_center_frequency(self):
"""
Expand Down Expand Up @@ -212,12 +235,26 @@ def get_uncal_status(self):
return self.uncal

def get_scale(self):
self.scale = self.SCALE_INV[self.get_value("SCL")]
if self.scale_dirty:
self.scale = self.SCALE_INV[self.get_value("SCL")]
self.scale_dirty = False
return self.scale

def set_scale(self, scale):
self.scale = scale
self.scale_dirty = False
self.set_value("SCL", self.SCALE[scale])

def get_antenna(self):
if self.antenna_dirty:
self.antenna = self.ANTENNAS_INV[self.get_value("ANT")]
self.antenna_dirty = False
return self.antenna

def set_antenna(self, antenna):
self.antenna = antenna
self.antenna_dirty = False
self.set_value("ANT", self.ANTENNAS[antenna])

def start_calibration(self, mode=0):
"""
Expand Down
6 changes: 6 additions & 0 deletions MenuIDs.py
Expand Up @@ -9,3 +9,9 @@
MENU_SCALE_5DB = 9
MENU_SCALE_10DB = 10
MENU_SCALE_LIN = 11
MENU_ANTENNA_OFF = 12
MENU_ANTENNA_DIPOLE = 13
MENU_ANTENNA_LOGPER_1 = 14
MENU_ANTENNA_LOGPER_2 = 15
MENU_ANTENNA_LOOP = 16
MENU_ANTENNA_USER = 17
40 changes: 39 additions & 1 deletion gui.wxg
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<!-- generated by wxGlade 0.6.3 on Mon May 9 00:21:33 2011 -->
<!-- generated by wxGlade 0.6.3 on Sun May 15 17:42:21 2011 -->

<application path="/home/andrmuel/projects/MS2601B/ms2601b-gpib/wxgui.py" name="app" class="" option="0" language="python" top_window="frame" encoding="UTF-8" use_gettext="0" overwrite="0" use_new_namespace="1" for_version="2.8" is_template="0">
<object class="MainFrame" name="frame" base="EditFrame">
Expand Down Expand Up @@ -76,6 +76,44 @@
<handler>menu_handler_calibrate_frequency</handler>
</item>
</menu>
<menu name="" label="Antenna">
<item>
<label>Off</label>
<id>MENU_ANTENNA_OFF</id>
<radio>1</radio>
<handler>menu_handler_antenna</handler>
</item>
<item>
<label>Dipole</label>
<id>MENU_ANTENNA_DIPOLE</id>
<radio>1</radio>
<handler>menu_handler_antenna</handler>
</item>
<item>
<label>Logarithmic periodic (1)</label>
<id>MENU_ANTENNA_LOGPER_1</id>
<radio>1</radio>
<handler>menu_handler_antenna</handler>
</item>
<item>
<label>Logarithmic periodic (2)</label>
<id>MENU_ANTENNA_LOGPER_2</id>
<radio>1</radio>
<handler>menu_handler_antenna</handler>
</item>
<item>
<label>Loop</label>
<id>MENU_ANTENNA_LOOP</id>
<radio>1</radio>
<handler>menu_handler_antenna</handler>
</item>
<item>
<label>User</label>
<id>MENU_ANTENNA_USER</id>
<radio>1</radio>
<handler>menu_handler_antenna</handler>
</item>
</menu>
</menus>
</object>
<object class="wxStatusBar" name="statusbar" base="EditStatusBar">
Expand Down
40 changes: 32 additions & 8 deletions wxgui.py
Expand Up @@ -38,6 +38,14 @@ def __init__(self, *args, **kwds):
wxglade_tmp_menu.Append(MENU_CALIBRATION_LEVEL_2, "Level (2)", "", wx.ITEM_NORMAL)
wxglade_tmp_menu.Append(MENU_CALIBRATION_FREQUENCY, "Frequency", "", wx.ITEM_NORMAL)
self.menubar.Append(wxglade_tmp_menu, "Calibration")
wxglade_tmp_menu = wx.Menu()
wxglade_tmp_menu.Append(MENU_ANTENNA_OFF, "Off", "", wx.ITEM_RADIO)
wxglade_tmp_menu.Append(MENU_ANTENNA_DIPOLE, "Dipole", "", wx.ITEM_RADIO)
wxglade_tmp_menu.Append(MENU_ANTENNA_LOGPER_1, "Logarithmic periodic (1)", "", wx.ITEM_RADIO)
wxglade_tmp_menu.Append(MENU_ANTENNA_LOGPER_2, "Logarithmic periodic (2)", "", wx.ITEM_RADIO)
wxglade_tmp_menu.Append(MENU_ANTENNA_LOOP, "Loop", "", wx.ITEM_RADIO)
wxglade_tmp_menu.Append(MENU_ANTENNA_USER, "User", "", wx.ITEM_RADIO)
self.menubar.Append(wxglade_tmp_menu, "Antenna")
self.SetMenuBar(self.menubar)
# Menu Bar end
self.statusbar = self.CreateStatusBar(1, 0)
Expand Down Expand Up @@ -71,6 +79,12 @@ def __init__(self, *args, **kwds):
self.Bind(wx.EVT_MENU, self.menu_handler_calibrate_level_1, id=MENU_CALIBRATION_LEVEL_1)
self.Bind(wx.EVT_MENU, self.menu_handler_calibrate_level_2, id=MENU_CALIBRATION_LEVEL_2)
self.Bind(wx.EVT_MENU, self.menu_handler_calibrate_frequency, id=MENU_CALIBRATION_FREQUENCY)
self.Bind(wx.EVT_MENU, self.menu_handler_antenna, id=MENU_ANTENNA_OFF)
self.Bind(wx.EVT_MENU, self.menu_handler_antenna, id=MENU_ANTENNA_DIPOLE)
self.Bind(wx.EVT_MENU, self.menu_handler_antenna, id=MENU_ANTENNA_LOGPER_1)
self.Bind(wx.EVT_MENU, self.menu_handler_antenna, id=MENU_ANTENNA_LOGPER_2)
self.Bind(wx.EVT_MENU, self.menu_handler_antenna, id=MENU_ANTENNA_LOOP)
self.Bind(wx.EVT_MENU, self.menu_handler_antenna, id=MENU_ANTENNA_USER)
self.Bind(wx.EVT_RADIOBOX, self.res_bw_auto_handler, self.res_bw_auto)
self.Bind(wx.EVT_COMBOBOX, self.res_bw_select_handler, self.res_bw_select)
self.Bind(wx.EVT_RADIOBOX, self.atten_auto_handler, self.atten_auto)
Expand All @@ -86,11 +100,13 @@ def __init__(self, *args, **kwds):
# set scale menu correctly
self.SCALE_TO_MENUITEM_ID = {"1 dB": MENU_SCALE_1DB, "2 dB": MENU_SCALE_2DB, "5 dB": MENU_SCALE_5DB, "10 dB": MENU_SCALE_10DB, "Linear": MENU_SCALE_LIN }
self.MENUITEM_ID_TO_SCALE = dict([(b,a) for (a,b) in self.SCALE_TO_MENUITEM_ID.iteritems()])
self.menubar.FindItemById(self.SCALE_TO_MENUITEM_ID[self.ms2601b.get_scale()]).Check(True)
self.update_scale_menu()
# set antenna menu correctly
self.ANTENNA_TO_MENUITEM_ID = {"DIPOLE": MENU_ANTENNA_DIPOLE, "LOG-PERIODIC (1)": MENU_ANTENNA_LOGPER_1, "LOG-PERIODIC (2)": MENU_ANTENNA_LOGPER_2, "LOOP": MENU_ANTENNA_LOOP, "USER": MENU_ANTENNA_USER, "OFF": MENU_ANTENNA_OFF}
self.MENUITEM_ID_TO_ANTENNA = dict([(b,a) for (a,b) in self.ANTENNA_TO_MENUITEM_ID.iteritems()])
self.update_antenna_menu()
# update main settings with actual values
self.update_res_bw_atten_sweep_time_video_bw()
# update sweep time with actual values
self.updat_atten()

def __set_properties(self):
# begin wxGlade: MainFrame.__set_properties
Expand Down Expand Up @@ -227,6 +243,8 @@ def menu_handler_initial(self, event): # wxGlade: MainFrame.<event_handler>
self.statusbar.SetStatusText("Reset to initial values ...")
self.ms2601b.set_initial()
self.update_res_bw_atten_sweep_time_video_bw()
self.update_scale_menu()
self.update_antenna_menu()

def menu_handler_local(self, event): # wxGlade: MainFrame.<event_handler>
self.statusbar.SetStatusText("Returning control to local ...")
Expand All @@ -235,6 +253,9 @@ def menu_handler_local(self, event): # wxGlade: MainFrame.<event_handler>
def menu_handler_scale(self, event): # wxGlade: MainFrame.<event_handler>
self.ms2601b.set_scale(self.MENUITEM_ID_TO_SCALE[event.GetId()])

def menu_handler_antenna(self, event):
self.ms2601b.set_antenna(self.MENUITEM_ID_TO_ANTENNA[event.GetId()])

def res_bw_auto_handler(self, event): # wxGlade: MainFrame.<event_handler>
self.ms2601b.set_resolution_bandwidth_auto(event.GetString()=="Auto")
self.update_res_bw_atten_sweep_time_video_bw()
Expand All @@ -245,11 +266,11 @@ def res_bw_select_handler(self, event): # wxGlade: MainFrame.<event_handler>

def atten_auto_handler(self, event): # wxGlade: MainFrame.<event_handler>
self.ms2601b.set_attenuation_auto(event.GetString()=="Auto")
self.updat_atten()
self.update_res_bw_atten_sweep_time_video_bw()

def atten_select_handler(self, event): # wxGlade: MainFrame.<event_handler>
self.ms2601b.set_attenuation(event.GetString())
self.updat_atten()
self.update_res_bw_atten_sweep_time_video_bw()

def sweep_time_auto_handler(self, event): # wxGlade: MainFrame.<event_handler>
self.ms2601b.set_sweep_time_auto(event.GetString()=="Auto")
Expand Down Expand Up @@ -278,9 +299,12 @@ def update_res_bw_atten_sweep_time_video_bw(self):
self.video_bw_select.SetStringSelection(self.ms2601b.get_video_bandwidth())
self.uncal_label.Show(self.ms2601b.get_uncal_status())

def updat_atten(self):
self.atten_auto.SetSelection((1-int(self.ms2601b.get_attenuation_auto())))
self.atten_select.SetStringSelection(self.ms2601b.get_attenuation())
def update_scale_menu(self):
self.menubar.FindItemById(self.SCALE_TO_MENUITEM_ID[self.ms2601b.get_scale()]).Check(True)

def update_antenna_menu(self):
self.menubar.FindItemById(self.ANTENNA_TO_MENUITEM_ID[self.ms2601b.get_antenna()]).Check(True)


# end of class MainFrame

Expand Down

0 comments on commit 68320f5

Please sign in to comment.