Статический текст не показывает всю строку при загрузке с набором (ручки .Text3, «String», MyString)
-
21-12-2019 - |
Вопрос
Я использую Customer GUI, сделанный с руководством в сочетании с Arduino и модулем Bluetooth. Короче говоря, я хочу, чтобы я хотел прочитать / писать через Bluetooth на SD-карту. Это все работает нормально!
Но! При чтении с SD-карты MATLAB считывает правильные данные. Я могу проверить это, потому что при печати в окно команд отображается правильные данные, которые были на SD-карте.
Проблема в том, что когда я пытаюсь установить эти данные в строку статического текста в руководстве, происходит некоторые забавные вещи. Статический текст может быть загружен текстом, но если я добавлю больше текста в файл, он загружается, и попытайтесь прочитать его снова, он еще снова отображает только старые данные. Я знаю, что строка обновляется, потому что, как я уже сказал, когда я печатаю в команду, она показывает правильные данные.
У меня были странные проблемы с установкой статического текста с этим проектом, у кого-нибудь есть какие-либо идеи, чтобы облегчить? Другие проблемы, которые у меня были установлены строки в начале функции обратного вызова, но текст, который фактически не обновляется до тех пор, пока после обратного вызова не выполнит всю функцию или выбросить ошибку или athnot.
Решение 2
Проблема не была расти, поэтому MatLab не рисовал, пока вся функция не была закончена.
Другие советы
Слина слишком длинная для элемента String GUI, E.g., элемент строки GUI может удерживать 5 строк, и вы пытаетесь отображать 6, то 7 и т. Д.?
MATLAB не позволяет автоматически производить полосы прокрутки на статический текст.Смотрите http://www.mathworks.com/matlabcentral/newsreader/view_thread/148773 Для обсуждения альтернатив.Что я делаю (вежливость коллегира, показываю мне это) на дисплеях журнала в реальном времени (при условии, что это в цикле) это, с TxtMssg
- мой текст «коробка» и rec_line
- это линия, которую я читал из последовательного порта,
try
% Determine NumLines empirically for your font, font size, and static text size
NumLines = 21;
% Get the contents of the static text box, make a cell if necessary
Mssg = get(handles.TxtMssg, 'string');
if iscell(Mssg) == 0
Mssg={Mssg};
end
% Cat on the newly received line
Mssg = [Mssg; rec_line];
% trim to length of textbox, last NumLines rows only
if length(Mssg) > NumLines
Mssg = Mssg((end-NumLines+1):end);
end
% Write Mssg, with a strtrim() in case of any trailing newlines
set(handles.TxtMssg, 'string', strtrim(Mssg));
catch err
% Error handling
end
.
Я рекомендую использовать try/catch/end
с приложениями типа данных, чтобы предотвратить глюбовое сообщение от разрушения всей программы.