Problème d'affichage
mariostar27
Messages postés
442
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
bonjour,
je souhaite réaliser un programme qui dialogue avec un afficheur. j'ai donc un afficheur 16 caractères et 2 lignes.
j'ai déjà réussi à envoyé des trames à celui ci. Mon but maintenant est de pouvoir afficher un String de plus de 32 caractères ( 16 * 2 ). pour cela, j'ai donc procédé comme ceci :
- découpage de ma chaîne de caractères 32 octets par 32 octets
- afficher les 32 premier caractères de mon string
- 3 secondes plus tard, afficher les 32 suivant
- etc...
seulement, dans une IHM, quand j'envoi un String > 32 caractères, ceci fonctionne, mais mon IHM ne fonctionne plus.
je pense que ceci vient de ma boucle qui ne se termine jamais. mais je ne sais pas comment faire autrement.
aidz moi svp.
code:
je souhaite réaliser un programme qui dialogue avec un afficheur. j'ai donc un afficheur 16 caractères et 2 lignes.
j'ai déjà réussi à envoyé des trames à celui ci. Mon but maintenant est de pouvoir afficher un String de plus de 32 caractères ( 16 * 2 ). pour cela, j'ai donc procédé comme ceci :
- découpage de ma chaîne de caractères 32 octets par 32 octets
- afficher les 32 premier caractères de mon string
- 3 secondes plus tard, afficher les 32 suivant
- etc...
seulement, dans une IHM, quand j'envoi un String > 32 caractères, ceci fonctionne, mais mon IHM ne fonctionne plus.
je pense que ceci vient de ma boucle qui ne se termine jamais. mais je ne sais pas comment faire autrement.
aidz moi svp.
code:
public void afficherMessage(String emplacementDuMessage, String message) {
System.out.println("préparation de la mémorisation et de l'affichage de message ...");
if (message.length() <= 32) {
boolean memorisation = this.memoriserMessage(emplacementDuMessage, message);
if (memorisation) {
this.appelerMessage(emplacementDuMessage);
}
} else {
//**************************************** A MODIFIER **********************************************************//
int debut = 0;
int fin = 32;
StringBuffer messBuffer = new StringBuffer(message);
while (fin != message.length()) {
if (fin >= message.length()) {
fin = message.length();
}
String messageAfficher = messBuffer.substring(debut, fin);
boolean memorisation = this.memoriserMessage(emplacementDuMessage, messageAfficher);
if (memorisation) {
try {
this.appelerMessage(emplacementDuMessage);
Thread.sleep(3000);
} catch (InterruptedException ex) {
Logger.getLogger(Afficheur.class.getName()).log(Level.SEVERE, null, ex);
}
}
debut += 32;
if (fin != message.length()) {
fin += 32;
} else {
debut = 0;
fin = 32;
}
}
//**************************************** A MODIFIER **********************************************************//
}
System.out.println("message mémoriser et appeler");
}
A voir également:
- Problème d'affichage
- Affichage double ecran - Guide
- Problème affichage facebook ✓ - Forum Facebook
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Problème affichage page internet google chrome ✓ - Forum Google Chrome
5 réponses
Bonjour,
Beh oui, tu ne demande pas le bout de la variable ??
suis pas spécialiste en C mais me semble que remplacer
par
Devrait fonctionner.
A+
Beh oui, tu ne demande pas le bout de la variable ??
suis pas spécialiste en C mais me semble que remplacer
while (fin != message.length())
par
while (fin !>= message.length()+32)
Devrait fonctionner.
A+
ce n'ai pas du C mais du Java désolé de ne pas l'avoir précisé.
par contre, !>= je doute que ceci existe. ou alors tu veux plutôt dire <=.
par contre, !>= je doute que ceci existe. ou alors tu veux plutôt dire <=.
Hum
Peut-être essayer avant de dire ??
par contre, !>= je doute que ceci existe.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Peut-être essayer avant de dire ??
par contre, !>= je doute que ceci existe.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Salut,
Tu peux essayer en ajoutant uniquement un break; <<<<<<<<<<<<<<<<<<
Cordialement,
Dan
Tu peux essayer en ajoutant uniquement un break; <<<<<<<<<<<<<<<<<<
debut += 32;
if (fin != message.length()) {
fin += 32;
} else {
debut = 0;
fin = 32;
break; // <<<<<<<<<<<<<<<<
}
}
Cordialement,
Dan
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222 j'ai essayé justement et cela ne fonctionne pas ...
danimo j'ai essayé ton système mais rien a faire.
je pense passer par un thread puisque je ne sortirai jamais de cette boucle de toute façon.
un thread me permettrai de pouvoir continuer sans cesser ma boucle
danimo j'ai essayé ton système mais rien a faire.
je pense passer par un thread puisque je ne sortirai jamais de cette boucle de toute façon.
un thread me permettrai de pouvoir continuer sans cesser ma boucle
Salut,
De toutes manières tu dois solutionner le probème de ta boucle.
Et je te propose ceci (qui bien entendu ne traite ni l'affichage, ni la temporisation), mais qui te permet d'obtenir les tronçons à afficher.
Cordialement,
De toutes manières tu dois solutionner le probème de ta boucle.
Et je te propose ceci (qui bien entendu ne traite ni l'affichage, ni la temporisation), mais qui te permet d'obtenir les tronçons à afficher.
int longDisplay = 32;
// Cas n° 1 (= 32)
String message = "123456789*abcdefghi*ABCDEFGHI*12";
// cas n° 2 (2x32)
//String message = "123456789*abcdefghi*ABCDEFGHI*123456789*abcdefghi*ABCDEFGHI*1234";
// cas n° 3 (2x32 + reste)
//String message = "123456789*abcdefghi*ABCDEFGHI*123456789*abcdefghi*ABCDEFGHI*123456";
// cas n° 4 (1x32 + reste)
//String message = "123456789*abcdefghi*ABCDEFGHI*123456789*abcdefghi*ABCDEFGHI*12";
// cas n° 5 (<32)
//String message = "123456789*ab";
int debut = 0;
int fin = 0;
int resteLong = message.length();
StringBuffer messBuffer = new StringBuffer(message);
System.out.println("(Longueur du message: " + message.length() + "):\n");
while (fin != message.length())
{
if(resteLong >= longDisplay)
{
fin += longDisplay;
System.out.println(">>>> " + messBuffer.substring(debut, fin));
debut += longDisplay;
resteLong = message.length() - fin;
if(resteLong == 0)
return;
}
if(resteLong < longDisplay)
{
break;
}
}
System.out.println("\n(Et le reste du message):");
System.out.println(">>>> " + messBuffer.substring(debut));
Cordialement,