Using a pushbutton to show that I have selected the right radiobutton
3 views (last 30 days)
Douglas Anderson on 1 May 2014
I have code that does the following:
- Uses uipickfile to get a file name
- Reads the selected file to get the data.
- Stops running at this time to display a uipanel button group (previously invisible) with the possible sample rates FOR THIS FILE. Naturally, with these groups one button is already selected, which has the default sample rate. Unfortunately the sample rate not included in the file.
I would like to either (a) associate a "Done" or "OK" button with the uipanel to say, after the right sample rate is selected, that it's OK to go on, or (b) tell things to proceed after either the default OR another sample rate is selected. Then, I can go ahead and Plot Data (with the right time scale).
I have tried Zheng's post, http://www.mathworks.com/matlabcentral/answers/62438-how-can-i-use-a-push-button-callback-function-to-call-radio-button-group-s-selectionchangefcn
This seemed to jump ahead and not let the selection change occur.
Thanks in advance!
Oh... the code for what I tried to to with Zheng's suggestions:
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% When pushed,
switch get(get(handles.uipanel2,'SelectedObject'),'Tag') % Get Tag of selected object.
handles.sample_rate = 1024;
handles.sample_rate = 2048;
handles.sample_rate = 4096;
handles.sample_rate = 8000;
Benjamin Avants on 2 May 2014
When you place radio buttons in a button group panel, the panel disables the radio buttons' callback functions and replaces them with the panel's SelectionChangeFcn.
In your case, you can do away with your second button entirely and don't need to define a SelectionChangeFcn for the button group panel. Even without defining that function, the button group panel will allow only one radio button to be selected at a time and will update the SelectedObject property every time a new radio button is selected.
You can use your third button to read the SelectedObject property, determine which radio button is selected, and to plot your data.
The SelectedObject property is a property of the button group panel. The switch case in your code should properly identify the button, as long as the four radio buttons have the correct tag and no other buttons (of any sort) are located within the button group panel.
I think your issue was that your first button included the code to plot your data and needed to wait on the selection. Personally, I would move the plotting function to the Callback of the third button. You can also use the uiwait() function to pause the code for the first button until the third button determines the appropriate sample rate and calls uiresume().
To be clear about which button is which:
The first button is the one that loads the file. The second button checks the sampling rate selected via radio button (if it is used). The third button triggers the plot.
Comment on my answer if you need clarification or have questions. I'll check it periodically.