From 7c3de26de9bf0b49061dffd66f6a3f14a250df84 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 12 Sep 2019 15:49:29 -0400 Subject: [PATCH 01/10] adding ping line --- HelperFunctions/hwserver.m | 1 + 1 file changed, 1 insertion(+) diff --git a/HelperFunctions/hwserver.m b/HelperFunctions/hwserver.m index c3aeea05a..fc45faa25 100644 --- a/HelperFunctions/hwserver.m +++ b/HelperFunctions/hwserver.m @@ -21,6 +21,7 @@ obj.connection.Terminator = 'LF'; obj.connection.OutputBufferSize = 4096; obj.connection.InputBufferSize = 4096; + obj.ping; end function delete(obj) if strcmp(obj.connection.status,'open') From aacb3719e5ddacf35eccb3262f6e32b20e3be8f6 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 12 Sep 2019 16:03:29 -0400 Subject: [PATCH 02/10] check IP adddress equals "No Server" --- Modules/+Sources/SuperK.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index 86b995123..77a172ff5 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -9,7 +9,7 @@ % - obj.serial.on()/off() - however, time consuming calls! properties - ip = 'Deprecated Use'; % IP of computer with and server + ip = 'No Server'; % IP of computer with and server prefs = {'ip'}; end properties(SetObservable,SetAccess=private) @@ -17,7 +17,6 @@ running % Boolean specifying if StaticLines program running end properties(SetAccess=private,Hidden) - listeners status % Text object reflecting running path_button serial @@ -25,7 +24,6 @@ methods(Access=protected) function obj = SuperK() obj.loadPrefs; - obj.serial = Drivers.SuperK.instance(obj.ip); end end methods(Static) @@ -40,17 +38,19 @@ end methods function delete(obj) - delete(obj.listeners) delete(obj.serial) end function set.ip(obj,val) err = []; + if strcmp(obj.ip,'No Server') + obj.ip = val; + return + end try delete(obj.serial) obj.serial = Drivers.SuperK.instance(val); obj.ip = val; catch err - delete(obj.listeners) obj.ip = 'No Server'; end if ~isempty(err) From c5ba5a661ff57b914270320dd4688554eae18f29 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Thu, 12 Sep 2019 16:30:18 -0400 Subject: [PATCH 03/10] add arm method --- Modules/+Sources/SuperK.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index 77a172ff5..99c3352c1 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -123,6 +123,10 @@ function ipCallback(obj,src,varargin) rethrow(err) end end + + function arm(obj) + % nothing needs to be done since SuperK just needs on/off methods + end end end \ No newline at end of file From acdd3529b2ebaef733e1fad703488e2cc6d5a83e Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Sat, 14 Sep 2019 17:05:59 -0400 Subject: [PATCH 04/10] delete redundant setting functions --- Modules/+Sources/SuperK.m | 60 +-------------------------------------- 1 file changed, 1 insertion(+), 59 deletions(-) diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index 99c3352c1..0c0228129 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -65,67 +65,9 @@ function off(obj) obj.serial.off(); obj.source_on = false; end - - % Settings and Callbacks - function settings(obj,panelH) - spacing = 1.5; - num_lines = 6; - line = 1; - uicontrol(panelH,'style','text','string','Power (%):','horizontalalignment','right',... - 'units','characters','position',[0 spacing*(num_lines-line) 18 1.25]); - uicontrol(panelH,'style','edit','string',num2str(obj.serial.getPower),'tag','setPower',... - 'units','characters','callback',@obj.setNum,... - 'horizontalalignment','left','position',[19 spacing*(num_lines-line) 10 1.5]); - line = 2; - uicontrol(panelH,'style','text','string','Pulse Picker (int):','horizontalalignment','right',... - 'units','characters','position',[0 spacing*(num_lines-line) 18 1.25]); - uicontrol(panelH,'style','edit','string',num2str(obj.serial.getPulsePicker),'tag','setPulsePicker',... - 'units','characters','callback',@obj.setNum,... - 'horizontalalignment','left','position',[19 spacing*(num_lines-line) 10 1.5]); - line = 3; - uicontrol(panelH,'style','text','string',strcat('Rep Rate (MHz): ',num2str(obj.serial.getRepRate())),'horizontalalignment','right',... - 'units','characters','position',[0,spacing*(num_lines-line) 25 1.25]); - line = 4; - uicontrol(panelH,'style','text','string','Center Wavelength (nm):','horizontalalignment','right',... - 'units','characters','position',[0 spacing*(num_lines-line) 18 1.25]); - uicontrol(panelH,'style','edit','string',num2str(obj.serial.getWavelength()),'tag','setWavelength',... - 'units','characters','callback',@obj.setNum,... - 'horizontalalignment','left','position',[19 spacing*(num_lines-line) 10 1.5]); - line = 5; - uicontrol(panelH,'style','text','string','Bandwidth (nm):','horizontalalignment','right',... - 'units','characters','position',[0 spacing*(num_lines-line) 18 1.25]); - uicontrol(panelH,'style','edit','string',num2str(obj.serial.getBandwidth()),'tag','setBandwidth',... - 'units','characters','callback',@obj.setNum,... - 'horizontalalignment','left','position',[19 spacing*(num_lines-line) 10 1.5]); - line = 6; - uicontrol(panelH,'style','text','string','Attenuation (%)):','horizontalalignment','right',... - 'units','characters','position',[0 spacing*(num_lines-line) 18 1.25]); - uicontrol(panelH,'style','edit','string',num2str(obj.serial.getND()),'tag','setND',... - 'units','characters','callback',@obj.setNum,... - 'horizontalalignment','left','position',[19 spacing*(num_lines-line) 10 1.5]); - end - - function setNum(obj,hObj,~) - temp = get(hObj,'string'); - temp = str2double(temp); - assert(~isnan(temp),'Must be a number!'); - obj.serial.(get(hObj,'tag'))(temp); - end - - function ipCallback(obj,src,varargin) - err = []; - try - obj.ip = get(src,'string'); - catch err - end - set(src,'string',obj.ip) - if ~isempty(err) - rethrow(err) - end - end function arm(obj) - % nothing needs to be done since SuperK just needs on/off methods + % nothing needs to be done since SuperK just needs on/off methods= end end From 797c0664fd85c7dafd13d87557bfe41b29c7667d Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Tue, 17 Sep 2019 14:56:30 -0400 Subject: [PATCH 05/10] Added if cases for invalid IP inputs for SuperK --- Modules/+Sources/SuperK.m | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index 0c0228129..1f7c63fc6 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -42,8 +42,14 @@ function delete(obj) end function set.ip(obj,val) err = []; - if strcmp(obj.ip,'No Server') - obj.ip = val; + if strcmp(val,'No Server') + error('Intentional error out'); + obj.ip = 'No Server'; + return + end + if isempty(val) + error('No IP address inputed'); + obj.ip = 'No Server'; return end try From 278d3b59460c40cf40e4d3c61b3e8f7740fbba90 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Wed, 18 Sep 2019 14:14:55 -0400 Subject: [PATCH 06/10] fix the if block in set.ip --- Modules/+Sources/SuperK.m | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index 1f7c63fc6..a010c04b8 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -42,13 +42,8 @@ function delete(obj) end function set.ip(obj,val) err = []; - if strcmp(val,'No Server') - error('Intentional error out'); - obj.ip = 'No Server'; - return - end - if isempty(val) - error('No IP address inputed'); + if isempty(val) || strcmp(val,'No Server') + delete(obj.serial) obj.ip = 'No Server'; return end From 68ce7206124b54deb2fe7441c0d57e0b1d4eb740 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Mon, 23 Sep 2019 14:25:07 -0400 Subject: [PATCH 07/10] updated SuperK Source --- Modules/+Sources/SuperK.m | 54 ++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index a010c04b8..9557458e4 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -1,16 +1,13 @@ classdef SuperK < Modules.Source - %superK used to control all aspects of the superK laser. + % SuperK used to control all aspects of the superK laser. % - % The on/off state of laser is controlled by the PulseBlaster (loaded - % in set.ip). Note this state can switch to unknown if another - % module takes over the PulseBlaster program. - % - % Power to the laser can be controlled through the serial object - % - obj.serial.on()/off() - however, time consuming calls! + % The emission state of the laser is controlled by serial connection + % + properties - ip = 'No Server'; % IP of computer with and server - prefs = {'ip'}; + host = 'No Server'; % host of computer with and server + prefs = {'host'}; end properties(SetObservable,SetAccess=private) source_on = false; @@ -19,7 +16,7 @@ properties(SetAccess=private,Hidden) status % Text object reflecting running path_button - serial + comm = hwserver.empty end methods(Access=protected) function obj = SuperK() @@ -38,38 +35,53 @@ end methods function delete(obj) - delete(obj.serial) + if obj.comm_isvalid + delete(obj.comm); + end end - function set.ip(obj,val) + function set.host(obj,val) err = []; + if obj.comm_isvalid + delete(obj.comm); + end if isempty(val) || strcmp(val,'No Server') - delete(obj.serial) - obj.ip = 'No Server'; + obj.comm = hwserver.empty; + obj.host = 'No Server'; return end try - delete(obj.serial) - obj.serial = Drivers.SuperK.instance(val); - obj.ip = val; + obj.comm = Drivers.SuperK.instance(val); + obj.host = val; catch err - obj.ip = 'No Server'; + obj.host = 'No Server'; end if ~isempty(err) rethrow(err) end end function on(obj) - obj.serial.on(); + obj.comm.on(); obj.source_on = true; end function off(obj) - obj.serial.off(); + obj.comm.off(); obj.source_on = false; end function arm(obj) - % nothing needs to be done since SuperK just needs on/off methods= + % nothing needs to be done since SuperK just needs on/off methods end + function val = get.comm(obj) + d = dbstack(1); + if ~strcmp(d(1).name,'SuperK.comm_isvalid') % avoid recursive call + assert(obj.comm_isvalid,'Not connected (set.host)'); + end + val = obj.comm; + end + + function val = comm_isvalid(obj) % get method allows direct access to comm + val = any(isvalid(obj.comm)); + end end end \ No newline at end of file From 227e43ae8da1f416f7f04926cdeca0a15f9fbf41 Mon Sep 17 00:00:00 2001 From: Kevin Chen Date: Mon, 23 Sep 2019 20:34:18 -0400 Subject: [PATCH 08/10] added setNum function and laser prefs --- +Base/pref.m | 3 +++ Modules/+Sources/SuperK.m | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/+Base/pref.m b/+Base/pref.m index 071878cc3..2d5419f46 100644 --- a/+Base/pref.m +++ b/+Base/pref.m @@ -14,6 +14,7 @@ % help_text - provide longer text to describe what this pref does (think tooltip) % readonly - boolean specifying if GUI control should be editable (e.g. "enabled") % display_only - boolean specifying if saved as pref when module unloaded + % tag - any data type available for user to choose (similar to gobject UserData) % set* % custom_validate* % custom_clean* @@ -74,6 +75,8 @@ custom_clean = {[], @(a)true}; % First things called before any validation set = {[], @(a)true}; + % Tag available to the user + tag = {[], @(a)true}; end methods % May be overloaded by subclass pref diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index 9557458e4..ea0bd4861 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -6,7 +6,21 @@ properties - host = 'No Server'; % host of computer with and server + host = 'No Server'; % host of computer with and server + show_prefs = {'Power','Pulse_Picker','Rep_Rate','Center_Wavelength',... + 'Bandwidth','Attenuation','host'}; + Power = Prefs.Double('max',100,'min',0,'units','%','allow_nan',false,... + 'set','setPower','tag','setPower'); + Pulse_Picker = Prefs.Integer('max',40,'min',1,'help_text','Divider of max rep rate',... + 'set','getPulsePicker','tag','getPulsePicker'); + Rep_Rate = Prefs.Double('units','MHz','readonly',true,... + 'set','getRepRate','tag','getRepRate'); + Center_Wavelength = Prefs.Double('min',0,'units','nm',... + 'set','getWavelength','tag','getWavelength'); + Bandwidth = Prefs.Double('min',0,'units','nm',... + 'set','getBandwidth','tag','getBandwidth'); + Attenuation = Prefs.Double('max',100,'min',0,'units','%',... + 'set','getND','tag','getND'); prefs = {'host'}; end properties(SetObservable,SetAccess=private) @@ -39,6 +53,10 @@ function delete(obj) delete(obj.comm); end end + function setNum(obj,val,pref) + obj.serial.(pref.tag.set)(val); + + end function set.host(obj,val) err = []; if obj.comm_isvalid From 21312041b6fbdeb8256833d7206e382d17138441 Mon Sep 17 00:00:00 2001 From: Isaac Harris Date: Fri, 1 May 2020 18:23:31 -0400 Subject: [PATCH 09/10] removed setXXX from properties --- +Modules/Source.m | 2 +- .matlabprefs.mat.backup | Bin 0 -> 9681 bytes Modules/+Sources/SuperK.m | 17 ++++++++--------- 3 files changed, 9 insertions(+), 10 deletions(-) create mode 100644 .matlabprefs.mat.backup diff --git a/+Modules/Source.m b/+Modules/Source.m index c50e6d5b9..e0eff8876 100644 --- a/+Modules/Source.m +++ b/+Modules/Source.m @@ -33,7 +33,7 @@ function arm(obj) end function blackout(obj) %this method should do whatever is necessary to completely - %block emissions from the source; for example, this may include + %block emissions from the source; for example, this may include %powering off a source warning('SOURCE:notimplemented','blackout method not implemented for %s',class(obj)) end diff --git a/.matlabprefs.mat.backup b/.matlabprefs.mat.backup new file mode 100644 index 0000000000000000000000000000000000000000..d12ec89acd89da25e9422dd9ea13233022d4ea92 GIT binary patch literal 9681 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 F@IR#1O5p$i literal 0 HcmV?d00001 diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index ea0bd4861..953f3fd26 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -5,22 +5,22 @@ % - properties + properties(SetObservable,GetObservable) host = 'No Server'; % host of computer with and server show_prefs = {'Power','Pulse_Picker','Rep_Rate','Center_Wavelength',... 'Bandwidth','Attenuation','host'}; Power = Prefs.Double('max',100,'min',0,'units','%','allow_nan',false,... - 'set','setPower','tag','setPower'); - Pulse_Picker = Prefs.Integer('max',40,'min',1,'help_text','Divider of max rep rate',... - 'set','getPulsePicker','tag','getPulsePicker'); + 'tag','setPower'); + Pulse_Picker = Prefs.Integer('max',40,'min',0,'help_text','Divider of max rep rate',... + 'tag','setPulsePicker'); Rep_Rate = Prefs.Double('units','MHz','readonly',true,... - 'set','getRepRate','tag','getRepRate'); + 'tag','setRepRate'); Center_Wavelength = Prefs.Double('min',0,'units','nm',... - 'set','getWavelength','tag','getWavelength'); + 'tag','setWavelength'); Bandwidth = Prefs.Double('min',0,'units','nm',... - 'set','getBandwidth','tag','getBandwidth'); + 'tag','setBandwidth'); Attenuation = Prefs.Double('max',100,'min',0,'units','%',... - 'set','getND','tag','getND'); + 'tag','setND'); prefs = {'host'}; end properties(SetObservable,SetAccess=private) @@ -55,7 +55,6 @@ function delete(obj) end function setNum(obj,val,pref) obj.serial.(pref.tag.set)(val); - end function set.host(obj,val) err = []; From 73fe18b76f13dac0f9258d76535fe3de6ab7ffc4 Mon Sep 17 00:00:00 2001 From: Isaac Harris Date: Mon, 4 May 2020 15:43:43 -0400 Subject: [PATCH 10/10] setHost method and defining prefs correctly --- Modules/+Sources/SuperK.m | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Modules/+Sources/SuperK.m b/Modules/+Sources/SuperK.m index 953f3fd26..6bacc0c44 100644 --- a/Modules/+Sources/SuperK.m +++ b/Modules/+Sources/SuperK.m @@ -6,9 +6,10 @@ properties(SetObservable,GetObservable) - host = 'No Server'; % host of computer with and server + prefs = {'Power','Pulse_Picker','Rep_Rate','Center_Wavelength',... + 'Bandwidth','Attenuation','Host'}; show_prefs = {'Power','Pulse_Picker','Rep_Rate','Center_Wavelength',... - 'Bandwidth','Attenuation','host'}; + 'Bandwidth','Attenuation','Host'}; Power = Prefs.Double('max',100,'min',0,'units','%','allow_nan',false,... 'tag','setPower'); Pulse_Picker = Prefs.Integer('max',40,'min',0,'help_text','Divider of max rep rate',... @@ -21,7 +22,8 @@ 'tag','setBandwidth'); Attenuation = Prefs.Double('max',100,'min',0,'units','%',... 'tag','setND'); - prefs = {'host'}; + Host = Prefs.String('No Server','set','setHost'); + end properties(SetObservable,SetAccess=private) source_on = false; @@ -56,21 +58,24 @@ function delete(obj) function setNum(obj,val,pref) obj.serial.(pref.tag.set)(val); end - function set.host(obj,val) + function host = setHost(obj,val,pref) err = []; if obj.comm_isvalid delete(obj.comm); end if isempty(val) || strcmp(val,'No Server') obj.comm = hwserver.empty; - obj.host = 'No Server'; + obj.Host = 'No Server'; + host = obj.Host; return end try obj.comm = Drivers.SuperK.instance(val); - obj.host = val; + obj.Host = val; + host = val; catch err - obj.host = 'No Server'; + obj.Host = 'No Server'; + host = obj.Host; end if ~isempty(err) rethrow(err)