Texte statique n'affichant pas la chaîne entière lorsqu'il est chargé avec set(handles.text3, 'String', myString)

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

  •  21-12-2019
  •  | 
  •  

Question

J'utilise une interface graphique client réalisée avec GUIDE en conjonction avec un arduino et un module Bluetooth.Pour faire court, je veux pouvoir lire/écrire via Bluetooth sur une carte SD.Tout cela fonctionne bien !

Mais!Lors de la lecture de la carte SD, Matlab lit les données correctes.Je peux le vérifier car lors de l'impression dans la fenêtre de commande, elle affiche les données correctes qui se trouvaient sur la carte SD.

Le problème est que lorsque j'essaie de définir ces données sur la chaîne d'un texte statique dans le guide, des choses amusantes se produisent.Le texte statique peut être chargé avec du texte, mais si j'ajoute ensuite plus de texte au fichier à partir duquel il est chargé et que j'essaie de le relire, il n'affiche toujours que les anciennes données.Je sais que la chaîne est en cours de mise à jour car, comme je l'ai dit, lorsque j'imprime sur la commande, elle affiche les bonnes données.

J'ai eu d'étranges problèmes avec la définition de texte statique avec ce projet. Quelqu'un a-t-il des idées pour le rendre plus facile ?D'autres problèmes que j'ai rencontrés sont la définition de la chaîne au début d'une fonction de rappel, mais le texte n'est réellement mis à jour qu'après que le rappel ait exécuté la fonction entière ou généré une erreur ou autre.

Était-ce utile?

La solution 2

Problème n'était pas le dessinat, alors le matlab n'a pas dessiné tant que la fonction entière n'était pas terminée.

Autres conseils

La chaîne est-elle trop longue pour l'élément GUI de chaîne, par exemple, l'élément GUI de chaîne ne peut contenir que 5 lignes et vous essayez d'en afficher 6, puis 7, etc.?

Matlab ne produit pas automatiquement des barres de défilement sur du texte statique.Voir http://www.mathworks.com/matlabcentral/newsreader/view_thread/148773 pour une discussion sur les alternatives.Ce que je fais (grâce à un collègue qui me montre ceci) sur les affichages de journaux en temps réel est (en supposant que cela soit en boucle) ceci, avec TxtMssg étant ma "boîte" de texte et rec_line étant la ligne que j'ai lue sur le port série.

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

Je recommande d'utiliser try/catch/end avec des applications de type datalogging pour éviter qu'un problème de communication ne fasse planter l'ensemble du programme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top