切换按钮不会在循环

时间:2016-06-22 09:33:58

标签: matlab user-interface while-loop togglebutton

我写了一个代码,可以不断读取矩阵传感器(Matrix Sensor 1610)的值,创建一个矩阵并将其保存在编辑器文件中。

我正在尝试将我的代码实现到GUI(Matlab)中,这是我以前从未做过的,而且我已经遇到了问题。

我得到的只是一个toggle_button来打开和关闭进程。 对于我有一个矩阵我正在使用while循环。在那个循环中,我需要询问toggle_button的值。只要我在循环中,按钮的状态就会保持在“1”,无论我做什么。 我只能在我退出while循环时改变按钮的状态

我想有一些基本的东西我不明白。有人可以 请帮帮我?

非常感谢你提前

我确实读过类似的问题但是我的代码没有用。

这是我的按钮代码

    % --- Executes on button press in OnOff.
    function OnOff_Callback(hObject, eventdata, handles)

    % setup serial

    global onOff_Button
    onOff_Button = get(hObject, 'Value')

    %Preparation

    delete(instrfindall)        %Reset Com Port
    delete(timerfindall)        %Delete Timers

    % setup serial
    serialPort = serial('COM3');
    command = 'A';

    nrow = 16;
    ncol = 10;
    row_index = [9,10,11,12,13,14,15,16,8,7,6,5,4,3,2,1];
    col_index = [1,2,3,4,5,6,7,8,9,10];

    % 10x16 = 160 bytes
    lendata = 160;

    BaudRate = 115200;

    InputBufferSize = 500;

    Timeout = 1;

    set(serialPort , 'BaudRate', BaudRate);
    set(serialPort , 'InputBufferSize', InputBufferSize);
    set(serialPort , 'Timeout', Timeout);

    fopen(serialPort);

    if onOff_Button == 1

    %Saving Data
    fid = fopen('Test.txt', 'wt');

    while onOff_Button == 1

    % Request data
    fprintf(serialPort, command);

    % Get data
    %Data is read as string (CSV)
    data_string = fgetl(serialPort);
    data_string_array = strsplit(data_string, ',');
    data = str2double(data_string_array);

    % Reshape data (1D -> 2D array)
    data2d = zeros(nrow, ncol);
    k = 1;
    for i = 1:nrow
       for j = 1:ncol
          data2d(row_index(i), col_index(j)) = data(k);
          k = k + 1;
       end
    end

    % Open for writing
    for i=1:size(data2d,1)
       fprintf(fid, '%g\t', data2d(i,:));
       fprintf(fid,'\n');
    end
    fprintf(fid, '\n\n');

    %clean out the InputBufferSize
    flushinput(serialPort)

% Asking the Value of the Button   
 onOff_Button = get(hObject, 'Value')

    end

fclose(fid);
    fclose(serialPort);

    else

    end

    %end of every funktion
    guidata(hObject,handles);

0 个答案:

没有答案