Testo statico che non mostra l'intera stringa quando caricata con set (handles.text3, 'string', mystring)

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

  •  21-12-2019
  •  | 
  •  

Domanda

Sto usando una GUI del cliente realizzata con Guida in combinazione con un Arduino e un modulo Bluetooth. La lunga storia è che voglio essere in grado di leggere / scrivere su Bluetooth su una scheda SD. Tutto funziona bene!

Ma! Quando si legge dalla scheda SD, MatLab legge i dati corretti. Posso verificare questo perché quando si stampa nella finestra di comando mostra i dati corretti che si trovava sulla scheda SD.

Il problema è che quando provo a impostare questi dati nella stringa di un testo statico in Guida che alcune cose divertenti accadono. Il testo statico può essere caricato con il testo, ma se aggiungo più testo al file che sta caricando e prova a leggerlo di nuovo, visualizza ancora i vecchi dati. So che la stringa viene aggiornata perché come ho detto quando lo stampato al comando mostra i dati giusti.

Ho avuto strani problemi con il testo statico con questo progetto, chiunque abbia qualche idea per renderlo più facile? Altri problemi che ho avuto stabilendo la stringa all'inizio di una funzione di callback ma il testo non viene effettivamente aggiornato fino a quando la callback ha eseguito l'intera funzione o ha lanciato un errore o whatnot.

È stato utile?

Soluzione 2

Problema non è stato Drawnow in modo che Matlab non abbia disegnato fino al termine dell'intera funzione.

Altri suggerimenti

è la stringa troppo lunga per l'elemento GUI stringa, ad esempio l'elemento GUI stringa può contenere solo 5 righe e stai cercando di visualizzare 6, quindi 7, ecc.?

MATLAB non produce automaticamente barre di scorrimento sul testo statico.Vedi http://www.mathworks.com/matlabcentral/newsreader/view_thread/148773 per una discussione sulle alternative.Quello che faccio (per gentile concessione di un collaboratore che mi mostra questo) su Display registri in tempo reale è (supponendo che questo sia in un ciclo), con TxtMssg essendo il mio testo "box" e rec_line essendo la linea che leggo dalla porta seriale.

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
.

Raccomando di utilizzare try/catch/end con applicazioni di tipo Datalogging per impedire a una comunicazione glitchest da bloccare l'intero programma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top