El texto estático no muestra la cadena completa cuando se carga con set(handles.text3, 'String', myString)

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

  •  21-12-2019
  •  | 
  •  

Pregunta

Estoy usando una GUI de cliente hecha con GUIDE junto con un arduino y un módulo bluetooth.En pocas palabras, quiero poder leer/escribir a través de bluetooth en una tarjeta SD.¡Todo esto funciona bien!

¡Pero!Al leer desde la tarjeta SD, matlab lee los datos correctos.Puedo verificar esto porque al imprimir en la ventana de comandos muestra los datos correctos que estaban en la tarjeta SD.

El problema es que cuando intento configurar estos datos en la cadena de un texto estático en la guía, suceden algunas cosas divertidas.El texto estático se puede cargar con texto, pero si luego agrego más texto al archivo desde el que se está cargando e intento leerlo nuevamente, todavía solo muestra los datos antiguos.Sé que la cadena se está actualizando porque, como dije, cuando imprimo el comando muestra los datos correctos.

He tenido problemas extraños al configurar texto estático en este proyecto. ¿Alguien tiene alguna idea para hacerlo más fácil?Otros problemas que he tenido son configurar la cadena al comienzo de una función de devolución de llamada, pero el texto no se actualiza hasta que la devolución de llamada ha ejecutado toda la función o ha arrojado un error o algo así.

¿Fue útil?

Solución 2

El problema no fue DRABNOW, por lo que Matlab no se extrajo hasta que se haya terminado toda la función.

Otros consejos

¿La cadena es demasiado larga para el elemento GUI de cadena? Por ejemplo, el elemento GUI de cadena solo puede contener 5 líneas y está intentando mostrar 6, luego 7, etc.?

Matlab no produce automáticamente barras de desplazamiento en texto estático.Ver http://www.mathworks.com/matlabcentral/newsreader/view_thread/148773 para una discusión de alternativas.Lo que hago (cortesía de un compañero de trabajo que me muestra esto) en las pantallas de registro en tiempo real es (suponiendo que esto esté en un bucle) esto, con TxtMssg siendo mi "cuadro" de texto y rec_line siendo la línea que leo desde el puerto serie.

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

recomiendo usar try/catch/end con aplicaciones de tipo registro de datos para evitar que una comunicación fallida bloquee todo el programa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top