_sda 0 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба В цикле читаю по Ethernet данные и вывожу на экран Figure1. Если нужно разорвать цикл жму кнопку Stop loop. Проблема в том что после этого Figure1 закрывается. Как правильно обработать нажатие? Сейчас делаю так: if ~ishandle(ButtonHandle) disp('Loop stopped by user'); break; end Изменение на: if ~ishandle(ButtonHandle) disp('Loop stopped by user'); while(1) end; end проблему не снимает, всё равно закрывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба Желательно указать версию Матлаба и выложить сюда весь скрипт без Ethernetа, который бы демонстрировал проблему. Что закрывает figure1? Всякие hold on не помогают? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба Да, лучше бы взглянуть на весь код или тот кусок, что создает гуй. Решение в таких случаях простое: создайте figure и axis заранее (перед циклом чтения по Ethernet), сохраните хэндлы на них и затем с их помощью управляйте своим UI, никуда ничгео не должно исчезать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба 12 минут назад, syoma сказал: Желательно указать версию Матлаба и выложить сюда весь скрипт без Ethernetа, который бы демонстрировал проблему. Что закрывает figure1? Всякие hold on не помогают? Нет, не помогают. Если под if поставить hold on то при нажатии фигура закрывается на немного, потом опять открывается но уже пустая. Так объявляется кнопка, может для Callback нужно что-то другое предложить? ButtonHandle = uicontrol('Style', 'PushButton', ... 'String', 'Stop loop', ... 'Callback', 'delete(gcbf)'); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба 5 minutes ago, _sda said: ButtonHandle = uicontrol('Style', 'PushButton', ... 'String', 'Stop loop', ... 'Callback', 'delete(gcbf)'); ваш callback удаляет UI, содержащий кнопку! UI - figure то бишь, который кнопку содержит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба 6 минут назад, alexunder сказал: ваш callback удаляет UI, содержащий кнопку! UI - figure то бишь, который кнопку содержит. Спасибо! Сейчас попробую написать функцию обработки нажатия. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба 6 minutes ago, _sda said: Спасибо! Сейчас попробую написать функцию обработки нажатия. в приведенном ранее коде эта функция у Вас задается в виде текстовой строки для параметра callback. Вы можете объявить ее иначе, например: ButtonHandle = uicontrol('Style', 'PushButton', ... 'String', 'Stop loop'); ButtonHandle.Callback = @callback_routine function callback_routine(src,event) % тело обработчика end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба Что то не выходит... Сейчас сделал так: ButtonHandle = uicontrol('Style', 'PushButton', ... 'String', 'Stop loop', ... 'Callback', @Edit_ButtonHandleCallBack); ......... if ~ishandle(ButtonHandle) if stop == 1 disp('Loop stopped by user'); break; end end ......... function Edit_ButtonHandleCallBack(~,~) stop = 1 end Цикл не останавливается хотя stop по нажатию становится = 1. Всё получилось, большое спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба Вы так и не сказали, какой у вас Матлаб. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 6 мая, 2020 Опубликовано 6 мая, 2020 · Жалоба 17 минут назад, syoma сказал: Вы так и не сказали, какой у вас Матлаб. R2016b. Извиняюсь, но уже всё работает. Упростил всё до минимума. % это в цикле if stop == 1 disp('Loop stopped by user'); break; end .................... function Edit_ButtonHandleCallBack(~,~) stop = 1; end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 27 мая, 2020 Опубликовано 27 мая, 2020 · Жалоба Коллеги, у меня был установлен САПР от XILINX, после его удаления при запуске матлаба выдаются такие предупреждения. Это можно как то отремонтировать? На экспоненте спрашивал, ответа не получил. вопрос на экспоненте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 27 мая, 2020 Опубликовано 27 мая, 2020 · Жалоба Попробуйте edit pathdef.m Есть там эти пути? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 28 мая, 2020 Опубликовано 28 мая, 2020 · Жалоба 9 часов назад, syoma сказал: Попробуйте edit pathdef.m Есть там эти пути? Нету. По ссылке те действия которые я делал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 28 мая, 2020 Опубликовано 28 мая, 2020 · Жалоба 16 hours ago, _sda said: Коллеги, у меня был установлен САПР от XILINX, после его удаления при запуске матлаба выдаются такие предупреждения. Это можно как то отремонтировать? похоже, что матлаб может смотреть в какой-то иной pathdef.m файл, где эти пути присутствуют и файл этот может находиться в каталоге с проектом или еще где-то. Вот здесь есть вопрос-ответ от Matlab. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 28 мая, 2020 Опубликовано 28 мая, 2020 · Жалоба 1 час назад, alexunder сказал: похоже, что матлаб может смотреть в какой-то иной pathdef.m файл, где эти пути присутствуют и файл этот может находиться в каталоге с проектом или еще где-то. Вот здесь есть вопрос-ответ от Matlab. Большое спасибо,коллега! Всё получилось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться