set(handles.text3、 'string'、mystring)を読み込んだときの文字列全体を表示しない
-
21-12-2019 - |
質問
ArduinoとBluetoothモジュールと組み合わせてガイドで作られた顧客GUIを使用しています。ロングストーリーショートは、BluetoothをSDカードに読み書きできることです。これはすべてうまくいく!
しかし! SDカードから読み返すと、MATLABは正しいデータを読み取ります。コマンドウィンドウに印刷するときは、SDカードにあった正しいデータが表示されます。
問題は、このデータを試してみると、「面白いものをガイド」の静的なテキストの文字列に設定すると、静的テキストにはテキストが読み込まれることができますが、それがファイルにもっとテキストを追加した場合は、ロードされて再度読み出して、古いデータのみが表示されます。私はあなたが正しいデータを示すコマンドに印刷されたときに言ったように、文字列が更新されていることを知っています。
私はこのプロジェクトで静的なテキストを設定することに奇妙な問題を抱えていました、誰でも簡単にするためのアイデアがいますか?私が持っていたその他の問題は、コールバック関数の始めに文字列を設定していますが、コールバックが全体の関数を実行した後、またはエラーまたはwhatotyをスローした後に実際には更新されていないテキストは、テキストが
解決 2
問題は引き出しなしではなかったので、MATLABは全機能が終了するまで描かなかった。
他のヒント
文字列GUI要素の文字列、例えば文字列GUI要素は5行のみを保持することしかできず、6、次に7などを表示しようとしていますか?
MATLABは静的テキストにスクロールバーを自動的に生成しません。代替案の議論のため。リアルタイムログディスプレイ上で私がしていること(これがループにあると仮定すると仮定して)これは(これがループにあると仮定)これは、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
.
Glitched通信がプログラム全体をクラッシュするのを防ぐために、DataLogging Typeアプリケーションを使用してtry/catch/end
を使用することをお勧めします。