Statischer Text zeigt beim Laden mit set(handles.text3, 'String', myString) nicht die gesamte Zeichenfolge an.

StackOverflow https://stackoverflow.com//questions/21010172

  •  21-12-2019
  •  | 
  •  

Frage

Ich verwende eine mit GUIDE erstellte Kunden-GUI in Verbindung mit einem Arduino und einem Bluetooth-Modul.Um es kurz zu machen: Ich möchte über Bluetooth auf einer SD-Karte lesen/schreiben können.Das alles funktioniert gut!

Aber!Beim Zurücklesen von der SD-Karte liest Matlab die richtigen Daten.Ich kann dies überprüfen, da beim Drucken im Befehlsfenster die korrekten Daten angezeigt werden, die sich auf der SD-Karte befanden.

Das Problem ist, dass einige lustige Dinge passieren, wenn ich versuche, diese Daten auf die Zeichenfolge eines statischen Textes im Leitfaden zu setzen.Der statische Text kann mit Text geladen werden, aber wenn ich dann der Datei, aus der er geladen wird, mehr Text hinzufüge und versuche, ihn erneut auszulesen, werden immer noch nur die alten Daten angezeigt.Ich weiß, dass die Zeichenfolge aktualisiert wird, denn wie gesagt, wenn ich den Befehl ausdrucke, werden die richtigen Daten angezeigt.

Ich hatte seltsame Probleme mit dem Festlegen von statischem Text bei diesem Projekt. Hat jemand eine Idee, um es einfacher zu machen?Andere Probleme, die ich hatte, bestanden darin, dass die Zeichenfolge am Anfang einer Rückruffunktion gesetzt wurde, der Text jedoch erst aktualisiert wurde, nachdem der Rückruf die gesamte Funktion ausgeführt oder einen Fehler oder so weiter ausgelöst hatte.

War es hilfreich?

Lösung 2

Problem war nicht dauerhaft, so dass Matlab nicht zeichnet, bis die gesamte Funktion abgeschlossen war.

Andere Tipps

Ist die Zeichenfolge für das Zeichenfolgen-GUI-Element zu lang, z. B. kann das Zeichenfolgen-GUI-Element nur 5 Zeilen enthalten und Sie versuchen, 6, dann 7 usw. anzuzeigen??

Matlab erzeugt nicht automatisch Bildlaufleisten für statischen Text.Sehen http://www.mathworks.com/matlabcentral/newsreader/view_thread/148773 zur Diskussion von Alternativen.Was ich auf Echtzeit-Protokollanzeigen mache (mit freundlicher Genehmigung eines Kollegen, der mir das zeigt), ist (vorausgesetzt, es handelt sich um eine Schleife): Folgendes mit TxtMssg sein mein Text „Box“ und rec_line Dabei handelt es sich um die Zeile, die ich von der seriellen Schnittstelle gelesen habe.

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

Ich empfehle die Verwendung try/catch/end mit Anwendungen vom Typ Datenprotokollierung, um zu verhindern, dass eine fehlerhafte Kommunikation das gesamte Programm zum Absturz bringt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top